From f793bc15491c04481b3f12a10ff22a53cd126842 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 11 Jul 2020 13:23:17 -0400 Subject: [PATCH] bcachefs: Drop extra pointers when marking data as in a stripe We ideally want the buckets used for the extra initial replicas to be reused right away. Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- fs/bcachefs/ec.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fs/bcachefs/ec.c b/fs/bcachefs/ec.c index 43f4b2f0d1bfc..54a95edc99015 100644 --- a/fs/bcachefs/ec.c +++ b/fs/bcachefs/ec.c @@ -784,12 +784,9 @@ static int ec_stripe_update_ptrs(struct bch_fs *c, bkey_on_stack_reassemble(&sk, c, k); e = bkey_i_to_s_extent(sk.k); - extent_for_each_ptr(e, ptr) { - if (ptr->dev == dev) - ec_ptr = ptr; - else - ptr->cached = true; - } + bch2_bkey_drop_ptrs(e.s, ptr, ptr->dev != dev); + ec_ptr = (void *) bch2_bkey_has_device(e.s_c, dev); + BUG_ON(!ec_ptr); extent_stripe_ptr_add(e, s, ec_ptr, idx); -- 2.30.2