Am 12.06.2016 um 08:56 hat Fam Zheng geschrieben: > We only care about the associated backend, so blk_drain is more > appropriate here. > > Signed-off-by: Fam Zheng <f...@redhat.com>
[ Cc: John ] > --- > hw/ide/macio.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/ide/macio.c b/hw/ide/macio.c > index 78c10a0..a8c7321 100644 > --- a/hw/ide/macio.c > +++ b/hw/ide/macio.c > @@ -400,7 +400,7 @@ static void pmac_ide_flush(DBDMA_io *io) > IDEState *s = idebus_active_if(&m->bus); > > if (s->bus->dma->aiocb) { > - blk_drain_all(); > + blk_drain(s->blk); > } > } Looks good to me: Reviewed-by: Kevin Wolf <kw...@redhat.com> However, even this is still doing too much. We only need to drain the requests that come from this device and can ignore e.g. block job requests. Now the part that I'm not completely sure about is whether the problem is here in the IDE emulation and it should track its own requests or whether it is blk_drain() that actually shouldn't drain the BDS but just all requests that came in through this specific BB. I'm leaning towards the latter, but I'm unsure whether we have cases where we actually need to drain the whole root BDS. Any opinions? Kevin