qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 7/8] xen_disk: simplify blk_disconnect with refc


From: Jeff Cody
Subject: Re: [Qemu-devel] [PATCH 7/8] xen_disk: simplify blk_disconnect with refcnt
Date: Thu, 25 Jul 2013 21:30:35 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

On Thu, Jul 25, 2013 at 08:56:41AM -0400, Jeff Cody wrote:
> On Thu, Jul 25, 2013 at 05:01:45PM +0800, Fam Zheng wrote:
> > We call bdrv_attach_dev when initializing whether or not bs is created
> > locally, so call bdrv_detach_dev and let the refcnt handle the
> > lifecycle.
> > 
> > Signed-off-by: Fam Zheng <address@hidden>
> > ---
> >  hw/block/xen_disk.c | 7 +------
> >  1 file changed, 1 insertion(+), 6 deletions(-)
> > 
> > diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c
> > index 99537e8..3ec4bd2 100644
> > --- a/hw/block/xen_disk.c
> > +++ b/hw/block/xen_disk.c
> > @@ -910,12 +910,7 @@ static void blk_disconnect(struct XenDevice *xendev)
> >      struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, 
> > xendev);
> >  
> >      if (blkdev->bs) {
> > -        if (!blkdev->dinfo) {
> > -            /* close/delete only if we created it ourself */
> > -            bdrv_close(blkdev->bs);
> > -            bdrv_detach_dev(blkdev->bs, blkdev);
> > -            bdrv_unref(blkdev->bs);
> > -        }
> > +        bdrv_detach_dev(blkdev->bs, blkdev);
> >          blkdev->bs = NULL;
> 
> If the refcnt for blkdev->bs is > 1, then this leaks blkdev->bs, and
> doesn't call bdrv_close().
> 

Same with this, I don't think it will leak this either.

> >      }
> >      xen_be_unbind_evtchn(&blkdev->xendev);
> > -- 
> > 1.8.3.2
> > 
> > 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]