]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - Documentation/filesystems/Locking
Merge tag 'for-linus-20190617' of git://git.sourceforge.jp/gitroot/uclinux-h8/linux
[linux.git] / Documentation / filesystems / Locking
index dac43557538413651c069a893d374cfd7b8dc7ab..204dd3ea36bb3a5989eda6e62c4162afed57ae94 100644 (file)
@@ -361,8 +361,6 @@ so fl_release_private called on a lease should not block.
 
 ----------------------- lock_manager_operations ---------------------------
 prototypes:
-       int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
-       unsigned long (*lm_owner_key)(struct file_lock *);
        void (*lm_notify)(struct file_lock *);  /* unblock callback */
        int (*lm_grant)(struct file_lock *, struct file_lock *, int);
        void (*lm_break)(struct file_lock *); /* break_lease callback */
@@ -371,23 +369,11 @@ prototypes:
 locking rules:
 
                        inode->i_lock   blocked_lock_lock       may block
-lm_compare_owner:      yes[1]          maybe                   no
-lm_owner_key           yes[1]          yes                     no
 lm_notify:             yes             yes                     no
 lm_grant:              no              no                      no
 lm_break:              yes             no                      no
 lm_change              yes             no                      no
 
-[1]:   ->lm_compare_owner and ->lm_owner_key are generally called with
-*an* inode->i_lock held. It may not be the i_lock of the inode
-associated with either file_lock argument! This is the case with deadlock
-detection, since the code has to chase down the owners of locks that may
-be entirely unrelated to the one on which the lock is being acquired.
-For deadlock detection however, the blocked_lock_lock is also held. The
-fact that these locks are held ensures that the file_locks do not
-disappear out from under you while doing the comparison or generating an
-owner key.
-
 --------------------------- buffer_head -----------------------------------
 prototypes:
        void (*b_end_io)(struct buffer_head *bh, int uptodate);