]> www.infradead.org Git - users/hch/block.git/commitdiff
block: don't require stable pages for non-PI metadata
authorChristoph Hellwig <hch@lst.de>
Mon, 3 Jun 2024 08:28:35 +0000 (10:28 +0200)
committerChristoph Hellwig <hch@lst.de>
Thu, 6 Jun 2024 09:41:38 +0000 (11:41 +0200)
Non-PI metadata doesn't contain checksums and thus doesn't require
stable pages.

Signed-off-by: Christoph Hellwig <hch@lst.de>
block/blk-integrity.c

index bb3cd1e0eeb58e8dec4fa1f589832f1cc727d85e..a6188c80c9219759bea8dc38ddffdd8fb2ebdbfe 100644 (file)
@@ -377,7 +377,8 @@ void blk_integrity_register(struct gendisk *disk, struct blk_integrity *template
        bi->tag_size = template->tag_size;
        bi->pi_offset = template->pi_offset;
 
-       blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, disk->queue);
+       if (bi->csum_type != BLK_INTEGRITY_CSUM_NONE)
+               blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, disk->queue);
 
 #ifdef CONFIG_BLK_INLINE_ENCRYPTION
        if (disk->queue->crypto_profile) {
@@ -402,7 +403,8 @@ void blk_integrity_unregister(struct gendisk *disk)
        if (!bi->tuple_size)
                return;
 
-       blk_queue_flag_clear(QUEUE_FLAG_STABLE_WRITES, disk->queue);
+       if (bi->csum_type != BLK_INTEGRITY_CSUM_NONE)
+               blk_queue_flag_clear(QUEUE_FLAG_STABLE_WRITES, disk->queue);
        memset(bi, 0, sizeof(*bi));
 }
 EXPORT_SYMBOL(blk_integrity_unregister);