Btrfs: put ENOSPC debugging under a mount option
ENOSPC in btrfs is getting to the point where the extra debugging isn't required. I've put it under mount -o enospc_debug just in case someone is having difficult problems. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
c26a920373
commit
91435650c2
@ -1254,6 +1254,7 @@ struct btrfs_root {
|
|||||||
#define BTRFS_MOUNT_SPACE_CACHE (1 << 12)
|
#define BTRFS_MOUNT_SPACE_CACHE (1 << 12)
|
||||||
#define BTRFS_MOUNT_CLEAR_CACHE (1 << 13)
|
#define BTRFS_MOUNT_CLEAR_CACHE (1 << 13)
|
||||||
#define BTRFS_MOUNT_USER_SUBVOL_RM_ALLOWED (1 << 14)
|
#define BTRFS_MOUNT_USER_SUBVOL_RM_ALLOWED (1 << 14)
|
||||||
|
#define BTRFS_MOUNT_ENOSPC_DEBUG (1 << 15)
|
||||||
|
|
||||||
#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
|
#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
|
||||||
#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
|
#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
|
||||||
|
@ -5377,7 +5377,7 @@ int btrfs_reserve_extent(struct btrfs_trans_handle *trans,
|
|||||||
num_bytes, data, 1);
|
num_bytes, data, 1);
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
if (ret == -ENOSPC) {
|
if (ret == -ENOSPC && btrfs_test_opt(root, ENOSPC_DEBUG)) {
|
||||||
struct btrfs_space_info *sinfo;
|
struct btrfs_space_info *sinfo;
|
||||||
|
|
||||||
sinfo = __find_space_info(root->fs_info, data);
|
sinfo = __find_space_info(root->fs_info, data);
|
||||||
|
@ -155,7 +155,8 @@ enum {
|
|||||||
Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, Opt_compress,
|
Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, Opt_compress,
|
||||||
Opt_compress_type, Opt_compress_force, Opt_compress_force_type,
|
Opt_compress_type, Opt_compress_force, Opt_compress_force_type,
|
||||||
Opt_notreelog, Opt_ratio, Opt_flushoncommit, Opt_discard,
|
Opt_notreelog, Opt_ratio, Opt_flushoncommit, Opt_discard,
|
||||||
Opt_space_cache, Opt_clear_cache, Opt_user_subvol_rm_allowed, Opt_err,
|
Opt_space_cache, Opt_clear_cache, Opt_user_subvol_rm_allowed,
|
||||||
|
Opt_enospc_debug, Opt_err,
|
||||||
};
|
};
|
||||||
|
|
||||||
static match_table_t tokens = {
|
static match_table_t tokens = {
|
||||||
@ -184,6 +185,7 @@ static match_table_t tokens = {
|
|||||||
{Opt_space_cache, "space_cache"},
|
{Opt_space_cache, "space_cache"},
|
||||||
{Opt_clear_cache, "clear_cache"},
|
{Opt_clear_cache, "clear_cache"},
|
||||||
{Opt_user_subvol_rm_allowed, "user_subvol_rm_allowed"},
|
{Opt_user_subvol_rm_allowed, "user_subvol_rm_allowed"},
|
||||||
|
{Opt_enospc_debug, "enospc_debug"},
|
||||||
{Opt_err, NULL},
|
{Opt_err, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -358,6 +360,9 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
|
|||||||
case Opt_user_subvol_rm_allowed:
|
case Opt_user_subvol_rm_allowed:
|
||||||
btrfs_set_opt(info->mount_opt, USER_SUBVOL_RM_ALLOWED);
|
btrfs_set_opt(info->mount_opt, USER_SUBVOL_RM_ALLOWED);
|
||||||
break;
|
break;
|
||||||
|
case Opt_enospc_debug:
|
||||||
|
btrfs_set_opt(info->mount_opt, ENOSPC_DEBUG);
|
||||||
|
break;
|
||||||
case Opt_err:
|
case Opt_err:
|
||||||
printk(KERN_INFO "btrfs: unrecognized mount option "
|
printk(KERN_INFO "btrfs: unrecognized mount option "
|
||||||
"'%s'\n", p);
|
"'%s'\n", p);
|
||||||
|
Loading…
Reference in New Issue
Block a user