diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-02 14:32:23 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-02 14:32:23 -0400 |
commit | 8688d9540cc6e17df4cba71615e27f04e0378fe6 (patch) | |
tree | 45ab333822188966217f6a3ec7e8289ca7eced72 /fs/nfs/write.c | |
parent | 320cd413faefe2d30f4ee9651efddec5141bc95b (diff) | |
parent | b4839ebe21fc5d543b933d83644981ea73e9ba36 (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.c | 9 |
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, | |||
1290 | static void nfs_redirty_request(struct nfs_page *req) | 1290 | static 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 | ||
1351 | static 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, |