diff options
Diffstat (limited to 'include/linux/fs.h')
| -rw-r--r-- | include/linux/fs.h | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/include/linux/fs.h b/include/linux/fs.h index c95c0807471f..811c77743dad 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -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 *); | 
