On Mon 20 Nov 2017 05:50:59 PM CET, Anton Nefedov wrote:
> 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);
> +        }
> +    }

This part looks fine, but don't you also need to account for invalid
requests (in ide_dma_cb() or somewhere else) ?

Berto

Reply via email to