-void l_lock(struct lustre_lock *lock)
-{
- int owner = 0;
- spin_lock(&lock->l_spin);
- if (lock->l_owner == current) {
- owner = 1;
- }
- spin_unlock(&lock->l_spin);
- if (owner)
- ++lock->l_depth;
- else {
- down(&lock->l_sem);
- spin_lock(&lock->l_spin);
- lock->l_owner = current;
- lock->l_depth = 0;
- spin_unlock(&lock->l_spin);
- }
+ if (!res->lr_namespace->ns_client) {
+ /* on server-side resource of lock doesn't change */
+ lock_res(res);
+ return res;
+ }
+
+ lock_bitlock(lock);
+ res = lock->l_resource;
+ lock_res(res);
+ return res;