summaryrefslogtreecommitdiff
path: root/libbcachefs/move.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-01-10 21:41:51 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2022-01-10 21:41:51 -0500
commit74a7c3ff5732598431801bb0b4bd844f1d69aa90 (patch)
tree9d56673bfd488f3d6673d22a78dc4552dd9dd4d2 /libbcachefs/move.c
parentb3984515eba163d734badecfef46e2be67a3b7eb (diff)
Update bcachefs sources to bf340e68c7 bcachefs: Ignore cached data when calculating fragmentation
Diffstat (limited to 'libbcachefs/move.c')
-rw-r--r--libbcachefs/move.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/libbcachefs/move.c b/libbcachefs/move.c
index f73be9cb..3e3dcec3 100644
--- a/libbcachefs/move.c
+++ b/libbcachefs/move.c
@@ -700,17 +700,20 @@ static int __bch2_move_data(struct bch_fs *c,
bch2_trans_begin(&trans);
k = bch2_btree_iter_peek(&iter);
-
- stats->pos = iter.pos;
-
if (!k.k)
break;
+
ret = bkey_err(k);
+ if (ret == -EINTR)
+ continue;
if (ret)
break;
+
if (bkey_cmp(bkey_start_pos(k.k), end) >= 0)
break;
+ stats->pos = iter.pos;
+
if (!bkey_extent_is_direct_data(k.k))
goto next_nondata;
@@ -753,10 +756,8 @@ static int __bch2_move_data(struct bch_fs *c,
ret2 = bch2_move_extent(&trans, ctxt, wp, io_opts, btree_id, k,
data_cmd, data_opts);
if (ret2) {
- if (ret2 == -EINTR) {
- bch2_trans_begin(&trans);
+ if (ret2 == -EINTR)
continue;
- }
if (ret2 == -ENOMEM) {
/* memory allocation failure, wait for some IO to finish */