From: Kent Overstreet Date: Sun, 21 Mar 2021 04:03:34 +0000 (-0400) Subject: bcachefs: Get disk reservation when overwriting data in old snapshot X-Git-Tag: io_uring-6.7-2023-11-10~119^2~1724 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=cb16bfaa86f09fae33a712510aa51a03ca370d63;p=linux-block.git bcachefs: Get disk reservation when overwriting data in old snapshot Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c index b841b3da2510..5ee9a6c2f4fd 100644 --- a/fs/bcachefs/io.c +++ b/fs/bcachefs/io.c @@ -224,9 +224,10 @@ int bch2_sum_sector_overwrites(struct btree_trans *trans, (bkey_extent_is_allocation(&new->k) - bkey_extent_is_allocation(old.k)); - *disk_sectors_delta += sectors * - (int) (bch2_bkey_nr_ptrs_allocated(bkey_i_to_s_c(new)) - - bch2_bkey_nr_ptrs_fully_allocated(old)); + *disk_sectors_delta += sectors * bch2_bkey_nr_ptrs_allocated(bkey_i_to_s_c(new)); + *disk_sectors_delta -= new->k.p.snapshot == old.k->p.snapshot + ? sectors * bch2_bkey_nr_ptrs_fully_allocated(old) + : 0; if (!*should_check_enospc && (new_replicas > bch2_bkey_replicas(c, old) ||