Re: [PATCH v5 3/8] nbd: reset write cache on disconnect
"yu kuai" <[email protected]> Sun, 2 Aug 2026 19:51:25 +0800
| Newsgroups | org.kernel.vger.linux-block |
|---|---|
| Message-ID | <[email protected]> |
Hi, =E5=9C=A8 2026/7/30 16:20, Yang Erkun =E5=86=99=E9=81=93: > An inactive nbd device may refuse any I/O operations. The nbd_config_put > function calls invalidate_disk, which sets the device capacity to zero > to reject all read and write I/O. For zero-sector flush I/O requests > from blkdev_issue_flush, if the write cache is disabled, the zero-sector > flush I/O immediately returns 0 in submit_bio_noacct. However, since > nbd_config_put does not clear the write cache state, an inactive nbd > device might still have the write cache enabled. In this situation, > zero-sector flush I/O will return -EIO because there is no active socket. > Although this does not cause any bugs, resetting the write cache state > would make the behavior consistent. I don't think this make sense, at this point nbd->config_refs is 0, which m= eans there is no opener for the device, so how can there still be outstanding re= ad/write or flush IO? > > Signed-off-by: Yang Erkun <[email protected]> > --- > drivers/block/nbd.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c > index 7ec85f94f742..da4b48ef3c79 100644 > --- a/drivers/block/nbd.c > +++ b/drivers/block/nbd.c > @@ -1469,8 +1469,13 @@ static void nbd_config_put(struct nbd_device *nbd) > if (refcount_dec_and_mutex_lock(&nbd->config_refs, > &nbd->config_lock)) { > struct nbd_config *config =3D nbd->config; > + struct queue_limits lim; > nbd_dev_dbg_close(nbd); > invalidate_disk(nbd->disk); > + /* reset write cache */ > + lim =3D queue_limits_start_update(nbd->disk->queue); > + lim.features &=3D ~(BLK_FEAT_WRITE_CACHE | BLK_FEAT_FUA); > + queue_limits_commit_update(nbd->disk->queue, &lim); > if (nbd->config->bytesize) > kobject_uevent(&nbd_to_dev(nbd)->kobj, KOBJ_CHANGE); > if (test_and_clear_bit(NBD_RT_HAS_PID_FILE, --=20 Thanks, Kuai