nbd: don't clear discard_sectors in nbd_config_put
authorChristoph Hellwig <hch@lst.de>
Thu, 29 Feb 2024 14:38:44 +0000 (06:38 -0800)
committerJens Axboe <axboe@kernel.dk>
Fri, 1 Mar 2024 16:08:22 +0000 (09:08 -0700)
nbd_config_put currently clears discard_sectors when unusing a device.
This is pretty odd behavior and different from the sector size
configuration which is simply left in places and then reconfigured when
nbd_set_size is as part of configuring the device.  Change nbd_set_size
to clear discard_sectors if discard is not supported so that all the
queue limits changes are handled in one place.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20240229143846.1047223-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/nbd.c

index 9ee9587375fac335350ff237974c0d60b8aa6c59..384750d5259fb8b524807d90b51cb8f6b5445cbb 100644 (file)
@@ -336,6 +336,8 @@ static int nbd_set_size(struct nbd_device *nbd, loff_t bytesize,
 
        if (nbd->config->flags & NBD_FLAG_SEND_TRIM)
                blk_queue_max_discard_sectors(nbd->disk->queue, UINT_MAX);
+       else
+               blk_queue_max_discard_sectors(nbd->disk->queue, 0);
        blk_queue_logical_block_size(nbd->disk->queue, blksize);
        blk_queue_physical_block_size(nbd->disk->queue, blksize);
 
@@ -1351,7 +1353,6 @@ static void nbd_config_put(struct nbd_device *nbd)
                nbd->config = NULL;
 
                nbd->tag_set.timeout = 0;
-               blk_queue_max_discard_sectors(nbd->disk->queue, 0);
 
                mutex_unlock(&nbd->config_lock);
                nbd_put(nbd);