All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] nfsd: overhaul the client name tracking code (RFC)
@ 2011-12-14 13:54 Jeff Layton
  2011-12-14 13:54 ` [PATCH 1/5] nfsd: add nfsd4_client_tracking_ops struct and a way to set it Jeff Layton
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Jeff Layton @ 2011-12-14 13:54 UTC (permalink / raw)
  To: linux-nfs

First, a little background: I've recently been tasked with a project
to make active/active serving of NFSv4 from clustered filesystems work.
This is a large-scale, long-term project, but there are pieces of the
existing code that are clearly unsuitable in such a configuration...

One of the things that Bruce has long had on his wishlist is to replace
the client name tracking code that the kernel uses:

    http://wiki.linux-nfs.org/wiki/index.php/Nfsd4_server_recovery

The existing code manipulates the filesystem directly to track this
info. Not only is that something that makes the VFS maintainers look
askance at knfsd, but it also is unsuitable in a clustered
configuration.

Typically we think of the grace period as a property of the server, but
with a clustered filesystem, we need to consider it as a property of the
cluster as a whole. On a cold startup of the cluster, once any node
grants a non-reclaim lock, then no more reclaim can be allowed on any
node. Grace periods must be coordinated amongst all cluster nodes.

In order to achieve that goal, we need to first allow the client name
reclaim to be cluster aware as well. This patchset is a move toward that
goal and covers the initial kernel part of such a change. A patchset to
add a daemon to handle the upcalls will follow.

Note that this patchset is still a little rough, so consider this an
RFC for the overall design. We'll also need to consider a plan to
deprecate the old client tracking code.

The goal with this patchset is to replace the existing functionality,
without disturbing the existing code too much. There's some room for
more cleanup and reorganization once the old tracker is gone.

Jeff Layton (5):
  nfsd: add nfsd4_client_tracking_ops struct and a way to set it
  sunrpc: create nfsd dir in rpc_pipefs
  nfsd: add a header describing upcall for clname tracking daemon
  nfsd: add a cl_daddr field and a generic flags field to nfs4_client
  nfsd: add the infrastructure to handle the clstate upcall

 fs/nfsd/nfs4recover.c        |  442 +++++++++++++++++++++++++++++++++++++++++-
 fs/nfsd/nfs4state.c          |   49 ++---
 fs/nfsd/state.h              |   16 +-
 include/linux/nfsd/clstate.h |   59 ++++++
 net/sunrpc/rpc_pipe.c        |    5 +
 5 files changed, 526 insertions(+), 45 deletions(-)
 create mode 100644 include/linux/nfsd/clstate.h


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

end of thread, other threads:[~2011-12-15 15:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-14 13:54 [PATCH 0/5] nfsd: overhaul the client name tracking code (RFC) Jeff Layton
2011-12-14 13:54 ` [PATCH 1/5] nfsd: add nfsd4_client_tracking_ops struct and a way to set it Jeff Layton
2011-12-14 13:54 ` [PATCH 2/5] sunrpc: create nfsd dir in rpc_pipefs Jeff Layton
2011-12-14 13:54 ` [PATCH 3/5] nfsd: add a header describing upcall for clname tracking daemon Jeff Layton
2011-12-14 21:53   ` J. Bruce Fields
2011-12-15 15:14     ` Jeff Layton
2011-12-14 13:54 ` [PATCH 4/5] nfsd: add a cl_daddr field and a generic flags field to nfs4_client Jeff Layton
2011-12-14 13:54 ` [PATCH 5/5] nfsd: add the infrastructure to handle the clstate upcall Jeff Layton
2011-12-14 14:35 ` [PATCH 0/5] nfsd: overhaul the client name tracking code (RFC) Chuck Lever
2011-12-14 14:49   ` Jeff Layton
2011-12-14 20:00     ` J. Bruce Fields

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.