bcachefs: Fix btree node read retries
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 14 Jun 2022 05:37:16 +0000 (01:37 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:33 +0000 (17:09 -0400)
b->written wasn't being reset to 0 in the btree node read retry path,
causing decrypting & validation of previously read bsets to not be
re-run - ouch.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_io.c

index 598c30b7ab8becf61a5f1363354b54b7c05b6583..b7441677dc332bd2ae933f28e27e5d956a255ca5 100644 (file)
@@ -879,6 +879,8 @@ int bch2_btree_node_read_done(struct bch_fs *c, struct bch_dev *ca,
        int ret, retry_read = 0, write = READ;
 
        b->version_ondisk = U16_MAX;
+       /* We might get called multiple times on read retry: */
+       b->written = 0;
 
        iter = mempool_alloc(&c->fill_iter, GFP_NOIO);
        sort_iter_init(iter, b);