Whamcloud - gitweb
LU-82 Remove useless clio locks
authorJinshan Xiong <jay@whamcloud.com>
Mon, 7 Mar 2011 18:56:17 +0000 (10:56 -0800)
committerOleg Drokin <green@whamcloud.com>
Wed, 16 Mar 2011 15:45:06 +0000 (08:45 -0700)
A CLS_NEW toplock must be deleted also if the last sublock is being deleted.

Signed-off-by: Jinshan Xiong <jay@whamcloud.com>
Change-Id: I9831ab534ae222fe74ebaf34faafe00bf3d18cb7
Reviewed-on: http://review.whamcloud.com/305
Tested-by: Hudson
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/lov/lovsub_lock.c

index f7d54ba..4810da4 100644 (file)
@@ -301,9 +301,7 @@ static int lovsub_lock_delete_one(const struct lu_env *env,
 
         result = 0;
         switch (parent->cll_state) {
-        case CLS_NEW:
         case CLS_QUEUING:
-        case CLS_ENQUEUED:
         case CLS_FREEING:
                 cl_lock_signal(env, parent);
                 break;
@@ -337,6 +335,8 @@ static int lovsub_lock_delete_one(const struct lu_env *env,
                  * enqueues missing sub-lock.
                  */
                 cl_lock_state_set(env, parent, CLS_NEW);
+                /* fall through */
+        case CLS_NEW:
                 /*
                  * if last sub-lock is canceled, destroy the top-lock (which
                  * is now `empty') proactively.
@@ -376,6 +376,7 @@ static int lovsub_lock_delete_one(const struct lu_env *env,
                         }
                 }
                 break;
+        case CLS_ENQUEUED:
         case CLS_HELD:
                 CL_LOCK_DEBUG(D_ERROR, env, parent, "Delete CLS_HELD lock\n");
         default: