From: Jinshan Xiong Date: Fri, 30 Mar 2012 21:16:14 +0000 (-0700) Subject: LU-1188 clio: acquire lockdep for cl_lock_peek() X-Git-Tag: 2.2.53~9 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=00c46e5396182d0a40efe770b36a5ef71b8a2ad2 LU-1188 clio: acquire lockdep for cl_lock_peek() Otherwise it will break lock dependencies check. Signed-off-by: Jinshan Xiong Change-Id: Icc9e3f881d8c5d0c6a9575638d23cff38948724f Reviewed-on: http://review.whamcloud.com/2422 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Alexey Lyashkov --- diff --git a/lustre/obdclass/cl_lock.c b/lustre/obdclass/cl_lock.c index 2646e4c..d3a0bbd 100644 --- a/lustre/obdclass/cl_lock.c +++ b/lustre/obdclass/cl_lock.c @@ -592,7 +592,6 @@ struct cl_lock *cl_lock_peek(const struct lu_env *env, const struct cl_io *io, struct cl_object_header *head; struct cl_object *obj; struct cl_lock *lock; - int ok; obj = need->cld_obj; head = cl_object_header(obj); @@ -613,14 +612,14 @@ struct cl_lock *cl_lock_peek(const struct lu_env *env, const struct cl_io *io, if (result < 0) cl_lock_error(env, lock, result); } - ok = lock->cll_state == CLS_HELD; - if (ok) { + if (lock->cll_state == CLS_HELD) { cl_lock_hold_add(env, lock, scope, source); cl_lock_user_add(env, lock); + cl_lock_mutex_put(env, lock); + cl_lock_lockdep_acquire(env, lock, 0); cl_lock_put(env, lock); - } - cl_lock_mutex_put(env, lock); - if (!ok) { + } else { + cl_lock_mutex_put(env, lock); cl_lock_put(env, lock); lock = NULL; }