Message ID | 20231205123728.1866699-3-yukuai1@huaweicloud.com |
---|---|
State | New |
Headers | show |
Series | [-next,RFC,01/14] block: add some bdev apis | expand |
On Wed, Dec 06, 2023 at 02:56:05PM +0800, Yu Kuai wrote: > > > - invalidate_inode_pages2( > > > - blkif->vbd.bdev_handle->bdev->bd_inode->i_mapping); > > > + invalidate_bdev(blkif->vbd.bdev_handle->bdev); > > > > blkbak is a bdev exported. I don't think it should ever call > > invalidate_inode_pages2, through a wrapper or not. > > I'm not sure about this. I'm not familiar with xen/blkback, but I saw > that xen-blkback will open a bdev from xen_vbd_create(), hence this > looks like a dm/md for me, hence it sounds reasonable to sync + > invalidate the opened bdev while initialization. Please kindly correct > me if I'm wrong. I guess we have enough precedence for this, so the switchover here isn't wrong. But all this invalidating of the bdev cache seems to be asking for trouble.
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index e34219ea2b05..e645afa4af57 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -104,8 +104,7 @@ static void xen_update_blkif_status(struct xen_blkif *blkif) xenbus_dev_error(blkif->be->dev, err, "block flush"); return; } - invalidate_inode_pages2( - blkif->vbd.bdev_handle->bdev->bd_inode->i_mapping); + invalidate_bdev(blkif->vbd.bdev_handle->bdev); for (i = 0; i < blkif->nr_rings; i++) { ring = &blkif->rings[i];