diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-05-11 16:05:09 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-05-11 16:05:09 +0200 |
commit | 191a66353b22fad8ac89404ab4c929cbe7b0afb2 (patch) | |
tree | bd7affc4bc640eb42e5ff3285922497285f8fdd7 /fs/ocfs2/dlm | |
parent | f5d6a52f511157c7476590532a23b5664b1ed877 (diff) | |
parent | f21262b8e092a770e39fbd405cc18a0247c3af68 (diff) | |
download | talos-op-linux-191a66353b22fad8ac89404ab4c929cbe7b0afb2.tar.gz talos-op-linux-191a66353b22fad8ac89404ab4c929cbe7b0afb2.zip |
Merge branch 'x86/asm' into x86/apic, to resolve a conflict
Conflicts:
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/apic/vector.c
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/ocfs2/dlm')
-rw-r--r-- | fs/ocfs2/dlm/dlmmaster.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c index a6944b25fd5b..fdf4b41d0609 100644 --- a/fs/ocfs2/dlm/dlmmaster.c +++ b/fs/ocfs2/dlm/dlmmaster.c @@ -757,6 +757,19 @@ lookup: if (tmpres) { spin_unlock(&dlm->spinlock); spin_lock(&tmpres->spinlock); + + /* + * Right after dlm spinlock was released, dlm_thread could have + * purged the lockres. Check if lockres got unhashed. If so + * start over. + */ + if (hlist_unhashed(&tmpres->hash_node)) { + spin_unlock(&tmpres->spinlock); + dlm_lockres_put(tmpres); + tmpres = NULL; + goto lookup; + } + /* Wait on the thread that is mastering the resource */ if (tmpres->owner == DLM_LOCK_RES_OWNER_UNKNOWN) { __dlm_wait_on_lockres(tmpres); |