bcachefs: range_has_data() -> for_each_btree_key_in_subvolume_upto
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
330405057f
commit
c95285d17e
@ -221,30 +221,11 @@ static inline int range_has_data(struct bch_fs *c, u32 subvol,
|
|||||||
struct bpos start,
|
struct bpos start,
|
||||||
struct bpos end)
|
struct bpos end)
|
||||||
{
|
{
|
||||||
struct btree_trans *trans = bch2_trans_get(c);
|
return bch2_trans_run(c,
|
||||||
struct btree_iter iter;
|
for_each_btree_key_in_subvolume_upto(trans, iter, BTREE_ID_extents, start, end,
|
||||||
struct bkey_s_c k;
|
subvol, 0, k, ({
|
||||||
int ret = 0;
|
bkey_extent_is_data(k.k) && !bkey_extent_is_unwritten(k);
|
||||||
retry:
|
})));
|
||||||
bch2_trans_begin(trans);
|
|
||||||
|
|
||||||
ret = bch2_subvolume_get_snapshot(trans, subvol, &start.snapshot);
|
|
||||||
if (ret)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
for_each_btree_key_upto_norestart(trans, iter, BTREE_ID_extents, start, end, 0, k, ret)
|
|
||||||
if (bkey_extent_is_data(k.k) && !bkey_extent_is_unwritten(k)) {
|
|
||||||
ret = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
start = iter.pos;
|
|
||||||
bch2_trans_iter_exit(trans, &iter);
|
|
||||||
err:
|
|
||||||
if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
|
|
||||||
goto retry;
|
|
||||||
|
|
||||||
bch2_trans_put(trans);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __bch2_truncate_folio(struct bch_inode_info *inode,
|
static int __bch2_truncate_folio(struct bch_inode_info *inode,
|
||||||
|
Loading…
Reference in New Issue
Block a user