diff options
Diffstat (limited to 'fs/nfs/write.c')
| -rw-r--r-- | fs/nfs/write.c | 19 | 
1 files changed, 9 insertions, 10 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 53211838f72a..abb2c8a3be42 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -24,7 +24,7 @@  #include <linux/freezer.h>  #include <linux/wait.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h>  #include "delegation.h"  #include "internal.h" @@ -728,8 +728,6 @@ static void nfs_inode_remove_request(struct nfs_page *req)  		if (likely(head->wb_page && !PageSwapCache(head->wb_page))) {  			set_page_private(head->wb_page, 0);  			ClearPagePrivate(head->wb_page); -			smp_mb__after_atomic(); -			wake_up_page(head->wb_page, PG_private);  			clear_bit(PG_MAPPED, &head->wb_flags);  		}  		nfsi->nrequests--; @@ -1151,8 +1149,7 @@ int nfs_flush_incompatible(struct file *file, struct page *page)  		if (l_ctx && flctx &&  		    !(list_empty_careful(&flctx->flc_posix) &&  		      list_empty_careful(&flctx->flc_flock))) { -			do_flush |= l_ctx->lockowner.l_owner != current->files -				|| l_ctx->lockowner.l_pid != current->tgid; +			do_flush |= l_ctx->lockowner != current->files;  		}  		nfs_release_request(req);  		if (!do_flush) @@ -1787,8 +1784,9 @@ static void nfs_commit_release_pages(struct nfs_commit_data *data)  			(long long)req_offset(req));  		if (status < 0) {  			nfs_context_set_write_error(req->wb_context, status); -			nfs_inode_remove_request(req); -			dprintk(", error = %d\n", status); +			if (req->wb_page) +				nfs_inode_remove_request(req); +			dprintk_cont(", error = %d\n", status);  			goto next;  		} @@ -1796,12 +1794,13 @@ static void nfs_commit_release_pages(struct nfs_commit_data *data)  		 * returned by the server against all stored verfs. */  		if (!nfs_write_verifier_cmp(&req->wb_verf, &data->verf.verifier)) {  			/* We have a match */ -			nfs_inode_remove_request(req); -			dprintk(" OK\n"); +			if (req->wb_page) +				nfs_inode_remove_request(req); +			dprintk_cont(" OK\n");  			goto next;  		}  		/* We have a mismatch. Write the page again */ -		dprintk(" mismatch\n"); +		dprintk_cont(" mismatch\n");  		nfs_mark_request_dirty(req);  		set_bit(NFS_CONTEXT_RESEND_WRITES, &req->wb_context->flags);  	next:  | 
