Whamcloud - gitweb
LU-9210 statahead: missing barrier before wake_up 30/27330/2
authorLai Siyao <lai.siyao@intel.com>
Tue, 7 Mar 2017 05:56:04 +0000 (13:56 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 19 Jun 2017 16:27:59 +0000 (16:27 +0000)
A barrier is missing before wake_up() in ll_statahead_interpret(),
which may cause 'ls' hang.

Signed-off-by: Lai Siyao <lai.siyao@intel.com>
Signed-off-by: Bob Glossman <bob.glossman@intel.com>
Change-Id: I391d6222e353fb27761ffd5412b52ce08f7a0592
Reviewed-on: https://review.whamcloud.com/27330
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/statahead.c

index 1ecb86a..c11c682 100644 (file)
@@ -713,6 +713,8 @@ static int ll_statahead_interpret(struct ptlrpc_request *req,
                list_add_tail(&entry->se_list, &sai->sai_interim_entries);
        }
        sai->sai_replied++;
                list_add_tail(&entry->se_list, &sai->sai_interim_entries);
        }
        sai->sai_replied++;
+
+       smp_mb();
        if (waitq != NULL)
                wake_up(waitq);
        spin_unlock(&lli->lli_sa_lock);
        if (waitq != NULL)
                wake_up(waitq);
        spin_unlock(&lli->lli_sa_lock);