diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-09-29 20:34:05 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-12-31 13:53:48 -0500 |
commit | af7cf057933f01dc7f33ddfb5e436ad598ed17ad (patch) | |
tree | b7a37c7c1767aa6b7fa3f9434dc56f9069031cd2 /fs/nfs/pnfs_nfs.c | |
parent | dc602dd706cb64036132a7903ead1c67d9a7bcb9 (diff) | |
download | op-kernel-dev-af7cf057933f01dc7f33ddfb5e436ad598ed17ad.zip op-kernel-dev-af7cf057933f01dc7f33ddfb5e436ad598ed17ad.tar.gz |
NFS: Allow multiple commit requests in flight per file
Allow synchronous RPC calls to wait for pending RPC calls to finish,
but also allow asynchronous ones to just fire off another commit.
With this patch, the xfstests generic/074 test completes in 226s
instead of 242s
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/pnfs_nfs.c')
-rw-r--r-- | fs/nfs/pnfs_nfs.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c index 24655b8..3c8e3a4 100644 --- a/fs/nfs/pnfs_nfs.c +++ b/fs/nfs/pnfs_nfs.c @@ -266,17 +266,14 @@ pnfs_generic_commit_pagelist(struct inode *inode, struct list_head *mds_pages, } else { nfs_retry_commit(mds_pages, NULL, cinfo, 0); pnfs_generic_retry_commit(cinfo, 0); - cinfo->completion_ops->error_cleanup(NFS_I(inode)); return -ENOMEM; } } nreq += pnfs_generic_alloc_ds_commits(cinfo, &list); - if (nreq == 0) { - cinfo->completion_ops->error_cleanup(NFS_I(inode)); + if (nreq == 0) goto out; - } atomic_add(nreq, &cinfo->mds->rpcs_out); |