aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-07-02 14:32:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-07-02 14:32:23 -0400
commit8688d9540cc6e17df4cba71615e27f04e0378fe6 (patch)
tree45ab333822188966217f6a3ec7e8289ca7eced72 /fs/nfs/write.c
parent320cd413faefe2d30f4ee9651efddec5141bc95b (diff)
parentb4839ebe21fc5d543b933d83644981ea73e9ba36 (diff)
Merge tag 'nfs-for-4.2-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates from Trond Myklebust: "Highlights include: Stable patches: - Fix a crash in the NFSv4 file locking code. - Fix an fsync() regression, where we were failing to retry I/O in some circumstances. - Fix an infinite loop in NFSv4.0 OPEN stateid recovery - Fix a memory leak when an attempted pnfs fails. - Fix a memory leak in the backchannel code - Large hostnames were not supported correctly in NFSv4.1 - Fix a pNFS/flexfiles bug that was impeding error reporting on I/O. - Fix a couple of credential issues in pNFS/flexfiles Bugfixes + cleanups: - Open flag sanity checks in the NFSv4 atomic open codepath - More NFSv4 delegation related bugfixes - Various NFSv4.1 backchannel bugfixes and cleanups - Fix the NFS swap socket code - Various cleanups of the NFSv4 SETCLIENTID and EXCHANGE_ID code - Fix a UDP transport deadlock issue Features: - More RDMA client transport improvements - NFSv4.2 LAYOUTSTATS functionality for pnfs flexfiles" * tag 'nfs-for-4.2-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (87 commits) nfs: Remove invalid tk_pid from debug message nfs: Remove invalid NFS_ATTR_FATTR_V4_REFERRAL checking in nfs4_get_rootfh nfs: Drop bad comment in nfs41_walk_client_list() nfs: Remove unneeded micro checking of CONFIG_PROC_FS nfs: Don't setting FILE_CREATED flags always nfs: Use remove_proc_subtree() instead remove_proc_entry() nfs: Remove unused argument in nfs_server_set_fsinfo() nfs: Fix a memory leak when meeting an unsupported state protect nfs: take extra reference to fl->fl_file when running a LOCKU operation NFSv4: When returning a delegation, don't reclaim an incompatible open mode. NFSv4.2: LAYOUTSTATS is optional to implement NFSv4.2: Fix up a decoding error in layoutstats pNFS/flexfiles: Fix the reset of struct pgio_header when resending pNFS/flexfiles: Turn off layoutcommit for servers that don't need it pnfs/flexfiles: protect ktime manipulation with mirror lock nfs: provide pnfs_report_layoutstat when NFS42 is disabled nfs: verify open flags before allowing open nfs: always update creds in mirror, even when we have an already connected ds nfs: fix potential credential leak in ff_layout_update_mirror_cred pnfs/flexfiles: report layoutstat regularly ...
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index e6c262555e08..65869ca9c851 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1290,6 +1290,7 @@ static void nfs_initiate_write(struct nfs_pgio_header *hdr,
1290static void nfs_redirty_request(struct nfs_page *req) 1290static void nfs_redirty_request(struct nfs_page *req)
1291{ 1291{
1292 nfs_mark_request_dirty(req); 1292 nfs_mark_request_dirty(req);
1293 set_bit(NFS_CONTEXT_RESEND_WRITES, &req->wb_context->flags);
1293 nfs_unlock_request(req); 1294 nfs_unlock_request(req);
1294 nfs_end_page_writeback(req); 1295 nfs_end_page_writeback(req);
1295 nfs_release_request(req); 1296 nfs_release_request(req);
@@ -1348,11 +1349,6 @@ void nfs_commit_prepare(struct rpc_task *task, void *calldata)
1348 NFS_PROTO(data->inode)->commit_rpc_prepare(task, data); 1349 NFS_PROTO(data->inode)->commit_rpc_prepare(task, data);
1349} 1350}
1350 1351
1351static void nfs_writeback_release_common(struct nfs_pgio_header *hdr)
1352{
1353 /* do nothing! */
1354}
1355
1356/* 1352/*
1357 * Special version of should_remove_suid() that ignores capabilities. 1353 * Special version of should_remove_suid() that ignores capabilities.
1358 */ 1354 */
@@ -1556,7 +1552,7 @@ int nfs_initiate_commit(struct rpc_clnt *clnt, struct nfs_commit_data *data,
1556 /* Set up the initial task struct. */ 1552 /* Set up the initial task struct. */
1557 nfs_ops->commit_setup(data, &msg); 1553 nfs_ops->commit_setup(data, &msg);
1558 1554
1559 dprintk("NFS: %5u initiated commit call\n", data->task.tk_pid); 1555 dprintk("NFS: initiated commit call\n");
1560 1556
1561 nfs4_state_protect(NFS_SERVER(data->inode)->nfs_client, 1557 nfs4_state_protect(NFS_SERVER(data->inode)->nfs_client,
1562 NFS_SP4_MACH_CRED_COMMIT, &task_setup_data.rpc_client, &msg); 1558 NFS_SP4_MACH_CRED_COMMIT, &task_setup_data.rpc_client, &msg);
@@ -2013,7 +2009,6 @@ static const struct nfs_rw_ops nfs_rw_write_ops = {
2013 .rw_mode = FMODE_WRITE, 2009 .rw_mode = FMODE_WRITE,
2014 .rw_alloc_header = nfs_writehdr_alloc, 2010 .rw_alloc_header = nfs_writehdr_alloc,
2015 .rw_free_header = nfs_writehdr_free, 2011 .rw_free_header = nfs_writehdr_free,
2016 .rw_release = nfs_writeback_release_common,
2017 .rw_done = nfs_writeback_done, 2012 .rw_done = nfs_writeback_done,
2018 .rw_result = nfs_writeback_result, 2013 .rw_result = nfs_writeback_result,
2019 .rw_initiate = nfs_initiate_write, 2014 .rw_initiate = nfs_initiate_write,