btrfs: handle null fs_info in btrfs_panic()
At least backref_tree_panic() can apparently pass in a null fs_info, so handle that in __btrfs_panic to get the message out on the console. The btrfs_panic macro also uses fs_info, but that's largely pointless; it's testing to see if BTRFS_MOUNT_PANIC_ON_FATAL_ERROR is not set. But if it *were* set, __btrfs_panic() would have, well, paniced and we wouldn't be here, testing it! So just BUG() at this point. And since we only use fs_info once now, just use it directly. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
This commit is contained in:
parent
5a01604783
commit
aa43a17c21
2 changed files with 7 additions and 4 deletions
|
@ -3653,11 +3653,14 @@ __printf(5, 6)
|
||||||
void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
|
void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
|
||||||
unsigned int line, int errno, const char *fmt, ...);
|
unsigned int line, int errno, const char *fmt, ...);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If BTRFS_MOUNT_PANIC_ON_FATAL_ERROR is in mount_opt, __btrfs_panic
|
||||||
|
* will panic(). Otherwise we BUG() here.
|
||||||
|
*/
|
||||||
#define btrfs_panic(fs_info, errno, fmt, args...) \
|
#define btrfs_panic(fs_info, errno, fmt, args...) \
|
||||||
do { \
|
do { \
|
||||||
struct btrfs_fs_info *_i = (fs_info); \
|
__btrfs_panic(fs_info, __func__, __LINE__, errno, fmt, ##args); \
|
||||||
__btrfs_panic(_i, __func__, __LINE__, errno, fmt, ##args); \
|
BUG(); \
|
||||||
BUG_ON(!(_i->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR)); \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* acl.c */
|
/* acl.c */
|
||||||
|
|
|
@ -289,7 +289,7 @@ void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
|
||||||
vaf.va = &args;
|
vaf.va = &args;
|
||||||
|
|
||||||
errstr = btrfs_decode_error(errno, nbuf);
|
errstr = btrfs_decode_error(errno, nbuf);
|
||||||
if (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR)
|
if (fs_info && (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR))
|
||||||
panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (%s)\n",
|
panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (%s)\n",
|
||||||
s_id, function, line, &vaf, errstr);
|
s_id, function, line, &vaf, errstr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue