bcachefs: Don't use FUA unnecessarily
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 21 Oct 2019 23:38:08 +0000 (19:38 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:30 +0000 (17:08 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_io.c

index c1d3e685a5f266058d8dbaa46a915b92ff8ab96c..c4f85b962b659b4c747367903eadf433bce68052 100644 (file)
@@ -1493,7 +1493,7 @@ void __bch2_btree_node_write(struct bch_fs *c, struct btree *b,
 
        wbio = container_of(bio_alloc_bioset(NULL,
                                buf_pages(data, sectors_to_write << 9),
-                               REQ_OP_WRITE|REQ_META|REQ_FUA,
+                               REQ_OP_WRITE|REQ_META,
                                GFP_NOIO,
                                &c->btree_bio),
                            struct btree_write_bio, wbio.bio);
@@ -1504,6 +1504,9 @@ void __bch2_btree_node_write(struct bch_fs *c, struct btree *b,
        wbio->wbio.bio.bi_end_io        = btree_node_write_endio;
        wbio->wbio.bio.bi_private       = b;
 
+       if (b->c.level || !b->written)
+               wbio->wbio.bio.bi_opf |= REQ_FUA;
+
        bch2_bio_map(&wbio->wbio.bio, data, sectors_to_write << 9);
 
        /*