All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH/RFC 0/5] Support loop-back NFS mounts - take 2
@ 2014-04-23  2:40 ` NeilBrown
  0 siblings, 0 replies; 31+ messages in thread
From: NeilBrown @ 2014-04-23  2:40 UTC (permalink / raw)
  To: Jan Kara, Jeff Layton, Trond Myklebust, Dave Chinner,
	J. Bruce Fields, Mel Gorman, Andrew Morton
  Cc: linux-mm, linux-nfs, linux-kernel

This is a somewhat shorter patchset for loop-back NFS support than
last time, thanks to the excellent feedback and particularly to Dave
Chinner.  Thanks.

Avoiding the wait-for-congestion which can trigger a livelock is much
the same, though I've reduced the cases in which the wait is
by-passed.
I did this using current->backing_dev_info which is otherwise serving
no purpose on the current kernel.

Avoiding the deadlocks has been turned on its head.
Instead of nfsd checking if it is a loop-back mount and setting
PF_FSTRANS, which then needs lots of changes too PF_FSTRANS and
__GFP_FS handling, it is now NFS which checks for a loop-back
filesystem.

There is more verbosity in that patch (Fifth of Five) but the essence
is that nfs_release_page will now not wait indefinitely for a COMMIT
request to complete when sent to the local host.  It still waits a
little while as some delay can be important. But it won't wait
forever.
The duration of "a little while" is currently 100ms, though I do
wonder if a bigger number would serve just as well.

Unlike the previous series, this set should remove deadlocks that
could happen during the actual fail-over process.  This is achieved by
having nfs_release_page monitor the connection and if it changes from
a remote to a local connection, or just disconnects, then it will
timeout.  It currently polls every second, though this probably could
be longer too.  It only needs to be the same order of magnitude as the
time it takes node failure to be detected and failover to happen, and
I suspect that is closer to 1 minute.  So maybe a 10 or 20 second poll
interval would be just as good.

Implementing this timeout requires some horrible code as the
wait_on_bit functions don't support timeouts.  If the general approach
is found acceptable I'll explore ways to improve the timeout code.

Comments, criticism, etc very welcome as always,

Thanks,
NeilBrown


---

NeilBrown (5):
      MM: avoid throttling reclaim for loop-back nfsd threads.
      SUNRPC: track whether a request is coming from a loop-back interface.
      nfsd: Only set PF_LESS_THROTTLE when really needed.
      SUNRPC: track when a client connection is routed to the local host.
      NFS: avoid deadlocks with loop-back mounted NFS filesystems.


 fs/nfs/file.c                   |    2 +
 fs/nfs/write.c                  |   73 +++++++++++++++++++++++++++++++++++----
 fs/nfsd/nfssvc.c                |    6 ---
 fs/nfsd/vfs.c                   |   12 ++++++
 include/linux/freezer.h         |   10 +++++
 include/linux/sunrpc/clnt.h     |    1 +
 include/linux/sunrpc/svc.h      |    1 +
 include/linux/sunrpc/svc_xprt.h |    1 +
 include/linux/sunrpc/xprt.h     |    1 +
 include/uapi/linux/nfs_fs.h     |    3 ++
 mm/vmscan.c                     |   18 +++++++++-
 net/sunrpc/clnt.c               |   25 +++++++++++++
 net/sunrpc/svcsock.c            |   10 +++++
 net/sunrpc/xprtsock.c           |   17 +++++++++
 14 files changed, 163 insertions(+), 17 deletions(-)

-- 
Signature


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

end of thread, other threads:[~2014-05-12 15:32 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-23  2:40 [PATCH/RFC 0/5] Support loop-back NFS mounts - take 2 NeilBrown
2014-04-23  2:40 ` NeilBrown
2014-04-23  2:40 ` [PATCH 1/5] MM: avoid throttling reclaim for loop-back nfsd threads NeilBrown
2014-04-23  2:40   ` NeilBrown
2014-04-23 22:03   ` Andrew Morton
2014-04-23 22:03     ` Andrew Morton
2014-04-23 22:47     ` NeilBrown
2014-04-23  2:40 ` [PATCH 2/5] SUNRPC: track whether a request is coming from a loop-back interface NeilBrown
2014-04-23  2:40   ` NeilBrown
2014-04-23  2:40 ` [PATCH 4/5] SUNRPC: track when a client connection is routed to the local host NeilBrown
2014-04-23  2:40   ` NeilBrown
2014-04-23 13:44   ` Anna Schumaker
2014-04-23 13:44     ` Anna Schumaker
2014-04-23 23:14     ` NeilBrown
2014-04-23 23:14       ` NeilBrown
2014-04-24 12:46       ` Anna Schumaker
2014-04-24 12:46         ` Anna Schumaker
2014-04-23  2:40 ` [PATCH 5/5] NFS: avoid deadlocks with loop-back mounted NFS filesystems NeilBrown
2014-04-23  2:40   ` NeilBrown
2014-04-23  2:40 ` [PATCH 3/5] nfsd: Only set PF_LESS_THROTTLE when really needed NeilBrown
2014-04-23  2:40   ` NeilBrown
2014-05-06 20:54   ` J. Bruce Fields
2014-05-06 20:54     ` J. Bruce Fields
2014-05-12  1:05     ` NeilBrown
2014-05-06 21:05   ` Rik van Riel
2014-05-06 21:05     ` Rik van Riel
2014-05-12  1:04     ` NeilBrown
2014-05-12 15:32       ` Jan Kara
2014-05-12 15:32         ` Jan Kara
2014-04-24  1:20 ` [PATCH/RFC 0/5] Support loop-back NFS mounts - take 2 Dave Chinner
2014-04-24  1:20   ` Dave Chinner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.