diff options
| author | David S. Miller <davem@davemloft.net> | 2010-09-09 02:49:04 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-09-09 02:49:04 -0400 |
| commit | e199e6136ce6b151e6638ae93dca60748424d900 (patch) | |
| tree | 0d66e0b5d227c36b005e4f5537f4bbcfc6ed4904 /fs/nfs/write.c | |
| parent | 972c40b5bee429c84ba727f8ac0a08292bc5dc3d (diff) | |
| parent | d56557af19867edb8c0e96f8e26399698a08857f (diff) | |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
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); |
