diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-07-28 17:26:38 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-07-28 17:26:50 -0400 |
commit | f06b01e9eacca7cd23679ee92f3d082c9352263f (patch) | |
tree | 1c3ab7f5881ca532228e04761ac030c2a109675f /libbcachefs/reflink.c | |
parent | 308d7adcc5ded346e86a2e9c6419bc3b6b5f3e55 (diff) |
Update bcachefs sources to b964c6cba8 bcachefs: Change lockrestart_do() to always call bch2_trans_begin()
Diffstat (limited to 'libbcachefs/reflink.c')
-rw-r--r-- | libbcachefs/reflink.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libbcachefs/reflink.c b/libbcachefs/reflink.c index ebf39124..3d9c5c5b 100644 --- a/libbcachefs/reflink.c +++ b/libbcachefs/reflink.c @@ -192,8 +192,9 @@ static struct bkey_s_c get_next_src(struct btree_iter *iter, struct bpos end) return k; } - bch2_btree_iter_set_pos(iter, end); - return bkey_s_c_null; + if (bkey_cmp(iter->pos, end) >= 0) + bch2_btree_iter_set_pos(iter, end); + return ret ? bkey_s_c_err(ret) : bkey_s_c_null; } s64 bch2_remap_range(struct bch_fs *c, @@ -304,12 +305,12 @@ s64 bch2_remap_range(struct bch_fs *c, dst_done = dst_iter->pos.offset - dst_start.offset; new_i_size = min(dst_iter->pos.offset << 9, new_i_size); - bch2_trans_begin(&trans); - do { struct bch_inode_unpacked inode_u; struct btree_iter *inode_iter; + bch2_trans_begin(&trans); + inode_iter = bch2_inode_peek(&trans, &inode_u, dst_start.inode, BTREE_ITER_INTENT); ret2 = PTR_ERR_OR_ZERO(inode_iter); |