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 <anton.nefe...@virtuozzo.com> > Reviewed-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com>
Reviewed-by: Alberto Garcia <be...@igalia.com> > @@ -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