Reflink might be buggy, so we're adding an option so users can help
bisect what's going on.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
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 */
LE64_BITMASK(BCH_SB_STR_HASH_TYPE, struct bch_sb, flags[1], 0, 4);
u64 aligned_len;
loff_t ret = 0;
+ if (!c->opts.reflink)
+ return -EOPNOTSUPP;
+
if (remap_flags & ~(REMAP_FILE_DEDUP|REMAP_FILE_ADVISORY))
return -EINVAL;
OPT_BOOL(), \
BCH_SB_PRJQUOTA, false, \
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, \
OPT_MOUNT, \
OPT_BOOL(), \
u64 src_done, dst_done;
int ret = 0, ret2 = 0;
+ if (!c->opts.reflink)
+ return -EOPNOTSUPP;
+
if (!percpu_ref_tryget(&c->writes))
return -EROFS;