diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-10-14 11:22:05 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-10-14 11:22:05 -0400 |
commit | 2b8c1fc5c9f91486222097451a4722550f5c5db1 (patch) | |
tree | 5d2b86a200e83df449a77e72d30810b183571b4b /libbcachefs/migrate.c | |
parent | e489658c490524a921bc30474fa54d55aa8867c4 (diff) |
Update bcachefs sources to 710cd382bf bcachefs: Fix for leaking of reflinked extents
Diffstat (limited to 'libbcachefs/migrate.c')
-rw-r--r-- | libbcachefs/migrate.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libbcachefs/migrate.c b/libbcachefs/migrate.c index 9f9eb799..94d5d99f 100644 --- a/libbcachefs/migrate.c +++ b/libbcachefs/migrate.c @@ -73,6 +73,15 @@ static int __bch2_dev_usrdata_drop(struct bch_fs *c, unsigned dev_idx, int flags */ bch2_extent_normalize(c, bkey_i_to_s(sk.k)); + /* + * Since we're not inserting through an extent iterator + * (BTREE_ITER_ALL_SNAPSHOTS iterators aren't extent iterators), + * we aren't using the extent overwrite path to delete, we're + * just using the normal key deletion path: + */ + if (bkey_deleted(&sk.k->k)) + sk.k->k.size = 0; + ret = bch2_btree_iter_traverse(&iter) ?: bch2_trans_update(&trans, &iter, sk.k, BTREE_UPDATE_INTERNAL_SNAPSHOT_NODE) ?: |