Whamcloud - gitweb
Revert "b=22244 fix ref count issue"
authorJohann Lombardi <johann@sun.com>
Mon, 31 May 2010 23:18:28 +0000 (01:18 +0200)
committerJohann Lombardi <johann@sun.com>
Mon, 31 May 2010 23:18:28 +0000 (01:18 +0200)
This reverts commit 551c01b97400cb8cabf22c6eaba64606c1d199b5.
Reverting all patches from 22244 & 21128 because of test failures.
See 22244 for more info.

lustre/ldlm/ldlm_lockd.c

index b582c66..56a8421 100644 (file)
@@ -1629,10 +1629,14 @@ static int __ldlm_bl_to_thread(struct ldlm_namespace *ns, struct ldlm_bl_work_it
         }
         spin_unlock(&blp->blp_lock);
 
-        cfs_waitq_signal(&blp->blp_waitq);
-
-        if (mode == LDLM_SYNC)
+        if (mode == LDLM_SYNC) {
+                /* keep ref count as object is on this stack for SYNC call */
+                ldlm_bl_work_item_get(blwi);
+                cfs_waitq_signal(&blp->blp_waitq);
                 wait_for_completion(&blwi->blwi_comp);
+        } else {
+                cfs_waitq_signal(&blp->blp_waitq);
+        }
 
         RETURN(0);
 }
@@ -1649,8 +1653,7 @@ static int ldlm_bl_to_thread(struct ldlm_namespace *ns,
                  */
                 struct ldlm_bl_work_item blwi;
                 memset(&blwi, 0, sizeof(blwi));
-                /* take extra ref as this obj is on stack */
-                ldlm_bl_work_item_get(&blwi);
+                /* have extra ref as this obj is on stack */
                 RETURN(__ldlm_bl_to_thread(ns, &blwi, ld, lock, cancels, count, mode));
         } else {
                 struct ldlm_bl_work_item *blwi;