Linux-NFS Archive on lore.kernel.org
 help / color / Atom feed
From: Olga Kornievskaia <aglo@umich.edu>
To: Trond Myklebust <trondmy@hammerspace.com>
Cc: "linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 04/19] pnfs: Add layout driver flag PNFS_LAYOUTGET_ON_OPEN
Date: Fri, 6 Sep 2019 16:17:03 -0400
Message-ID: <CAN-5tyE0G-0uHOtvxY7d7VROFZFdNwduUydHcu-cwaQYFD5eiw@mail.gmail.com> (raw)
In-Reply-To: <3a4eafca05bfa82c7993990681f5184c0c3d09d3.camel@hammerspace.com>

On Thu, May 31, 2018 at 8:41 AM Trond Myklebust <trondmy@hammerspace.com> wrote:
>
> On Wed, 2018-05-30 at 16:10 -0400, Olga Kornievskaia wrote:
> > Hi Trond,
> >
> > This feature is enabled for Flexfiles layout type. Is there a reason
> > that it shouldn't be generic for all pnfs?
>
> Yes and no. It relies on use of the "current stateid" feature, which
> has not previously seen heavy use, and the ability of the pNFS server
> to handle layoutget races correctly (when the client sends 2 layoutget
> requests in parallel, both using the open stateid). If the server is
> invalidating one of the resulting layout stateids as it should, then it
> had better either have a good fencing mechanism, or it must recall that
> layout stateid before handing out the second layout.
>
> For that reason, I'd like to ensure that we at least test the existing
> pNFS implementations to ensure we don't see regressions before we
> enable the feature.

Hi Trond,

I'm getting back to trying to add LAYOUTGET to the OPEN compound for
the file layout type. I'm looking at your reply and trying to figure
out what kind of testing I should try to do. You mention a race where
a client sends 2 layoutget requests in parallel. You say "using the
open stateid", but when the LAYOUTGET is added to the OPEN, it'll be
using as you said current stateid. So is the problem sending 2
concurrent OPENs for the same file (same owner)? Then server should
issue the reply to the 1st, then a layout recall and reply to the 2nd?

But for the testing is your suggestion to instrument sending 2
concurrent opens with the new code and see that happens?

Thank you.

