public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/19] Updates for pNFS/flexfiles
@ 2019-03-01 19:24 Trond Myklebust
  2019-03-01 19:24 ` [PATCH 01/19] NFSv4/flexfiles: Fix invalid deref in FF_LAYOUT_DEVID_NODE() Trond Myklebust
  0 siblings, 1 reply; 21+ messages in thread
From: Trond Myklebust @ 2019-03-01 19:24 UTC (permalink / raw)
  To: linux-nfs

The following patches update the pNFS/flexfiles layout driver.
The main feature enhancements revolve around adding support for
the NFSv4.2 LAYOUTERROR operation. This was seen as necessary
in order to fix a livelock issue that can occur if the client
has lots of outstanding I/O, but the DS is down.
In that case, we currently file an error that is supposed to get
sent to the server as part of LAYOUTRETURN. However if the I/O
retries are occurring quickly enough so that we keep renewing
the layout, then we end up never being able to send the
layoutreturn,  the server ends up never getting notified about
the error condition, and just keeps handing out the same
layout over and over again in response to new LAYOUTGETs.
By sending the LAYOUTERROR without needing to return the layout,
we can break the cycle.

Trond Myklebust (19):
  NFSv4/flexfiles: Fix invalid deref in FF_LAYOUT_DEVID_NODE()
  NFS/flexfiles: Fix up sparse RCU annotations
  NFSv4/pnfs: Fix barriers in nfs4_mark_deviceid_unavailable()
  NFSv4/flexfiles: Abort I/O early if the layout segment was invalidated
  NFSv4.2: Add client support for the generic 'layouterror' RPC call
  NFS/flexfiles: Send LAYOUTERROR when failing over mirrored reads
  NFSv4: Handle early exit in layoutget by returning an error
  NFS/flexfiles: refactor calls to fs4_ff_layout_prepare_ds()
  NFS/flexfiles: Avoid unnecessary layout invalidations
  NFS/flexfiles: Remove bogus checks for invalid deviceids
  NFS/flexfiles: Don't invalidate DS deviceids for being unresponsive
  NFS/flexfiles: Speed up read failover when DSes are down
  NFS/flexfiles: Simplify nfs4_ff_layout_select_ds_fh()
  NFS/flexfiles: Simplify nfs4_ff_find_or_create_ds_client()
  NFS/flexfiles: Simplify ff_layout_get_ds_cred()
  NFS/flexfile: Simplify nfs4_ff_layout_ds_version()
  NFS/flexfile: Simplify nfs4_ff_layout_select_ds_stateid()
  NFS/flexfiles: Remove dead code in ff_layout_mirror_valid()
  NFS/flexfiles: Clean up mirror DS initialisation

 fs/nfs/flexfilelayout/flexfilelayout.c    | 216 ++++++++++++++++------
 fs/nfs/flexfilelayout/flexfilelayout.h    |  75 ++++----
 fs/nfs/flexfilelayout/flexfilelayoutdev.c | 150 +++++----------
 fs/nfs/nfs42.h                            |   3 +
 fs/nfs/nfs42proc.c                        | 164 ++++++++++++++++
 fs/nfs/nfs42xdr.c                         |  99 ++++++++++
 fs/nfs/nfs4proc.c                         |   9 +-
 fs/nfs/nfs4xdr.c                          |   1 +
 fs/nfs/pnfs.h                             |   1 +
 fs/nfs/pnfs_dev.c                         |  13 ++
 include/linux/nfs4.h                      |   1 +
 include/linux/nfs_fs_sb.h                 |   1 +
 include/linux/nfs_xdr.h                   |  35 ++++
 include/linux/sunrpc/sched.h              |   1 +
 net/sunrpc/xprt.c                         |   7 +
 15 files changed, 571 insertions(+), 205 deletions(-)

-- 
2.20.1


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

end of thread, other threads:[~2019-03-18 10:59 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-01 19:24 [PATCH 00/19] Updates for pNFS/flexfiles Trond Myklebust
2019-03-01 19:24 ` [PATCH 01/19] NFSv4/flexfiles: Fix invalid deref in FF_LAYOUT_DEVID_NODE() Trond Myklebust
2019-03-01 19:24   ` [PATCH 02/19] NFS/flexfiles: Fix up sparse RCU annotations Trond Myklebust
2019-03-01 19:24     ` [PATCH 03/19] NFSv4/pnfs: Fix barriers in nfs4_mark_deviceid_unavailable() Trond Myklebust
2019-03-01 19:24       ` [PATCH 04/19] NFSv4/flexfiles: Abort I/O early if the layout segment was invalidated Trond Myklebust
2019-03-01 19:24         ` [PATCH 05/19] NFSv4.2: Add client support for the generic 'layouterror' RPC call Trond Myklebust
2019-03-01 19:24           ` [PATCH 06/19] NFS/flexfiles: Send LAYOUTERROR when failing over mirrored reads Trond Myklebust
2019-03-01 19:24             ` [PATCH 07/19] NFSv4: Handle early exit in layoutget by returning an error Trond Myklebust
2019-03-01 19:24               ` [PATCH 08/19] NFS/flexfiles: refactor calls to fs4_ff_layout_prepare_ds() Trond Myklebust
2019-03-01 19:24                 ` [PATCH 09/19] NFS/flexfiles: Avoid unnecessary layout invalidations Trond Myklebust
2019-03-01 19:24                   ` [PATCH 10/19] NFS/flexfiles: Remove bogus checks for invalid deviceids Trond Myklebust
2019-03-01 19:24                     ` [PATCH 11/19] NFS/flexfiles: Don't invalidate DS deviceids for being unresponsive Trond Myklebust
2019-03-01 19:24                       ` [PATCH 12/19] NFS/flexfiles: Speed up read failover when DSes are down Trond Myklebust
2019-03-01 19:24                         ` [PATCH 13/19] NFS/flexfiles: Simplify nfs4_ff_layout_select_ds_fh() Trond Myklebust
2019-03-01 19:24                           ` [PATCH 14/19] NFS/flexfiles: Simplify nfs4_ff_find_or_create_ds_client() Trond Myklebust
2019-03-01 19:24                             ` [PATCH 15/19] NFS/flexfiles: Simplify ff_layout_get_ds_cred() Trond Myklebust
2019-03-01 19:24                               ` [PATCH 16/19] NFS/flexfile: Simplify nfs4_ff_layout_ds_version() Trond Myklebust
2019-03-01 19:24                                 ` [PATCH 17/19] NFS/flexfile: Simplify nfs4_ff_layout_select_ds_stateid() Trond Myklebust
2019-03-01 19:24                                   ` [PATCH 18/19] NFS/flexfiles: Remove dead code in ff_layout_mirror_valid() Trond Myklebust
2019-03-01 19:24                                     ` [PATCH 19/19] NFS/flexfiles: Clean up mirror DS initialisation Trond Myklebust
2019-03-18 10:58             ` [PATCH 06/19] NFS/flexfiles: Send LAYOUTERROR when failing over mirrored reads kbuild test robot

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