Signed-off-by: Anton Nefedov <anton.nefe...@virtuozzo.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> --- hw/ide/core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/hw/ide/core.c b/hw/ide/core.c index 471d0c9..2e4dea7 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -389,6 +389,7 @@ typedef struct TrimAIOCB { QEMUIOVector *qiov; BlockAIOCB *aiocb; int i, j; + BlockAcctCookie acct; } TrimAIOCB; static void trim_aio_cancel(BlockAIOCB *acb) @@ -426,6 +427,14 @@ static void ide_trim_bh_cb(void *opaque) static void ide_issue_trim_cb(void *opaque, int ret) { TrimAIOCB *iocb = opaque; + if (iocb->i >= 0) { + if (ret >= 0) { + block_acct_done(blk_get_stats(iocb->blk), &iocb->acct); + } else { + block_acct_failed(blk_get_stats(iocb->blk), &iocb->acct); + } + } + if (ret >= 0) { while (iocb->j < iocb->qiov->niov) { int j = iocb->j; @@ -442,6 +451,9 @@ static void ide_issue_trim_cb(void *opaque, int ret) continue; } + block_acct_start(blk_get_stats(iocb->blk), &iocb->acct, + count << BDRV_SECTOR_BITS, BLOCK_ACCT_UNMAP); + /* Got an entry! Submit and exit. */ iocb->aiocb = blk_aio_pdiscard(iocb->blk, sector << BDRV_SECTOR_BITS, -- 2.7.4