scsi-disk: release AioContext in unaligned WRITE SAME case
scsi_write_same_complete() can retry the write if the request was
unaligned. Make sure to release the AioContext when that code path is
taken!
This patch fixes a hang when QEMU terminates after an unaligned WRITE
SAME request has been processed with dataplane. The hang occurs because
iothread_stop_all() cannot acquire the AioContext lock that was leaked
by the IOThread in scsi_write_same_complete().
Fixes: b9e413dd37
("block: explicitly acquire aiocontext in aio callbacks that need it").
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-stable@nongnu.org
Reported-by: Cong Li <coli@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20180104142502.15175-1-stefanha@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
02a2ad217b
commit
24355b79bd
@ -1755,6 +1755,7 @@ static void scsi_write_same_complete(void *opaque, int ret)
|
|||||||
data->sector << BDRV_SECTOR_BITS,
|
data->sector << BDRV_SECTOR_BITS,
|
||||||
&data->qiov, 0,
|
&data->qiov, 0,
|
||||||
scsi_write_same_complete, data);
|
scsi_write_same_complete, data);
|
||||||
|
aio_context_release(blk_get_aio_context(s->qdev.conf.blk));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user