Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-13 Thread Stefan Hajnoczi
On Fri, Dec 10, 2021 at 03:00:38PM +0100, Kevin Wolf wrote: > Am 09.12.2021 um 15:23 hat Stefan Hajnoczi geschrieben: > > The BlockBackend root child can change during bdrv_drained_begin() when > > aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 > > and blk_drain() is left wi

Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-13 Thread Stefan Hajnoczi
On Thu, Dec 09, 2021 at 07:51:02PM +0300, Vladimir Sementsov-Ogievskiy wrote: > 09.12.2021 19:32, Stefan Hajnoczi wrote: > > On Thu, Dec 09, 2021 at 04:45:13PM +0100, Hanna Reitz wrote: > > > On 09.12.21 15:23, Stefan Hajnoczi wrote: > > > > The BlockBackend root child can change during bdrv_draine

Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-10 Thread Kevin Wolf
Am 09.12.2021 um 15:23 hat Stefan Hajnoczi geschrieben: > The BlockBackend root child can change during bdrv_drained_begin() when > aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 > and blk_drain() is left with a dangling BDS pointer. > > One example is scsi_device_purge_req

Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-09 Thread Vladimir Sementsov-Ogievskiy
09.12.2021 19:32, Stefan Hajnoczi wrote: On Thu, Dec 09, 2021 at 04:45:13PM +0100, Hanna Reitz wrote: On 09.12.21 15:23, Stefan Hajnoczi wrote: The BlockBackend root child can change during bdrv_drained_begin() when aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 and blk_

Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-09 Thread Stefan Hajnoczi
On Thu, Dec 09, 2021 at 04:45:13PM +0100, Hanna Reitz wrote: > On 09.12.21 15:23, Stefan Hajnoczi wrote: > > The BlockBackend root child can change during bdrv_drained_begin() when > > aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 > > and blk_drain() is left with a dangling

Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-09 Thread Vladimir Sementsov-Ogievskiy
09.12.2021 18:45, Hanna Reitz wrote: On 09.12.21 15:23, Stefan Hajnoczi wrote: The BlockBackend root child can change during bdrv_drained_begin() when aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 and blk_drain() is left with a dangling BDS pointer. One example is scsi_

Re: [RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-09 Thread Hanna Reitz
On 09.12.21 15:23, Stefan Hajnoczi wrote: The BlockBackend root child can change during bdrv_drained_begin() when aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 and blk_drain() is left with a dangling BDS pointer. One example is scsi_device_purge_requests(), which calls b

[RFC] block-backend: prevent dangling BDS pointer in blk_drain()

2021-12-09 Thread Stefan Hajnoczi
The BlockBackend root child can change during bdrv_drained_begin() when aio_poll() is invoked. In fact the BlockDriverState can reach refcnt 0 and blk_drain() is left with a dangling BDS pointer. One example is scsi_device_purge_requests(), which calls blk_drain() to wait for in-flight requests to