]> www.infradead.org Git - nvme.git/commitdiff
block: don't require stable pages for non-PI metadata
authorChristoph Hellwig <hch@lst.de>
Thu, 13 Jun 2024 08:48:19 +0000 (10:48 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 14 Jun 2024 16:20:06 +0000 (10:20 -0600)
Non-PI metadata doesn't contain checksums and thus doesn't require
stable pages.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20240613084839.1044015-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-integrity.c

index 58760a6d6b2209056ac5652151bf9b66fe8839f0..1d2d371cd632d36d36f61cca55a3b58684ea6892 100644 (file)
@@ -379,7 +379,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) {
@@ -404,7 +405,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);