lkml.org 
[lkml]   [2016]   [Mar]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.2.y-ckt 064/218] mtip32xx: Fix broken service thread handling
    Date
    4.2.8-ckt7 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Asai Thambi SP <asamymuthupa@micron.com>

    commit cfc05bd31384c4898bf2437a4de5557f3cf9803a upstream.

    Service thread does not detect the need for taskfile error hanlding. Fixed the
    flag condition to process taskfile error.

    Signed-off-by: Selvan Mani <smani@micron.com>
    Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/block/mtip32xx/mtip32xx.c | 6 +++---
    drivers/block/mtip32xx/mtip32xx.h | 5 +++++
    2 files changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
    index f504232..4e772dc 100644
    --- a/drivers/block/mtip32xx/mtip32xx.c
    +++ b/drivers/block/mtip32xx/mtip32xx.c
    @@ -2924,9 +2924,7 @@ static int mtip_service_thread(void *data)
    * is in progress nor error handling is active
    */
    wait_event_interruptible(port->svc_wait, (port->flags) &&
    - !(port->flags & MTIP_PF_PAUSE_IO));
    -
    - set_bit(MTIP_PF_SVC_THD_ACTIVE_BIT, &port->flags);
    + (port->flags & MTIP_PF_SVC_THD_WORK));

    if (kthread_should_stop() ||
    test_bit(MTIP_PF_SVC_THD_STOP_BIT, &port->flags))
    @@ -2936,6 +2934,8 @@ static int mtip_service_thread(void *data)
    &dd->dd_flag)))
    goto st_out;

    + set_bit(MTIP_PF_SVC_THD_ACTIVE_BIT, &port->flags);
    +
    restart_eh:
    /* Demux bits: start with error handling */
    if (test_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags)) {
    diff --git a/drivers/block/mtip32xx/mtip32xx.h b/drivers/block/mtip32xx/mtip32xx.h
    index 3274784..8635239 100644
    --- a/drivers/block/mtip32xx/mtip32xx.h
    +++ b/drivers/block/mtip32xx/mtip32xx.h
    @@ -144,6 +144,11 @@ enum {
    MTIP_PF_REBUILD_BIT = 6,
    MTIP_PF_SVC_THD_STOP_BIT = 8,

    + MTIP_PF_SVC_THD_WORK = ((1 << MTIP_PF_EH_ACTIVE_BIT) |
    + (1 << MTIP_PF_ISSUE_CMDS_BIT) |
    + (1 << MTIP_PF_REBUILD_BIT) |
    + (1 << MTIP_PF_SVC_THD_STOP_BIT)),
    +
    /* below are bit numbers in 'dd_flag' defined in driver_data */
    MTIP_DDF_SEC_LOCK_BIT = 0,
    MTIP_DDF_REMOVE_PENDING_BIT = 1,
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-03-31 23:41    [W:5.854 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site