Re: [PATCH -next RFC 02/14] xen/blkback: use bdev api in xen_update_blkif_status()
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.
Re: [PATCH -next RFC 02/14] xen/blkback: use bdev api in xen_update_blkif_status()
Hi, 在 2023/12/06 13:55, Christoph Hellwig 写道: On Tue, Dec 05, 2023 at 08:37:16PM +0800, Yu Kuai wrote: 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); 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. Thanks, Kuai .
Re: [PATCH -next RFC 02/14] xen/blkback: use bdev api in xen_update_blkif_status()
On Tue, Dec 05, 2023 at 08:37:16PM +0800, Yu Kuai wrote: > 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); blkbak is a bdev exported. I don't think it should ever call invalidate_inode_pages2, through a wrapper or not.