linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anna Schumaker <Anna.Schumaker@netapp.com>
To: <Trond.Myklebust@primarydata.com>, <linux-nfs@vger.kernel.org>
Subject: [PATCH 00/17] NFS: Create a common path used by reads and writes
Date: Thu, 17 Apr 2014 17:09:24 -0400	[thread overview]
Message-ID: <1397768981-12856-1-git-send-email-Anna.Schumaker@Netapp.com> (raw)

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 that don't currently apply.  They need
	more testing, and I figured this was enough code churn already.

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.

Questions?  Comments?  Death threats?

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 pgio_common_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 instance

 fs/nfs/Makefile                  |   2 +-
 fs/nfs/blocklayout/blocklayout.c |  22 +-
 fs/nfs/direct.c                  |   4 +-
 fs/nfs/internal.h                |  31 ++-
 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/pageio.c                  | 386 +++++++++++++++++++++++++++++++++++
 fs/nfs/pagelist.c                |   2 +
 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           |   3 +-
 include/linux/nfs_page.h         |  13 ++
 include/linux/nfs_xdr.h          |  94 +++------
 25 files changed, 661 insertions(+), 946 deletions(-)
 create mode 100644 fs/nfs/pageio.c

-- 
1.9.2


             reply	other threads:[~2014-04-17 21:09 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-17 21:09 Anna Schumaker [this message]
2014-04-17 21:09 ` [PATCH 01/17] NFS: Create a common argument structure for reads and writes Anna Schumaker
2014-04-18 13:56   ` Christoph Hellwig
2014-04-21 12:44     ` Anna Schumaker
2014-04-17 21:09 ` [PATCH 02/17] NFS: Create a common results " Anna Schumaker
2014-04-18 13:57   ` Christoph Hellwig
2014-04-21 12:45     ` Anna Schumaker
2014-04-17 21:09 ` [PATCH 03/17] NFS: Create a common read and write data struct Anna Schumaker
2014-04-18 14:00   ` Christoph Hellwig
2014-04-17 21:09 ` [PATCH 04/17] NFS: Create a common read and write header struct Anna Schumaker
2014-04-18 14:01   ` Christoph Hellwig
2014-04-17 21:09 ` [PATCH 05/17] NFS: Move the write verifier into the nfs_pgio_header Anna Schumaker
2014-04-18 14:02   ` Christoph Hellwig
2014-04-17 21:09 ` [PATCH 06/17] NFS: Create a common pgio_alloc and pgio_release function Anna Schumaker
2014-04-18 14:03   ` Christoph Hellwig
2014-04-17 21:09 ` [PATCH 07/17] NFS: Create a common rw_header_alloc and rw_header_free function Anna Schumaker
2014-04-21 13:32   ` Christoph Hellwig
2014-04-21 13:52     ` Anna Schumaker
2014-04-21 16:24       ` Anna Schumaker
2014-04-25 12:12         ` Christoph Hellwig
2014-04-25 13:02           ` Anna Schumaker
2014-04-17 21:09 ` [PATCH 08/17] NFS: Create a common pgio_rpc_prepare function Anna Schumaker
2014-04-17 21:09 ` [PATCH 09/17] NFS: Create a common nfs_pgio_result_common function Anna Schumaker
2014-04-17 21:09 ` [PATCH 10/17] NFS: Create a common rpc_call_ops struct Anna Schumaker
2014-04-17 21:09 ` [PATCH 11/17] NFS: Create a common rpcsetup function for reads and writes Anna Schumaker
2014-04-17 21:09 ` [PATCH 12/17] NFS: Create a common pgio_error function Anna Schumaker
2014-04-17 21:09 ` [PATCH 13/17] NFS: Create a generic_pgio function Anna Schumaker
2014-04-17 21:09 ` [PATCH 14/17] NFS: Create a common initiate_pgio() function Anna Schumaker
2014-04-17 21:09 ` [PATCH 15/17] NFS: Create a common multiple_pgios() function Anna Schumaker
2014-04-17 21:09 ` [PATCH 16/17] NFS: Create a common generic_pg_pgios() Anna Schumaker
2014-04-17 21:09 ` [PATCH 17/17] NFS: Create a common nfs_pageio_ops struct Anna Schumaker
2014-04-21  6:42 ` [PATCH 00/17] NFS: Create a common path used by reads and writes Christoph Hellwig
2014-04-21 12:46   ` Anna Schumaker
2014-04-21 13:09     ` Christoph Hellwig
2014-04-23 12:55 ` Boaz Harrosh
2014-04-23 13:15   ` Boaz Harrosh
2014-04-23 13:42     ` Weston Andros Adamson
2014-04-23 13:51       ` Anna Schumaker
2014-04-23 13:59         ` Boaz Harrosh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1397768981-12856-1-git-send-email-Anna.Schumaker@Netapp.com \
    --to=anna.schumaker@netapp.com \
    --cc=Trond.Myklebust@primarydata.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).