On Fri 19 Jan 2018 01:50:04 PM CET, Anton Nefedov wrote: > This will help to account the operation in the following commit. > > The difference is that we don't call scsi_disk_req_check_error() before > the 1st discard iteration anymore. That function also checks if > the request is cancelled, however it shouldn't get canceled until it > yields in blk_aio() functions anyway. > Same approach is already used for emulate_write_same. > > Signed-off-by: Anton Nefedov <[email protected]> > Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]> > @@ -1665,7 +1662,12 @@ static void scsi_unmap_complete(void *opaque, int ret) > r->req.aiocb = NULL; > > aio_context_acquire(blk_get_aio_context(s->qdev.conf.blk)); > - scsi_unmap_complete_noio(data, ret); > + if (scsi_disk_req_check_error(r, ret, false)) { > + scsi_req_unref(&r->req); > + g_free(data); It would be nice not to have the cleanup code duplicated here, but I don't see any obvious alternative. Berto
