X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fldlm%2Fl_lock.c;fp=lustre%2Fldlm%2Fl_lock.c;h=8a77cfee5528fe8322280107c517bde2936c416c;hb=ca714223542a4fba435d99af68b47dfa7053f4fa;hp=0d21d24e72684e5943b76873a266920b0284ee0c;hpb=fd0bd149e66cbc06a17c372e159f9bfba024cc97;p=fs%2Flustre-release.git diff --git a/lustre/ldlm/l_lock.c b/lustre/ldlm/l_lock.c index 0d21d24..8a77cfe 100644 --- a/lustre/ldlm/l_lock.c +++ b/lustre/ldlm/l_lock.c @@ -52,29 +52,18 @@ */ struct ldlm_resource * lock_res_and_lock(struct ldlm_lock *lock) { - struct ldlm_resource *res = NULL; + /* on server-side resource of lock doesn't change */ + if (!lock->l_ns_srv) + cfs_spin_lock(&lock->l_lock); - cfs_spin_lock(&lock->l_lock); - res = lock->l_resource; - - if (ns_is_server(ldlm_res_to_ns(res))) - /* on server-side resource of lock doesn't change */ - cfs_spin_unlock(&lock->l_lock); - - lock_res(res); - return res; + lock_res(lock->l_resource); + return lock->l_resource; } void unlock_res_and_lock(struct ldlm_lock *lock) { - struct ldlm_resource *res = lock->l_resource; - - if (ns_is_server(ldlm_res_to_ns(res))) { - /* on server-side resource of lock doesn't change */ - unlock_res(res); - return; - } - - unlock_res(res); - cfs_spin_unlock(&lock->l_lock); + /* on server-side resource of lock doesn't change */ + unlock_res(lock->l_resource); + if (!lock->l_ns_srv) + cfs_spin_unlock(&lock->l_lock); }