On May 6, 2014, at 9:28 AM, Weston Andros Adamson <dros@xxxxxxxxxxxxxxx> wrote: > On May 6, 2014, at 9:12 AM, Anna Schumaker <Anna.Schumaker@xxxxxxxxxx> wrote: > >> I noticed that much of the read and write code was almost identical, with >> only minor differences in argument types and names. These patches seek to >> unify these two codepaths wherever possible in order to make future changes >> easier. >> >> Table of contents: >> Patches 01 - 05: Set up common data structures. >> Patches 06 - 10: Set up a shared rpc_call_ops struct. >> Patches 11 - 15: Set up a shared nfs_pageio_ops struct. >> >> Some of the commit setup was moved into common code, but I'm willing to >> move this back into write.c if this looks to be a problem. >> >> Future work: >> I have rough pNFS patches to combine the read and write paths in >> pnfs.c. They apply on top of Dros' multiple requests work and >> should get more testing before I submit. >> >> Testing: >> I tested every version of NFS using the cthon and xfs tests without >> hitting anything new. Any extra testing would be great seeing how >> the read and write paths are vitally important. >> >> Changes in v3: >> Instead of creating a new "pageio.c" file, I now put the combined >> code into pagelist.c (good luck, Dros!) > > I’ll merge into my pgio branch later this week and repost my patchset. > > Thanks! > -dros I’ve successfully merged my patches on top of your rebased patches, running tests since yesterday. I’ll post soon. -dros > >> >> I also renamed a few functions, and did a better job checking what >> pagelist.c functions can now be static. >> >> Questions? Comments? Thoughts? >> >> Anna >> >> >> Anna Schumaker (17): >> NFS: Create a common argument structure for reads and writes >> NFS: Create a common results structure for reads and writes >> NFS: Create a common read and write data struct >> NFS: Create a common read and write header struct >> NFS: Move the write verifier into the nfs_pgio_header >> NFS: Create a common pgio_alloc and pgio_release function >> NFS: Create a common rw_header_alloc and rw_header_free function >> NFS: Create a common pgio_rpc_prepare function >> NFS: Create a common nfs_pgio_result_common function >> NFS: Create a common rpc_call_ops struct >> NFS: Create a common rpcsetup function for reads and writes >> NFS: Create a common pgio_error function >> NFS: Create a generic_pgio function >> NFS: Create a common initiate_pgio() function >> NFS: Create a common multiple_pgios() function >> NFS: Create a common generic_pg_pgios() >> NFS: Create a common nfs_pageio_ops struct >> >> fs/nfs/blocklayout/blocklayout.c | 22 +- >> fs/nfs/direct.c | 4 +- >> fs/nfs/internal.h | 29 +-- >> fs/nfs/nfs2xdr.c | 14 +- >> fs/nfs/nfs3proc.c | 19 +- >> fs/nfs/nfs3xdr.c | 16 +- >> fs/nfs/nfs4_fs.h | 4 +- >> fs/nfs/nfs4filelayout.c | 40 ++-- >> fs/nfs/nfs4proc.c | 52 ++--- >> fs/nfs/nfs4trace.h | 8 +- >> fs/nfs/nfs4xdr.c | 19 +- >> fs/nfs/objlayout/objio_osd.c | 6 +- >> fs/nfs/objlayout/objlayout.c | 16 +- >> fs/nfs/objlayout/objlayout.h | 8 +- >> fs/nfs/pagelist.c | 406 ++++++++++++++++++++++++++++++++++++- >> fs/nfs/pnfs.c | 46 ++--- >> fs/nfs/pnfs.h | 10 +- >> fs/nfs/proc.c | 19 +- >> fs/nfs/read.c | 348 +++----------------------------- >> fs/nfs/write.c | 425 +++++---------------------------------- >> include/linux/nfs_fs.h | 2 - >> include/linux/nfs_page.h | 13 ++ >> include/linux/nfs_xdr.h | 95 +++------ >> 23 files changed, 674 insertions(+), 947 deletions(-) >> >> -- >> 1.9.2 >> > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html