All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v14-plus 00/25] Address netns refcount issues for localio
@ 2024-08-30  2:20 NeilBrown
  2024-08-30  2:20 ` [PATCH 14/25] nfs_common: add NFS LOCALIO auxiliary protocol enablement NeilBrown
                   ` (7 more replies)
  0 siblings, 8 replies; 10+ messages in thread
From: NeilBrown @ 2024-08-30  2:20 UTC (permalink / raw)
  To: Mike Snitzer, Chuck Lever, Jeff Layton; +Cc: linux-nfs

Following are revised versions of 6 patches from the v14 localio series.

The issue addressed is net namespace refcounting.

We don't want to keep a long-term counted reference in the client
because that prevents a server container from completely shutting down.

So we avoid taking a reference at all and rely on the per-cpu reference
to the server being sufficient to keep the net-ns active.  This involves
allowing the net-ns exit code to iterate all active clients and clear
their ->net pointers (which they need to find the per-cpu-refcount for
the nfs_serv).

So:
 - embed nfs_uuid_t in nfs_client.  This provides a list_head that can
   be used to find the client.  It does add the actual uuid to nfs_client
   so it is bigger than needed.  If that is really a problem we can find
   a fix.

 - When the nfs server confirms that the uuid is local, it moves the
   nfs_uuid_t onto a per-net-ns list.

 - When the net-ns is shutting down - in a "pre_exit" handler, all these
   nfS_uuid_t have their ->net cleared.  There is an rcu_synchronize()
   call between pre_exit() handlers and exit() handlers so and caller
   that sees ->net as not NULL can safely check the ->counter

 - We now pass the nfs_uuid_t to nfsd_open_local_fh() so it can safely
   look at ->net in a private rcu_read_lock() section.

I have compile tested this code but nothing more.

Thanks,
NeilBrown

 [PATCH 14/25] nfs_common: add NFS LOCALIO auxiliary protocol
 [PATCH 15/25] nfs_common: introduce nfs_localio_ctx struct and
 [PATCH 16/25] nfsd: add localio support
 [PATCH 17/25] nfsd: implement server support for NFS_LOCALIO_PROGRAM
 [PATCH 19/25] nfs: add localio support
 [PATCH 23/25] nfs: implement client support for NFS_LOCALIO_PROGRAM

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

end of thread, other threads:[~2024-08-30 13:56 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-30  2:20 [PATCH v14-plus 00/25] Address netns refcount issues for localio NeilBrown
2024-08-30  2:20 ` [PATCH 14/25] nfs_common: add NFS LOCALIO auxiliary protocol enablement NeilBrown
2024-08-30  2:20 ` [PATCH 15/25] nfs_common: introduce nfs_localio_ctx struct and interfaces NeilBrown
2024-08-30  2:20 ` [PATCH 16/25] nfsd: add localio support NeilBrown
2024-08-30  2:20 ` [PATCH 17/25] nfsd: implement server support for NFS_LOCALIO_PROGRAM NeilBrown
2024-08-30  2:20 ` [PATCH 19/25] nfs: add localio support NeilBrown
2024-08-30  2:20 ` [PATCH 23/25] nfs: implement client support for NFS_LOCALIO_PROGRAM NeilBrown
2024-08-30  3:46 ` [PATCH v14-plus 00/25] Address netns refcount issues for localio Mike Snitzer
2024-08-30  7:47 ` Mike Snitzer
2024-08-30 13:56   ` Mike Snitzer

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.