summaryrefslogtreecommitdiff
path: root/libbcachefs/reflink.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/reflink.c')
-rw-r--r--libbcachefs/reflink.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libbcachefs/reflink.c b/libbcachefs/reflink.c
index 4a4b17f9..6d45ae24 100644
--- a/libbcachefs/reflink.c
+++ b/libbcachefs/reflink.c
@@ -166,6 +166,9 @@ s64 bch2_remap_range(struct bch_fs *c,
u64 src_done, dst_done;
int ret = 0, ret2 = 0;
+ if (!percpu_ref_tryget(&c->writes))
+ return -EROFS;
+
if (!(c->sb.features & (1ULL << BCH_FEATURE_REFLINK))) {
mutex_lock(&c->sb_lock);
if (!(c->sb.features & (1ULL << BCH_FEATURE_REFLINK))) {
@@ -295,5 +298,7 @@ err:
ret = bch2_trans_exit(&trans) ?: ret;
+ percpu_ref_put(&c->writes);
+
return dst_done ?: ret ?: ret2;
}