summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/reflink.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-05-24 01:56:10 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-05-25 03:22:18 -0400
commit7098ba57c443868cab250a3a5db72c89ffbd9026 (patch)
tree3840b654c0b195f75f69ba48cb6c273109ac74e6 /fs/bcachefs/reflink.c
parentbcachefs: Don't mount bs > ps without TRANSPARENT_HUGEPAGE (diff)
downloadlinux-7098ba57c443868cab250a3a5db72c89ffbd9026.tar.gz
linux-7098ba57c443868cab250a3a5db72c89ffbd9026.zip
bcachefs: fix REFLINK_P_MAY_UPDATE_OPTIONS
If we're doing a reflink copy of existing reflinked data, we may only set REFLINK_P_MAY_UPDATE_OPTIONS if it was set on the reflink pointer we're copying from. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/reflink.c')
-rw-r--r--fs/bcachefs/reflink.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/bcachefs/reflink.c b/fs/bcachefs/reflink.c
index 3a13dbcab6ba..41ca86cba2cd 100644
--- a/fs/bcachefs/reflink.c
+++ b/fs/bcachefs/reflink.c
@@ -711,7 +711,8 @@ s64 bch2_remap_range(struct bch_fs *c,
SET_REFLINK_P_IDX(&dst_p->v, offset);
if (reflink_p_may_update_opts_field &&
- may_change_src_io_path_opts)
+ may_change_src_io_path_opts &&
+ REFLINK_P_MAY_UPDATE_OPTIONS(src_p.v))
SET_REFLINK_P_MAY_UPDATE_OPTIONS(&dst_p->v, true);
} else {
BUG();