> > On Wed, May 30, 2018 at 2:05 PM, Trond Myklebust <trondmy@gmail.com>
> > wrote:
> > > From: Fred Isaman <fred.isaman@gmail.com>
> > >
> > > Driver can set flag to allow LAYOUTGET to be sent with OPEN.
> > >
> > > Signed-off-by: Fred Isaman <fred.isaman@gmail.com>
> > > Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
> > > ---
> > >  fs/nfs/flexfilelayout/flexfilelayout.c | 1 +
> > >  fs/nfs/pnfs.h                          | 1 +
> > >  2 files changed, 2 insertions(+)
> > >
> > > diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c
> > > b/fs/nfs/flexfilelayout/flexfilelayout.c
> > > index c75ad982bcfc..3ae038d9c292 100644
> > > --- a/fs/nfs/flexfilelayout/flexfilelayout.c
> > > +++ b/fs/nfs/flexfilelayout/flexfilelayout.c
> > > @@ -2347,6 +2347,7 @@ static struct pnfs_layoutdriver_type
> > > flexfilelayout_type = {
> > >         .id                     = LAYOUT_FLEX_FILES,
> > >         .name                   = "LAYOUT_FLEX_FILES",
> > >         .owner                  = THIS_MODULE,
> > > +       .flags                  = PNFS_LAYOUTGET_ON_OPEN,
> > >         .set_layoutdriver       = ff_layout_set_layoutdriver,
> > >         .alloc_layout_hdr       = ff_layout_alloc_layout_hdr,
> > >         .free_layout_hdr        = ff_layout_free_layout_hdr,
> > > diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
> > > index daf6cbf5c15f..f71a55f11b97 100644
> > > --- a/fs/nfs/pnfs.h
> > > +++ b/fs/nfs/pnfs.h
> > > @@ -110,6 +110,7 @@ enum layoutdriver_policy_flags {
> > >         PNFS_LAYOUTRET_ON_SETATTR       = 1 << 0,
> > >         PNFS_LAYOUTRET_ON_ERROR         = 1 << 1,
> > >         PNFS_READ_WHOLE_PAGE            = 1 << 2,
> > > +       PNFS_LAYOUTGET_ON_OPEN          = 1 << 3,
> > >  };
> > >
> > >  struct nfs4_deviceid_node;
> > > --
> > > 2.17.0
> > >
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe linux-
> > > nfs" in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-nfs"
> > in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> Trond Myklebust
> Linux NFS client maintainer, Hammerspace
> trond.myklebust@hammerspace.com
>

  reply index

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-30 18:05 [PATCH 00/19] Layoutget on OPEN Trond Myklebust
2018-05-30 18:05 ` [PATCH 01/19] pnfs: Remove redundant assignment from nfs4_proc_layoutget() Trond Myklebust
2018-05-30 18:05   ` [PATCH 02/19] pnfs: Store return value of decode_layoutget for later processing Trond Myklebust
2018-05-30 18:05     ` [PATCH 03/19] NFS4: move ctx into nfs4_run_open_task Trond Myklebust
2018-05-30 18:05       ` [PATCH 04/19] pnfs: Add layout driver flag PNFS_LAYOUTGET_ON_OPEN Trond Myklebust
2018-05-30 18:05         ` [PATCH 05/19] pnfs: refactor send_layoutget Trond Myklebust
2018-05-30 18:05           ` [PATCH 06/19] pnfs: move allocations out of nfs4_proc_layoutget Trond Myklebust
2018-05-30 18:05             ` [PATCH 07/19] pnfs: Add conditional encode/decode of LAYOUTGET within OPEN compound Trond Myklebust
2018-05-30 18:05               ` [PATCH 08/19] pnfs: Move nfs4_opendata into nfs4_fs.h Trond Myklebust
2018-05-30 18:05                 ` [PATCH 09/19] pnfs: Change pnfs_alloc_init_layoutget_args call signature Trond Myklebust
2018-05-30 18:05                   ` [PATCH 10/19] pnfs: Add LAYOUTGET to OPEN of a new file Trond Myklebust
2018-05-30 18:05                     ` [PATCH 11/19] pnfs: Add LAYOUTGET to OPEN of an existing file Trond Myklebust
2018-05-30 18:05                       ` [PATCH 12/19] pnfs: Stop attempting LAYOUTGET on OPEN on failure Trond Myklebust
2018-05-30 18:05                         ` [PATCH 13/19] pnfs: Add barrier to prevent lgopen using LAYOUTGET during recall Trond Myklebust
2018-05-30 18:05                           ` [PATCH 14/19] pnfs: Fix manipulation of NFS_LAYOUT_FIRST_LAYOUTGET Trond Myklebust
2018-05-30 18:05                             ` [PATCH 15/19] NFSv4/pnfs: Ensure pnfs_parse_lgopen() won't try to parse uninitialised data Trond Myklebust
2018-05-30 18:05                               ` [PATCH 16/19] NFSv4/pnfs: Don't switch off layoutget-on-open for transient errors Trond Myklebust
2018-05-30 18:05                                 ` [PATCH 17/19] pNFS: Don't send LAYOUTGET on OPEN for read, if we already have cached data Trond Myklebust
2018-05-30 18:05                                   ` [PATCH 18/19] pnfs: Don't call commit on failed layoutget-on-open Trond Myklebust
2018-05-30 18:05                                     ` [PATCH 19/19] pnfs: Don't release the sequence slot until we've processed layoutget on open Trond Myklebust
2018-05-30 20:10         ` [PATCH 04/19] pnfs: Add layout driver flag PNFS_LAYOUTGET_ON_OPEN Olga Kornievskaia
2018-05-31 12:40           ` Trond Myklebust
2019-09-06 20:17             ` Olga Kornievskaia [this message]
2018-05-30 18:25 ` [PATCH 00/19] Layoutget on OPEN Olga Kornievskaia
2018-05-30 18:36   ` Trond Myklebust
2018-05-30 18:37     ` Olga Kornievskaia
2018-05-30 19:27       ` Olga Kornievskaia
2018-05-30 19:29         ` Olga Kornievskaia
2018-05-30 19:47           ` Olga Kornievskaia
2018-05-30 22:33             ` Trond Myklebust
2018-05-31 18:59 ` bfields
2018-06-01  0:28   ` Trond Myklebust

Reply instructions:

You may reply publically 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=CAN-5tyE0G-0uHOtvxY7d7VROFZFdNwduUydHcu-cwaQYFD5eiw@mail.gmail.com \
    --to=aglo@umich.edu \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trondmy@hammerspace.com \
    /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

Linux-NFS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-nfs/0 linux-nfs/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-nfs linux-nfs/ https://lore.kernel.org/linux-nfs \
		linux-nfs@vger.kernel.org linux-nfs@archiver.kernel.org
	public-inbox-index linux-nfs

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-nfs


AGPL code for this site: git clone https://public-inbox.org/ public-inbox