Merge branch 'akpm' (patches from Andrew)
[sfrench/cifs-2.6.git] / include / linux / fs.h
index c95c0807471fd178c5d943c315fda2aab0f993b8..811c77743dad2870282e6c3c85e8f238f8643767 100644 (file)
@@ -1044,10 +1044,15 @@ bool opens_in_grace(struct net *);
  * Obviously, the last two criteria only matter for POSIX locks.
  */
 struct file_lock {
-       struct file_lock *fl_next;      /* singly linked list for this inode  */
+       struct file_lock *fl_blocker;   /* The lock, that is blocking us */
        struct list_head fl_list;       /* link into file_lock_context */
        struct hlist_node fl_link;      /* node in global lists */
-       struct list_head fl_block;      /* circular list of blocked processes */
+       struct list_head fl_blocked_requests;   /* list of requests with
+                                                * ->fl_blocker pointing here
+                                                */
+       struct list_head fl_blocked_member;     /* node in
+                                                * ->fl_blocker->fl_blocked_requests
+                                                */
        fl_owner_t fl_owner;
        unsigned int fl_flags;
        unsigned char fl_type;
@@ -1119,7 +1124,7 @@ extern void locks_remove_file(struct file *);
 extern void locks_release_private(struct file_lock *);
 extern void posix_test_lock(struct file *, struct file_lock *);
 extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
-extern int posix_unblock_lock(struct file_lock *);
+extern int locks_delete_block(struct file_lock *);
 extern int vfs_test_lock(struct file *, struct file_lock *);
 extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
 extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
@@ -1209,7 +1214,7 @@ static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
        return -ENOLCK;
 }
 
-static inline int posix_unblock_lock(struct file_lock *waiter)
+static inline int locks_delete_block(struct file_lock *waiter)
 {
        return -ENOENT;
 }
@@ -2021,7 +2026,7 @@ static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
                .ki_filp = filp,
                .ki_flags = iocb_flags(filp),
                .ki_hint = ki_hint_validate(file_write_hint(filp)),
-               .ki_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 0),
+               .ki_ioprio = get_current_ioprio(),
        };
 }
 
@@ -3264,8 +3269,12 @@ extern int generic_check_addressable(unsigned, u64);
 extern int buffer_migrate_page(struct address_space *,
                                struct page *, struct page *,
                                enum migrate_mode);
+extern int buffer_migrate_page_norefs(struct address_space *,
+                               struct page *, struct page *,
+                               enum migrate_mode);
 #else
 #define buffer_migrate_page NULL
+#define buffer_migrate_page_norefs NULL
 #endif
 
 extern int setattr_prepare(struct dentry *, struct iattr *);