[PATCH v14-plus 00/25] Address netns refcount issues for localio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux