lkml.org 
[lkml]   [2014]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 32/47] staging/lustre/lnet: NI shutdown may loop forever
    Date
    From: Liang Zhen <liang.zhen@intel.com>

    lnet_shutdown_lndnis() may enter endless loop if there is a busy NI,
    this is injected by LNet SMP improvements. It's fixed in this patch.

    Signed-off-by: Liang Zhen <liang.zhen@intel.com>
    Reviewed-on: http://review.whamcloud.com/9706
    Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4780
    Reviewed-by: Isaac Huang <he.huang@intel.com>
    Reviewed-by: Bobi Jam <bobijam@gmail.com>
    Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
    ---
    drivers/staging/lustre/lnet/lnet/api-ni.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c
    index f5a9ae3..3f1fdaa 100644
    --- a/drivers/staging/lustre/lnet/lnet/api-ni.c
    +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
    @@ -986,12 +986,11 @@ lnet_shutdown_lndnis (void)
    break;
    }

    - while (!list_empty(&ni->ni_list)) {
    + if (!list_empty(&ni->ni_list)) {
    lnet_net_unlock(LNET_LOCK_EX);
    ++i;
    if ((i & (-i)) == i) {
    - CDEBUG(D_WARNING,
    - "Waiting for zombie LNI %s\n",
    + CDEBUG(D_WARNING, "Waiting for zombie LNI %s\n",
    libcfs_nid2str(ni->ni_nid));
    }
    set_current_state(TASK_UNINTERRUPTIBLE);
    @@ -1016,6 +1015,8 @@ lnet_shutdown_lndnis (void)
    libcfs_nid2str(ni->ni_nid));

    lnet_ni_free(ni);
    + i = 2;
    +
    lnet_net_lock(LNET_LOCK_EX);
    }

    --
    1.8.5.3


    \
     
     \ /
      Last update: 2014-04-29 09:01    [W:2.228 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site