]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/locks.c
locks: add a new "lm_owner_key" lock operation
[karo-tx-linux.git] / fs / locks.c
index 71d847cbbb634a797f32ae78285f91f07d1c552e..6242e0b1c69cc5c5fd1f1483d8015896ead78724 100644 (file)
@@ -521,10 +521,18 @@ locks_delete_global_locks(struct file_lock *fl)
        spin_unlock(&file_lock_lock);
 }
 
+static unsigned long
+posix_owner_key(struct file_lock *fl)
+{
+       if (fl->fl_lmops && fl->fl_lmops->lm_owner_key)
+               return fl->fl_lmops->lm_owner_key(fl);
+       return (unsigned long)fl->fl_owner;
+}
+
 static inline void
 locks_insert_global_blocked(struct file_lock *waiter)
 {
-       hash_add(blocked_hash, &waiter->fl_link, (unsigned long)waiter->fl_owner);
+       hash_add(blocked_hash, &waiter->fl_link, posix_owner_key(waiter));
 }
 
 static inline void
@@ -757,7 +765,7 @@ static struct file_lock *what_owner_is_waiting_for(struct file_lock *block_fl)
 {
        struct file_lock *fl;
 
-       hash_for_each_possible(blocked_hash, fl, fl_link, (unsigned long)block_fl->fl_owner) {
+       hash_for_each_possible(blocked_hash, fl, fl_link, posix_owner_key(block_fl)) {
                if (posix_same_owner(fl, block_fl))
                        return fl->fl_next;
        }