Linux NFS development
 help / color / mirror / Atom feed
* [PATCH v5 00/51] Add Flexfile Layout Module
@ 2015-01-22 23:35 Tom Haynes
  2015-01-22 23:35 ` [PATCH v5 01/51] pnfs: Prepare for flexfiles by pulling out common code Tom Haynes
                   ` (51 more replies)
  0 siblings, 52 replies; 57+ messages in thread
From: Tom Haynes @ 2015-01-22 23:35 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: Linux NFS Mailing list

This patchset introduces the Flexfile Layout Module for the
client.

It will correspond to draft 5
(http://tools.ietf.org/id/draft-ietf-nfsv4-flex-files-05.txt)
of the Parallel NFS (pNFS) Flexible File Layout
(https://datatracker.ietf.org/doc/draft-ietf-nfsv4-flex-files/).

Note: The major change from version 4 was the XDR change
from a cred to a stringified user and group principal
in the layout.

This version has been rebased to v3.19-rc5 and is ready
for inclusion in 3.20.

The [flexfiles] branch of

git://git.linux-nfs.org/projects/loghyr/linux-nfs.git

also has this code.

Peng Tao (36):
  nfs41: pull data server cache from file layout to generic pnfs
  nfs41: pull decode_ds_addr from file layout to generic pnfs
  nfs41: pull nfs4_ds_connect from file layout to generic pnfs
  nfs41: allow LD to choose DS connection auth flavor
  nfs41: move file layout macros to generic pnfs
  nfsv3: introduce nfs3_set_ds_client
  nfs41: allow LD to choose DS connection version/minor_version
  nfs41: create NFSv3 DS connection if specified
  nfs: allow different protocol in nfs_initiate_commit
  nfs4: pass slot table to nfs40_setup_sequence
  nfs4: export nfs4_sequence_done
  nfs: allow to specify cred in nfs_initiate_pgio
  nfs: set hostname when creating nfsv3 ds connection
  nfs/flexclient: export pnfs_layoutcommit_inode
  nfs41: close a small race window when adding new layout to global list
  nfs41: serialize first layoutget of a file
  nfs: save server READ/WRITE/COMMIT status
  nfs41: pass iomode through layoutreturn args
  nfs41: make a helper function to send layoutreturn
  nfs41: add a helper to mark layout for return
  nfs41: don't use a layout if it is marked for returning
  nfs41: send layoutreturn in last put_lseg
  nfs41: clear NFS_LAYOUT_RETURN if layoutreturn is sent or failed to
    send
  nfs/filelayout: use pnfs_error_mark_layout_for_return
  nfs41: add a debug warning if we destroy an unempty layout
  nfs: only reset desc->pg_mirror_idx when mirroring is supported
  nfs: add nfs_pgio_current_mirror helper
  pnfs: allow LD to ask to resend read through pnfs
  nfs41: add range to layoutreturn args
  nfs41: allow async version layoutreturn
  nfs41: introduce NFS_LAYOUT_RETURN_BEFORE_CLOSE
  nfs/flexfiles: send layoutreturn before freeing lseg
  nfs41: add NFS_LAYOUT_RETRY_LAYOUTGET to layout header flags
  nfs: add a helper to set NFS_ODIRECT_RESCHED_WRITES to direct writes
  nfs41: wait for LAYOUTRETURN before retrying LAYOUTGET
  nfs: count DIO good bytes correctly with mirroring

Tom Haynes (5):
  pnfs: Prepare for flexfiles by pulling out common code
  pnfs: Do not grab the commit_info lock twice when rescheduling writes
  pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio
  pnfs/flexfiles: Add the FlexFile Layout Driver
  pnfs: Update documentation on the Layout Drivers

Trond Myklebust (1):
  NFSv4.1/NFSv3: Add pNFS callbacks for nfs3_(read|write|commit)_done()

Weston Andros Adamson (9):
  sunrpc: add rpc_count_iostats_idx
  nfs: introduce pg_cleanup op for pgio descriptors
  pnfs: release lseg in pnfs_generic_pg_cleanup
  nfs: handle overlapping reqs in lock_and_join
  nfs: rename pgio header ds_idx to ds_commit_idx
  pnfs: pass ds_commit_idx through the commit path
  nfs: add mirroring support to pgio layer
  nfs: mirroring support for direct io
  pnfs: fail comparison when bucket verifier not set

 Documentation/filesystems/nfs/pnfs.txt    |   13 +-
 fs/nfs/Kconfig                            |    5 +
 fs/nfs/Makefile                           |    3 +-
 fs/nfs/blocklayout/blocklayout.c          |    2 +
 fs/nfs/direct.c                           |  112 +-
 fs/nfs/filelayout/filelayout.c            |  315 +-----
 fs/nfs/filelayout/filelayout.h            |   40 -
 fs/nfs/filelayout/filelayoutdev.c         |  469 +--------
 fs/nfs/flexfilelayout/Makefile            |    5 +
 fs/nfs/flexfilelayout/flexfilelayout.c    | 1571 +++++++++++++++++++++++++++++
 fs/nfs/flexfilelayout/flexfilelayout.h    |  155 +++
 fs/nfs/flexfilelayout/flexfilelayoutdev.c |  552 ++++++++++
 fs/nfs/idmap.c                            |    3 +-
 fs/nfs/internal.h                         |   31 +-
 fs/nfs/nfs2xdr.c                          |   10 +-
 fs/nfs/nfs3_fs.h                          |    2 +
 fs/nfs/nfs3client.c                       |   41 +
 fs/nfs/nfs3proc.c                         |    9 +
 fs/nfs/nfs3super.c                        |    2 +-
 fs/nfs/nfs3xdr.c                          |    3 +
 fs/nfs/nfs4_fs.h                          |    6 +
 fs/nfs/nfs4client.c                       |    7 +-
 fs/nfs/nfs4proc.c                         |   48 +-
 fs/nfs/nfs4xdr.c                          |    9 +-
 fs/nfs/objlayout/objio_osd.c              |    5 +-
 fs/nfs/pagelist.c                         |  294 +++++-
 fs/nfs/pnfs.c                             |  419 ++++++--
 fs/nfs/pnfs.h                             |  120 ++-
 fs/nfs/pnfs_nfs.c                         |  808 +++++++++++++++
 fs/nfs/read.c                             |   33 +-
 fs/nfs/write.c                            |   52 +-
 include/linux/nfs4.h                      |    1 +
 include/linux/nfs_fs_sb.h                 |    9 +-
 include/linux/nfs_idmap.h                 |    2 +
 include/linux/nfs_page.h                  |   22 +-
 include/linux/nfs_xdr.h                   |    6 +-
 include/linux/sunrpc/metrics.h            |    2 +
 net/sunrpc/stats.c                        |   26 +-
 38 files changed, 4194 insertions(+), 1018 deletions(-)
 create mode 100644 fs/nfs/flexfilelayout/Makefile
 create mode 100644 fs/nfs/flexfilelayout/flexfilelayout.c
 create mode 100644 fs/nfs/flexfilelayout/flexfilelayout.h
 create mode 100644 fs/nfs/flexfilelayout/flexfilelayoutdev.c
 create mode 100644 fs/nfs/pnfs_nfs.c

-- 
1.9.3


^ permalink raw reply	[flat|nested] 57+ messages in thread
* Re: [PATCH v5 00/51] Add Flexfile Layout Module
@ 2015-01-24 14:37 Peng Tao
  2015-01-24 18:49 ` Christoph Hellwig
  0 siblings, 1 reply; 57+ messages in thread
From: Peng Tao @ 2015-01-24 14:37 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Trond Myklebust, Linux NFS Mailing list, Tom Haynes

oops, sorry for editing the mail subject... It was supposed to reply
to your email "Re: [PATCH v5 00/51] Add Flexfile Layout Module"

On Sat, Jan 24, 2015 at 10:33 PM, Peng Tao <tao.peng@primarydata.com> wrote:
> Does following patch fix the warning and hang for you?
> I tested it locally on top of your flexfiles+pnfsd branch (tip 4f7961eb6) and xfstest generic/001 passed.
>
> Cheers,
> Tao
>
> From 47bc1a0ffc586ea96c99e453efd7e2435454b486 Mon Sep 17 00:00:00 2001
> From: Peng Tao <tao.peng@primarydata.com>
> Date: Sat, 24 Jan 2015 22:14:52 +0800
> Subject: [PATCH] nfs41: .init_read and .init_write can be called with valid pg_lseg
>
> With pgio refactoring in v3.15, .init_read and .init_write can be
> called with valid pgio->pg_lseg. file layout was fixed at that time
> by commit c6194271f (pnfs: filelayout: support non page aligned
> layouts). But the generic helper still needs to be fixed.
>
> Cc: stable@vger.kernel.org # 3.15+
> Signed-off-by: Peng Tao <tao.peng@primarydata.com>
> ---
>  fs/nfs/pnfs.c | 41 ++++++++++++++++++++---------------------
>  1 file changed, 20 insertions(+), 21 deletions(-)
>
> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> index 0fb0f19..c7be9b9 100644
> --- a/fs/nfs/pnfs.c
> +++ b/fs/nfs/pnfs.c
> @@ -1711,19 +1711,19 @@ pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *r
>  {
>         u64 rd_size = req->wb_bytes;
>
> -       WARN_ON_ONCE(pgio->pg_lseg != NULL);
> -
> -       if (pgio->pg_dreq == NULL)
> -               rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
> -       else
> -               rd_size = nfs_dreq_bytes_left(pgio->pg_dreq);
> -
> -       pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> -                                          req->wb_context,
> -                                          req_offset(req),
> -                                          rd_size,
> -                                          IOMODE_READ,
> -                                          GFP_KERNEL);
> +       if (pgio->pg_lseg == NULL) {
> +               if (pgio->pg_dreq == NULL)
> +                       rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
> +               else
> +                       rd_size = nfs_dreq_bytes_left(pgio->pg_dreq);
> +
> +               pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> +                                                  req->wb_context,
> +                                                  req_offset(req),
> +                                                  rd_size,
> +                                                  IOMODE_READ,
> +                                                  GFP_KERNEL);
> +       }
>         /* If no lseg, fall back to read through mds */
>         if (pgio->pg_lseg == NULL)
>                 nfs_pageio_reset_read_mds(pgio);
> @@ -1735,14 +1735,13 @@ void
>  pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio,
>                            struct nfs_page *req, u64 wb_size)
>  {
> -       WARN_ON_ONCE(pgio->pg_lseg != NULL);
> -
> -       pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> -                                          req->wb_context,
> -                                          req_offset(req),
> -                                          wb_size,
> -                                          IOMODE_RW,
> -                                          GFP_NOFS);
> +       if (pgio->pg_lseg == NULL)
> +               pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> +                                                  req->wb_context,
> +                                                  req_offset(req),
> +                                                  wb_size,
> +                                                  IOMODE_RW,
> +                                                  GFP_NOFS);
>         /* If no lseg, fall back to write through mds */
>         if (pgio->pg_lseg == NULL)
>                 nfs_pageio_reset_write_mds(pgio);
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2015-01-24 18:49 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-22 23:35 [PATCH v5 00/51] Add Flexfile Layout Module Tom Haynes
2015-01-22 23:35 ` [PATCH v5 01/51] pnfs: Prepare for flexfiles by pulling out common code Tom Haynes
2015-01-22 23:35 ` [PATCH v5 02/51] pnfs: Do not grab the commit_info lock twice when rescheduling writes Tom Haynes
2015-01-22 23:35 ` [PATCH v5 03/51] nfs41: pull data server cache from file layout to generic pnfs Tom Haynes
2015-01-22 23:35 ` [PATCH v5 04/51] nfs41: pull decode_ds_addr " Tom Haynes
2015-01-22 23:35 ` [PATCH v5 05/51] nfs41: pull nfs4_ds_connect " Tom Haynes
2015-01-22 23:35 ` [PATCH v5 06/51] nfs41: allow LD to choose DS connection auth flavor Tom Haynes
2015-01-22 23:35 ` [PATCH v5 07/51] nfs41: move file layout macros to generic pnfs Tom Haynes
2015-01-22 23:35 ` [PATCH v5 08/51] nfsv3: introduce nfs3_set_ds_client Tom Haynes
2015-01-22 23:35 ` [PATCH v5 09/51] nfs41: allow LD to choose DS connection version/minor_version Tom Haynes
2015-01-22 23:35 ` [PATCH v5 10/51] nfs41: create NFSv3 DS connection if specified Tom Haynes
2015-01-22 23:35 ` [PATCH v5 11/51] pnfs: Add nfs_rpc_ops in calls to nfs_initiate_pgio Tom Haynes
2015-01-22 23:35 ` [PATCH v5 12/51] nfs: allow different protocol in nfs_initiate_commit Tom Haynes
2015-01-22 23:35 ` [PATCH v5 13/51] nfs4: pass slot table to nfs40_setup_sequence Tom Haynes
2015-01-22 23:35 ` [PATCH v5 14/51] nfs4: export nfs4_sequence_done Tom Haynes
2015-01-22 23:35 ` [PATCH v5 15/51] nfs: allow to specify cred in nfs_initiate_pgio Tom Haynes
2015-01-22 23:35 ` [PATCH v5 16/51] NFSv4.1/NFSv3: Add pNFS callbacks for nfs3_(read|write|commit)_done() Tom Haynes
2015-01-22 23:35 ` [PATCH v5 17/51] sunrpc: add rpc_count_iostats_idx Tom Haynes
2015-01-22 23:35 ` [PATCH v5 18/51] nfs: set hostname when creating nfsv3 ds connection Tom Haynes
2015-01-22 23:35 ` [PATCH v5 19/51] nfs/flexclient: export pnfs_layoutcommit_inode Tom Haynes
2015-01-22 23:35 ` [PATCH v5 20/51] nfs41: close a small race window when adding new layout to global list Tom Haynes
2015-01-22 23:35 ` [PATCH v5 21/51] nfs41: serialize first layoutget of a file Tom Haynes
2015-01-22 23:35 ` [PATCH v5 22/51] nfs: save server READ/WRITE/COMMIT status Tom Haynes
2015-01-22 23:35 ` [PATCH v5 23/51] nfs41: pass iomode through layoutreturn args Tom Haynes
2015-01-22 23:35 ` [PATCH v5 24/51] nfs41: make a helper function to send layoutreturn Tom Haynes
2015-01-22 23:35 ` [PATCH v5 25/51] nfs41: add a helper to mark layout for return Tom Haynes
2015-01-22 23:35 ` [PATCH v5 26/51] nfs41: don't use a layout if it is marked for returning Tom Haynes
2015-01-22 23:35 ` [PATCH v5 27/51] nfs41: send layoutreturn in last put_lseg Tom Haynes
2015-01-22 23:36 ` [PATCH v5 28/51] nfs41: clear NFS_LAYOUT_RETURN if layoutreturn is sent or failed to send Tom Haynes
2015-01-22 23:36 ` [PATCH v5 29/51] nfs/filelayout: use pnfs_error_mark_layout_for_return Tom Haynes
2015-01-22 23:36 ` [PATCH v5 30/51] nfs: introduce pg_cleanup op for pgio descriptors Tom Haynes
2015-01-22 23:36 ` [PATCH v5 31/51] pnfs: release lseg in pnfs_generic_pg_cleanup Tom Haynes
2015-01-22 23:36 ` [PATCH v5 32/51] nfs: handle overlapping reqs in lock_and_join Tom Haynes
2015-01-22 23:36 ` [PATCH v5 33/51] nfs: rename pgio header ds_idx to ds_commit_idx Tom Haynes
2015-01-22 23:36 ` [PATCH v5 34/51] pnfs: pass ds_commit_idx through the commit path Tom Haynes
2015-01-22 23:36 ` [PATCH v5 35/51] nfs: add mirroring support to pgio layer Tom Haynes
2015-01-22 23:36 ` [PATCH v5 36/51] nfs: mirroring support for direct io Tom Haynes
2015-01-22 23:36 ` [PATCH v5 37/51] pnfs: fail comparison when bucket verifier not set Tom Haynes
2015-01-22 23:36 ` [PATCH v5 38/51] nfs41: add a debug warning if we destroy an unempty layout Tom Haynes
2015-01-22 23:36 ` [PATCH v5 39/51] nfs: only reset desc->pg_mirror_idx when mirroring is supported Tom Haynes
2015-01-22 23:36 ` [PATCH v5 40/51] nfs: add nfs_pgio_current_mirror helper Tom Haynes
2015-01-22 23:36 ` [PATCH v5 41/51] pnfs: allow LD to ask to resend read through pnfs Tom Haynes
2015-01-22 23:36 ` [PATCH v5 42/51] nfs41: add range to layoutreturn args Tom Haynes
2015-01-22 23:36 ` [PATCH v5 43/51] nfs41: allow async version layoutreturn Tom Haynes
2015-01-22 23:36 ` [PATCH v5 44/51] nfs41: introduce NFS_LAYOUT_RETURN_BEFORE_CLOSE Tom Haynes
2015-01-22 23:36 ` [PATCH v5 45/51] nfs/flexfiles: send layoutreturn before freeing lseg Tom Haynes
2015-01-22 23:36 ` [PATCH v5 46/51] nfs41: add NFS_LAYOUT_RETRY_LAYOUTGET to layout header flags Tom Haynes
2015-01-22 23:36 ` [PATCH v5 47/51] nfs: add a helper to set NFS_ODIRECT_RESCHED_WRITES to direct writes Tom Haynes
2015-01-22 23:36 ` [PATCH v5 48/51] nfs41: wait for LAYOUTRETURN before retrying LAYOUTGET Tom Haynes
2015-01-22 23:36 ` [PATCH v5 49/51] nfs: count DIO good bytes correctly with mirroring Tom Haynes
2015-01-22 23:36 ` [PATCH v5 50/51] pnfs/flexfiles: Add the FlexFile Layout Driver Tom Haynes
2015-01-22 23:36 ` [PATCH v5 51/51] pnfs: Update documentation on the Layout Drivers Tom Haynes
2015-01-23  8:07 ` [PATCH v5 00/51] Add Flexfile Layout Module Christoph Hellwig
2015-01-23  8:27   ` Christoph Hellwig
2015-01-24 14:33     ` Hi Christoph, Peng Tao
  -- strict thread matches above, loose matches on Subject: below --
2015-01-24 14:37 [PATCH v5 00/51] Add Flexfile Layout Module Peng Tao
2015-01-24 18:49 ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox