public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Fred Isaman <iisaman@netapp.com>
To: linux-nfs@vger.kernel.org
Subject: [PATCH 00/26] LAYOUT invocation v2
Date: Fri, 11 Jun 2010 03:31:27 -0400	[thread overview]
Message-ID: <1276241513-17942-1-git-send-email-iisaman@netapp.com> (raw)

This is version 2 of a patch series that limits LAYOUTGET invocation
to the beginning of the IO paths. It is intended for the pnfs_submit branch,
without reversion in a post_submit branch.

Patches 1-4 revert direct IO.  Commit is already broken, and this
series breaks them further.  The problem is that the direct IO
redefines data->wb_req and data->pages, so that it can only work with
the pnfs code if we don't look at those fields. The reverted code should
be saved somewhere.  I tend to agree with Boaz that keeping it in git is preferable, but I can supply a patch which returns the code ifdef'ed out if tht is preferred.

Patches 5-9 do some code cleanup in preperation for the real work.

Patches 10-21 implement the change.  NOTE that patch 20 changes the
calling convention of the layout drivers commit calls.  There is no
longer a universal lseg for the commit, instead each nfs_page has an
lseg attached, with NULL meaning to go through the MDS.

Patches 22-26 rework the filelayout commit function, and then do some
other code cleanup.



The basic idea of these patches is as follows:

We attempt to grab a lseg (possibly invoking LAYOUTGET) early in the
IO.  If we succeed, we refcount and stash it, using it through the
rest of the io.  If we fail, we revert to straight nfs, even if the
area becomes covered by a layout due to other io.

The tricky, though hopefully anomalous, case is when we start without
the layout, but have it at this particular stage of the IO.  We ignore
this for the moment at write_pages, which will cause block and object
to issue CB_LAYOUTRECALL.  At commit, it is tricky to handle, but
since block doesn't use commit, and file needs to handle complicated
splitting anyway, I just push all complicated decisions of splitting
commit between nfs (for IO started without layout) and pnfs to the
driver.

Fred


             reply	other threads:[~2010-06-11  7:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-11  7:31 Fred Isaman [this message]
2010-06-11  7:31 ` [PATCH 01/26] pnfs-submit: Revert "pnfs-nonfilelayout: Prelim support for non-file layout O_DIRECT" Fred Isaman
2010-06-11  7:31   ` [PATCH 02/26] pnfs-submit: Revert "pnfs: Enable O_DIRECT write path." Fred Isaman
2010-06-11  7:31     ` [PATCH 03/26] pnfs-submit: Revert "pnfs: Enable O_DIRECT read path." Fred Isaman
2010-06-11  7:31       ` [PATCH 04/26] pnfs-submit: Revert "pnfs: Add function to set up O_DIRECT I/O" Fred Isaman
2010-06-11  7:31         ` [PATCH 05/26] SQUASHME: pnfs-submit: ensure pnfs_update_layout clears lsegp on error Fred Isaman
2010-06-11  7:31           ` [PATCH 06/26] pnfs-submit: filelayout: clean and breakup nfs4_pnfs_dserver_get Fred Isaman
2010-06-11  7:31             ` [PATCH 07/26] pnfs-submit: filelayout: remove some dead code from filelayout_commit Fred Isaman
2010-06-11  7:31               ` [PATCH 08/26] pnfs-submit: remove PNFS_LAYOUTGET_ON_OPEN Fred Isaman
2010-06-11  7:31                 ` [PATCH 09/26] pnfs-submit: track the number of outstanding commits Fred Isaman
2010-06-11  7:31                   ` [PATCH 10/26] pnfs_submit: mandate basic io path operations for layout drivers Fred Isaman
2010-06-11  7:31                     ` [PATCH 11/26] pnfs_submit: expose pnfs_update_layout, put_lseg, and get_lseg functions Fred Isaman
2010-06-11  7:31                       ` [PATCH 12/26] pnfs_submit: stash and refcount lseg in read path Fred Isaman
2010-06-11  7:31                         ` [PATCH 13/26] pnfs_submit: read path changeover Fred Isaman
2010-06-11  7:31                           ` [PATCH 14/26] pnfs_submit: use fsdata to pass lseg Fred Isaman
2010-06-11  7:31                             ` [PATCH 15/26] pnfs_submit: stash and refcount lseg in write path Fred Isaman
2010-06-11  7:31                               ` [PATCH 16/26] pnfs_submit: remove pnfs_file_operations Fred Isaman
2010-06-11  7:31                                 ` [PATCH 17/26] pnfs_submit: remove pnfs_update_layout_commit Fred Isaman
2010-06-11  7:31                                   ` [PATCH 18/26] pnfs_submit: remove pnfs_writepages LAYOUTGET invocation Fred Isaman
2010-06-11  7:31                                     ` [PATCH 19/26] pnfs-submit: export some commit error handling for use by layout drivers Fred Isaman
2010-06-11  7:31                                       ` [PATCH 20/26] pnfs_submit: API change: remove pnfs_commit layoutget invocation Fred Isaman
2010-06-11  7:31                                         ` [PATCH 21/26] pnfs_submit: filelayout: rewrite filelayout_commit to use new API Fred Isaman
2010-06-11  7:31                                           ` [PATCH 22/26] pnfs_submit: remove unecessary pnfs_fl_call_data field pnfs_client Fred Isaman
2010-06-11  7:31                                             ` [PATCH 23/26] pnfs_submit: remove unecessary pnfs_fl_call_data field commit_through_mds Fred Isaman
2010-06-11  7:31                                               ` [PATCH 24/26] pnfs_submit: pnfs_update_layout can return void Fred Isaman
2010-06-11  7:31                                                 ` [PATCH 25/26] pnfs-submit: Revert "pnfs: pnfs_redirty_request" Fred Isaman
2010-06-11  7:31                                                   ` [PATCH 26/26] pnfs-submit: Reorder arguments to pnfs_update_layout Fred Isaman
2010-06-12 20:35 ` [PATCH 00/26] LAYOUT invocation v2 Benny Halevy

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=1276241513-17942-1-git-send-email-iisaman@netapp.com \
    --to=iisaman@netapp.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