On Mon, Aug 17, 2020 at 12:15:47PM +0300, Vladimir Sementsov-Ogievskiy wrote: > diff --git a/block/io.c b/block/io.c > index 96b1b9cf5f..fc6d44d302 100644 > --- a/block/io.c > +++ b/block/io.c > @@ -1911,9 +1911,20 @@ bdrv_co_write_req_prepare(BdrvChild *child, int64_t > offset, uint64_t bytes, > assert(!(bs->open_flags & BDRV_O_INACTIVE)); > assert((bs->open_flags & BDRV_O_NO_IO) == 0); > assert(!(flags & ~BDRV_REQ_MASK)); > + assert(!((flags & BDRV_REQ_NO_WAIT) && !(flags & BDRV_REQ_SERIALISING))); > > if (flags & BDRV_REQ_SERIALISING) { > - bdrv_make_request_serialising(req, bdrv_get_cluster_size(bs)); > + qemu_co_mutex_lock(&bs->reqs_lock); > + > + tracked_request_set_serialising(req, bdrv_get_cluster_size(bs)); > + > + if ((flags & BDRV_REQ_NO_WAIT) && > bdrv_find_conflicting_request(req)) { > + return -EBUSY;
bs->reqs_lock is leaked.
signature.asc
Description: PGP signature