lkml.org 
[lkml]   [2018]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 055/219] scsi: fnic: Fix for "Number of Active IOs" in fnicstats becoming negative
    Date
    From: Satish Kharat <satishkh@cisco.com>

    [ Upstream commit 7ef539c88d7d394410d547c9f082d477093a2a22 ]

    Fixing the IO stats update (Active IOs and IO completion) to prevent
    "Number of Active IOs" from becoming negative in the fnistats output.

    Signed-off-by: Satish Kharat <satishkh@cisco.com>
    Signed-off-by: Sesidhar Baddela <sebaddel@cisco.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/scsi/fnic/fnic_scsi.c | 16 ++++++++++------
    1 file changed, 10 insertions(+), 6 deletions(-)

    diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c
    index 44dd372aa7d3..c056b8111ad2 100644
    --- a/drivers/scsi/fnic/fnic_scsi.c
    +++ b/drivers/scsi/fnic/fnic_scsi.c
    @@ -1127,12 +1127,6 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic,
    else
    CMD_ABTS_STATUS(sc) = hdr_status;

    - atomic64_dec(&fnic_stats->io_stats.active_ios);
    - if (atomic64_read(&fnic->io_cmpl_skip))
    - atomic64_dec(&fnic->io_cmpl_skip);
    - else
    - atomic64_inc(&fnic_stats->io_stats.io_completions);
    -
    if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE)))
    atomic64_inc(&misc_stats->no_icmnd_itmf_cmpls);

    @@ -1173,6 +1167,11 @@ static void fnic_fcpio_itmf_cmpl_handler(struct fnic *fnic,
    (((u64)CMD_FLAGS(sc) << 32) |
    CMD_STATE(sc)));
    sc->scsi_done(sc);
    + atomic64_dec(&fnic_stats->io_stats.active_ios);
    + if (atomic64_read(&fnic->io_cmpl_skip))
    + atomic64_dec(&fnic->io_cmpl_skip);
    + else
    + atomic64_inc(&fnic_stats->io_stats.io_completions);
    }
    }

    @@ -1962,6 +1961,11 @@ int fnic_abort_cmd(struct scsi_cmnd *sc)
    /* Call SCSI completion function to complete the IO */
    sc->result = (DID_ABORT << 16);
    sc->scsi_done(sc);
    + atomic64_dec(&fnic_stats->io_stats.active_ios);
    + if (atomic64_read(&fnic->io_cmpl_skip))
    + atomic64_dec(&fnic->io_cmpl_skip);
    + else
    + atomic64_inc(&fnic_stats->io_stats.io_completions);
    }

    fnic_abort_cmd_end:
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-04 00:59    [W:6.126 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site