linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rob Landley <rlandley@parallels.com>
To: "Kirill A. Shutemov" <kas@openvz.org>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>,
	"J. Bruce Fields" <bfields@fieldses.org>,
	Neil Brown <neilb@suse.de>, Pavel Emelyanov <xemul@parallels.com>,
	<linux-nfs@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Al Viro <viro@ZenIV.linux.org.uk>,
	<containers@lists.linux-foundation.org>, <netdev@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 00/16] make rpc_pipefs be mountable multiple time
Date: Thu, 20 Jan 2011 07:57:52 -0600	[thread overview]
Message-ID: <4D383F60.4080907@parallels.com> (raw)
In-Reply-To: <20110120113552.GB24349@shutemov.name>

On 01/20/2011 05:35 AM, Kirill A. Shutemov wrote:
> On Mon, Jan 17, 2011 at 06:30:16AM -0600, Rob Landley wrote:
>> On 01/14/2011 07:48 AM, Kirill A. Shutemov wrote:
>>> Prepare nfs/sunrpc stack to use multiple instances of rpc_pipefs.
>>> Only for client for now.
>>
>> Ok, Google is being really unhelpful here.
> 
> It's better if you read the code. :)

I did.  That doesn't necessarily help if I don't know what it's _trying_
to do and this implementation is just one small piece of a much larger
mechanism.

>> What is rpc_pipefs for?  What uses it, and to do what exactly?  Is it
>> used by nfs server code, or by the client code, or both?  Is it a way
>> for userspace to talk to the kernel, or for the kernel to talk to
>> itself?  Is it used at mount time, or during filesystem operation?
> 
> Ok, It try to answer. Please correct me, if I'm wrong.
> 
> rpc_pipefs is a userland/kernel interface (I don't see kernel-kernel
> usecases, but it's possible, I guess).

Then why is the host context treated specially with an init_rcp_pipefs
instance that isn't necessarily mounted anywhere?  (How does userspace
access it if it isn't mounted anywhere?  Why doesn't the host context
just use the same does-not-exist code as container context?  Presumably
there's a reason for this?)

I've also mounted NFS shares in test environments I never mounted
rpc_pipefs in.  (It's possible that the nfs.mount command was doing so
for me, and apparently unmounting it again afterwards.)  My test
environment is exporting with the userspace NFS daemon so it's not using
the kernel cacheing infrastructure.

> There is client dir (nfs/clntX) in rpc_pipefs for every sunrpc client.
> Both client and server (see fs/nfsd/nfs4callback.c) can create sunrpc
> client. So we rpc_pipefs on both side.

Ok, both client and server can create instances.  And use them to do what?

I understand that the kernel needs to handle RPC calls to service NFS
requests, what I'm not figuring out is how userspace is involved after
the initial mount except on the other side of filesystem-agnostic system
calls.

> rpc_pipefs uses not only on mount time. See old idmapper, for example.

Um, does this sentence say that the old idmapper uses rpc_pipefs?
(Presumably not the kernel infrastructure controlled by
CONFIG_NFS_USE_NEW_IDMAPPER because you said it's not a kernel-kernel
communication mechanism...  So you're saying that whatever userspace
infrastructure interacts with that will also depend on rpc_pipefs.  But
the new infrastructure doesn't, which is why I need to look at the old?)

(And again, CONFIG_NFS_USE_NEW_IDMAPPER needs /sbin/request-key from the
keyutils package implying this is primarily for authentication, which
would explain why I haven't seen it in my simple test environment...)

Rob

  reply	other threads:[~2011-01-20 13:58 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-14 13:48 [PATCH v3 00/16] make rpc_pipefs be mountable multiple time Kirill A. Shutemov
2011-01-14 13:48 ` [PATCH v3 01/16] sunrpc: mount rpc_pipefs on initialization Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 02/16] sunrpc: introduce init_rpc_pipefs Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 03/16] sunrpc: push init_rpc_pipefs up to rpc_create() callers Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 04/16] sunrpc: tag svc_serv with rpc_pipefs mount point Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 05/16] sunrpc: get rpc_pipefs mount point for svc_serv from callers Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 06/16] lockd: get rpc_pipefs mount point " Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 07/16] sunrpc: get rpc_pipefs mount point for rpcb_create[_local] " Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 08/16] sunrpc: tag pipefs field of cache_detail with rpc_pipefs mount point Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 09/16] sunrpc: introduce rpc_pipefs_add_destroy_cb() Kirill A. Shutemov
2011-01-20 11:37   ` Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 10/16] nfs: per-rpc_pipefs dns cache Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 11/16] Export iterate_mounts symbol to be able to use from sunrpc module Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 12/16] sunrpc: introduce get_rpc_pipefs() Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 13/16] nfs: introduce mount option 'rpcmount' Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 14/16] sunrpc: make rpc_pipefs be mountable multiple times Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 15/16] sunrpc: remove global init_rpc_pipefs Kirill A. Shutemov
2011-01-14 13:49 ` [PATCH v3 16/16] Rework get_rpc_pipefs and introduce put_rpc_pipefs() Kirill A. Shutemov
2011-01-17 12:30 ` [PATCH v3 00/16] make rpc_pipefs be mountable multiple time Rob Landley
2011-01-20 11:35   ` Kirill A. Shutemov
2011-01-20 13:57     ` Rob Landley [this message]
2011-01-20 15:52       ` J. Bruce Fields
2011-01-24 23:55 ` Kirill A. Shutemov
2011-01-25  0:25   ` J. Bruce Fields
2011-01-25  1:53   ` Rob Landley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D383F60.4080907@parallels.com \
    --to=rlandley@parallels.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=bfields@fieldses.org \
    --cc=containers@lists.linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=kas@openvz.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=netdev@vger.kernel.org \
    --cc=viro@ZenIV.linux.org.uk \
    --cc=xemul@parallels.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).