diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-07 16:19:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-07 16:19:36 -0400 |
commit | 5df6b8e65ad0f2eaee202ff002ac00d1ac605315 (patch) | |
tree | 2eff6606f8e39dc1fd7eb8a05feb2a9927151805 /fs/nfs/write.c | |
parent | fe21ea18c742ab0eb8f6f8ebc543374839a02a87 (diff) | |
parent | 3dce9a5c3a39a664e372886ea86c42ae7ae33dfc (diff) |
Merge branch 'nfs-for-2.6.36' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
* 'nfs-for-2.6.36' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)
NFS: NFSv4.1 is no longer a "developer only" feature
NFS: NFS_V4 is no longer an EXPERIMENTAL feature
NFS: Fix /proc/mount for legacy binary interface
NFS: Fix the locking in nfs4_callback_getattr
SUNRPC: Defer deleting the security context until gss_do_free_ctx()
SUNRPC: prevent task_cleanup running on freed xprt
SUNRPC: Reduce asynchronous RPC task stack usage
SUNRPC: Move the bound cred to struct rpc_rqst
SUNRPC: Clean up of rpc_bindcred()
SUNRPC: Move remaining RPC client related task initialisation into clnt.c
SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task
SUNRPC: Make the credential cache hashtable size configurable
SUNRPC: Store the hashtable size in struct rpc_cred_cache
NFS: Ensure the AUTH_UNIX credcache is allocated dynamically
NFS: Fix the NFS users of rpc_restart_call()
SUNRPC: The function rpc_restart_call() should return success/failure
NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks
NFSv4: Clean up the process of renewing the NFSv4 lease
NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly
NFS: nfs_rename() should not have to flush out writebacks
...
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r-- | fs/nfs/write.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 9f81bdd91c55..874972d9427c 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
@@ -700,7 +700,9 @@ int nfs_flush_incompatible(struct file *file, struct page *page) | |||
700 | req = nfs_page_find_request(page); | 700 | req = nfs_page_find_request(page); |
701 | if (req == NULL) | 701 | if (req == NULL) |
702 | return 0; | 702 | return 0; |
703 | do_flush = req->wb_page != page || req->wb_context != ctx; | 703 | do_flush = req->wb_page != page || req->wb_context != ctx || |
704 | req->wb_lock_context->lockowner != current->files || | ||
705 | req->wb_lock_context->pid != current->tgid; | ||
704 | nfs_release_request(req); | 706 | nfs_release_request(req); |
705 | if (!do_flush) | 707 | if (!do_flush) |
706 | return 0; | 708 | return 0; |
@@ -824,6 +826,7 @@ static int nfs_write_rpcsetup(struct nfs_page *req, | |||
824 | data->args.pages = data->pagevec; | 826 | data->args.pages = data->pagevec; |
825 | data->args.count = count; | 827 | data->args.count = count; |
826 | data->args.context = get_nfs_open_context(req->wb_context); | 828 | data->args.context = get_nfs_open_context(req->wb_context); |
829 | data->args.lock_context = req->wb_lock_context; | ||
827 | data->args.stable = NFS_UNSTABLE; | 830 | data->args.stable = NFS_UNSTABLE; |
828 | if (how & FLUSH_STABLE) { | 831 | if (how & FLUSH_STABLE) { |
829 | data->args.stable = NFS_DATA_SYNC; | 832 | data->args.stable = NFS_DATA_SYNC; |
@@ -1047,9 +1050,9 @@ out: | |||
1047 | void nfs_write_prepare(struct rpc_task *task, void *calldata) | 1050 | void nfs_write_prepare(struct rpc_task *task, void *calldata) |
1048 | { | 1051 | { |
1049 | struct nfs_write_data *data = calldata; | 1052 | struct nfs_write_data *data = calldata; |
1050 | struct nfs_client *clp = (NFS_SERVER(data->inode))->nfs_client; | ||
1051 | 1053 | ||
1052 | if (nfs4_setup_sequence(clp, &data->args.seq_args, | 1054 | if (nfs4_setup_sequence(NFS_SERVER(data->inode), |
1055 | &data->args.seq_args, | ||
1053 | &data->res.seq_res, 1, task)) | 1056 | &data->res.seq_res, 1, task)) |
1054 | return; | 1057 | return; |
1055 | rpc_call_start(task); | 1058 | rpc_call_start(task); |