]> www.infradead.org Git - nvme.git/commitdiff
nbd: move setting the cache control flags to __nbd_set_size
authorChristoph Hellwig <hch@lst.de>
Mon, 17 Jun 2024 06:04:37 +0000 (08:04 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 19 Jun 2024 13:58:28 +0000 (07:58 -0600)
Move setting the cache control flags in nbd in preparation for moving
these flags into the queue_limits structure.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20240617060532.127975-11-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/nbd.c

index ad887d614d5b3fce4b326f5d49fe4ce09f32ffef..44b8c671921e5c3fa5b44f48a5d94bc571aee948 100644 (file)
@@ -342,6 +342,12 @@ static int __nbd_set_size(struct nbd_device *nbd, loff_t bytesize,
                lim.max_hw_discard_sectors = UINT_MAX;
        else
                lim.max_hw_discard_sectors = 0;
+       if (!(nbd->config->flags & NBD_FLAG_SEND_FLUSH))
+               blk_queue_write_cache(nbd->disk->queue, false, false);
+       else if (nbd->config->flags & NBD_FLAG_SEND_FUA)
+               blk_queue_write_cache(nbd->disk->queue, true, true);
+       else
+               blk_queue_write_cache(nbd->disk->queue, true, false);
        lim.logical_block_size = blksize;
        lim.physical_block_size = blksize;
        error = queue_limits_commit_update(nbd->disk->queue, &lim);
@@ -1286,19 +1292,10 @@ static void nbd_bdev_reset(struct nbd_device *nbd)
 
 static void nbd_parse_flags(struct nbd_device *nbd)
 {
-       struct nbd_config *config = nbd->config;
-       if (config->flags & NBD_FLAG_READ_ONLY)
+       if (nbd->config->flags & NBD_FLAG_READ_ONLY)
                set_disk_ro(nbd->disk, true);
        else
                set_disk_ro(nbd->disk, false);
-       if (config->flags & NBD_FLAG_SEND_FLUSH) {
-               if (config->flags & NBD_FLAG_SEND_FUA)
-                       blk_queue_write_cache(nbd->disk->queue, true, true);
-               else
-                       blk_queue_write_cache(nbd->disk->queue, true, false);
-       }
-       else
-               blk_queue_write_cache(nbd->disk->queue, false, false);
 }
 
 static void send_disconnects(struct nbd_device *nbd)