diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-10-19 19:03:23 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:08:30 -0400 |
commit | 2a9101a9898920a04e77f70f7bbee84d2c76c527 (patch) | |
tree | afa365a07a12fdd45d2fb49ac81933b4706e5b3c /fs/bcachefs/reflink.c | |
parent | 8f1965391cc421ad4e50b4dfe5e06aae661f8870 (diff) |
bcachefs: Refactor bch2_trans_commit() path
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/reflink.c')
-rw-r--r-- | fs/bcachefs/reflink.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/bcachefs/reflink.c b/fs/bcachefs/reflink.c index 4a4b17f93a2e..6d45ae24479d 100644 --- a/fs/bcachefs/reflink.c +++ b/fs/bcachefs/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; } |