On 06/11/2018 12:16, Igor Druzhinin wrote: > When blk_flush called in NVMe reset path S/C queues are already freed > which means that re-entering AIO handling loop having some IO requests > unfinished will lockup or crash as their SG structures being potentially > reused. Call blk_drain before freeing the queues to avoid this nasty > scenario. > > Signed-off-by: Igor Druzhinin <igor.druzhi...@citrix.com> > --- > hw/block/nvme.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > index fc7dacb..cdf836e 100644 > --- a/hw/block/nvme.c > +++ b/hw/block/nvme.c > @@ -797,6 +797,8 @@ static void nvme_clear_ctrl(NvmeCtrl *n) > { > int i; > > + blk_drain(n->conf.blk); > + > for (i = 0; i < n->num_queues; i++) { > if (n->sq[i] != NULL) { > nvme_free_sq(n->sq[i], n); >
ping?