locks: convert lease handling to file_lock_context
[linux-2.6-block.git] / include / linux / fs.h
index 571f113588e9882f3d43a31b6335c7d82bc49ca9..2ddec3cf81b92608f92f8ae57aa9306d57b10d57 100644 (file)
@@ -969,6 +969,7 @@ struct file_lock {
 struct file_lock_context {
        struct list_head        flc_flock;
        struct list_head        flc_posix;
+       struct list_head        flc_lease;
 };
 
 /* The following constant reflects the upper bound of the file/locking space */
@@ -1990,7 +1991,7 @@ static inline int break_lease(struct inode *inode, unsigned int mode)
         * end up racing with tasks trying to set a new lease on this file.
         */
        smp_mb();
-       if (inode->i_flock)
+       if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
                return __break_lease(inode, mode, FL_LEASE);
        return 0;
 }
@@ -2003,7 +2004,7 @@ static inline int break_deleg(struct inode *inode, unsigned int mode)
         * end up racing with tasks trying to set a new lease on this file.
         */
        smp_mb();
-       if (inode->i_flock)
+       if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
                return __break_lease(inode, mode, FL_DELEG);
        return 0;
 }