From 46d6f7c7f7bfa3d62b273b4f9c57ad23535c569c Mon Sep 17 00:00:00 2001
From: johann <johann>
Date: Wed, 30 Jul 2008 16:07:27 +0000
Subject: [PATCH] Branch HEAD b=16496 i=bzzz i=vitaly

fix a race between class_handle_unhash() and class_handle2object()
introduced in lustre 1.6.5 by bug 13622. check for h_in instead of
h_cookie in class_handle2object().
---
 lustre/ChangeLog                 | 6 ++++++
 lustre/obdclass/lustre_handles.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index e95ef82095..fa1b2aebb2 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -1225,6 +1225,12 @@ Details    : looking up an inode via iopen with the wrong generation number can
 	     assertion failure in iopen since the inode's dentry list contains
 	     both a connected and disconnected dentry.
 
+Severity   : normal
+Bugzilla   : 16496
+Description: assertion failure in ldlm_handle2lock()
+Details    : fix a race between class_handle_unhash() and class_handle2object()
+	     introduced in lustre 1.6.5 by bug 13622.
+
 --------------------------------------------------------------------------------
 
 2007-08-10         Cluster File Systems, Inc. <info@clusterfs.com>
diff --git a/lustre/obdclass/lustre_handles.c b/lustre/obdclass/lustre_handles.c
index 7128f24e88..23d25dc8a9 100644
--- a/lustre/obdclass/lustre_handles.c
+++ b/lustre/obdclass/lustre_handles.c
@@ -195,7 +195,7 @@ void *class_handle2object(__u64 cookie)
                         continue;
 
                 spin_lock(&h->h_lock);
-                if (likely(h->h_cookie != 0)) {
+                if (likely(h->h_in != 0)) {
                         h->h_addref(h);
                         retval = h;
                 }
-- 
GitLab