Commit 36b8372b authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: Add an option to disable reflink support

Reflink might be buggy, so we're adding an option so users can help
bisect what's going on.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 039fc4c5
...@@ -1266,6 +1266,8 @@ LE64_BITMASK(BCH_SB_PRJQUOTA, struct bch_sb, flags[0], 59, 60); ...@@ -1266,6 +1266,8 @@ LE64_BITMASK(BCH_SB_PRJQUOTA, struct bch_sb, flags[0], 59, 60);
LE64_BITMASK(BCH_SB_HAS_ERRORS, struct bch_sb, flags[0], 60, 61); LE64_BITMASK(BCH_SB_HAS_ERRORS, struct bch_sb, flags[0], 60, 61);
LE64_BITMASK(BCH_SB_REFLINK, struct bch_sb, flags[0], 61, 62);
/* 61-64 unused */ /* 61-64 unused */
LE64_BITMASK(BCH_SB_STR_HASH_TYPE, struct bch_sb, flags[1], 0, 4); LE64_BITMASK(BCH_SB_STR_HASH_TYPE, struct bch_sb, flags[1], 0, 4);
......
...@@ -2812,6 +2812,9 @@ loff_t bch2_remap_file_range(struct file *file_src, loff_t pos_src, ...@@ -2812,6 +2812,9 @@ loff_t bch2_remap_file_range(struct file *file_src, loff_t pos_src,
u64 aligned_len; u64 aligned_len;
loff_t ret = 0; loff_t ret = 0;
if (!c->opts.reflink)
return -EOPNOTSUPP;
if (remap_flags & ~(REMAP_FILE_DEDUP|REMAP_FILE_ADVISORY)) if (remap_flags & ~(REMAP_FILE_DEDUP|REMAP_FILE_ADVISORY))
return -EINVAL; return -EINVAL;
......
...@@ -207,6 +207,11 @@ enum opt_type { ...@@ -207,6 +207,11 @@ enum opt_type {
OPT_BOOL(), \ OPT_BOOL(), \
BCH_SB_PRJQUOTA, false, \ BCH_SB_PRJQUOTA, false, \
NULL, "Enable project quotas") \ NULL, "Enable project quotas") \
x(reflink, u8, \
OPT_FORMAT|OPT_MOUNT|OPT_RUNTIME, \
OPT_BOOL(), \
BCH_SB_REFLINK, true, \
NULL, "Enable reflink support") \
x(degraded, u8, \ x(degraded, u8, \
OPT_MOUNT, \ OPT_MOUNT, \
OPT_BOOL(), \ OPT_BOOL(), \
......
...@@ -167,6 +167,9 @@ s64 bch2_remap_range(struct bch_fs *c, ...@@ -167,6 +167,9 @@ s64 bch2_remap_range(struct bch_fs *c,
u64 src_done, dst_done; u64 src_done, dst_done;
int ret = 0, ret2 = 0; int ret = 0, ret2 = 0;
if (!c->opts.reflink)
return -EOPNOTSUPP;
if (!percpu_ref_tryget(&c->writes)) if (!percpu_ref_tryget(&c->writes))
return -EROFS; return -EROFS;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment