mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
nbd: skip queue freeze when setting size at device startup
Commit 242a49e5c8 ("nbd: freeze the queue for queue limits updates")
added the freeze to keep in-flight commands from seeing
torn queue_limits. But at startup the capacity is still 0
(invalidate_disk cleared it) and the write cache is off (the previous
patch cleared it on disconnect, and nbd_set_size sets it back only after
the commit), so submit_bio_noacct() rejects any bio before it reaches
the driver and no I/O is in flight. Drop the freeze by checking
capacity and write cache state in nbd_set_size.
Reviewed-by: Yu Kuai <yukuai@fygo.io>
Signed-off-by: Yang Erkun <yangerkun@huawei.com>
Link: https://patch.msgid.link/20260805122930.57647-6-yangerkun@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
285908f554
commit
db285268df
|
|
@ -375,7 +375,11 @@ static int nbd_set_size(struct nbd_device *nbd, loff_t bytesize, loff_t blksize)
|
|||
nbd_apply_limits(&lim, nbd->config->flags);
|
||||
lim.logical_block_size = blksize;
|
||||
lim.physical_block_size = blksize;
|
||||
error = queue_limits_commit_update_frozen(nbd->disk->queue, &lim);
|
||||
/* No need freeze with 0 capacity and write cache disabled */
|
||||
if (!get_capacity(nbd->disk) && !blk_queue_write_cache(nbd->disk->queue))
|
||||
error = queue_limits_commit_update(nbd->disk->queue, &lim);
|
||||
else
|
||||
error = queue_limits_commit_update_frozen(nbd->disk->queue, &lim);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user