Linux NFS development
 help / color / mirror / Atom feed
From: Neil Brown <neilb@suse.de>
To: Jeff Layton <jlayton@redhat.com>
Cc: linux-nfs@vger.kernel.org, bfields@fieldses.org,
	chuck.lever@oracle.com, steved@redhat.com
Subject: Re: [PATCH] rpc.nfsd: mount up nfsdfs is it doesn't appear to be mounted yet
Date: Sun, 29 Aug 2010 08:38:53 +1000	[thread overview]
Message-ID: <20100829083853.4e95d2ee@notabene> (raw)
In-Reply-To: <1282995314-8317-1-git-send-email-jlayton@redhat.com>


(I might have just sent an empty reply to this - sorry 'bout that).

On Sat, 28 Aug 2010 07:35:14 -0400
Jeff Layton <jlayton@redhat.com> wrote:

> There's a bit of a chicken and egg problem when nfsd is run the first
> time. On Fedora/RHEL at least, /proc/fs/nfsd is mounted up whenever nfsd
> is plugged in via a modprobe.conf "install" directive.
> 
> If someone runs rpc.nfsd without plugging in nfsd.ko first,
> /proc/fs/nfsd won't be mounted and rpc.nfsd will end up using the legacy
> nfsctl interface. After that, nfsd will be plugged in and subsequent
> rpc.nfsd invocations will use that instead.
> 
> This is a problem as some nfsd command-line options are ignored when the
> legacy interface is used. It'll also be a problem for people who want
> IPv6 enabled servers. The upshot is that we really don't want to use the
> legacy interface unless there is no other option.
> 
> To avoid this situation, have rpc.nfsd check to see if the "threads"
> file is already present. If it's not, then make an attempt to mount
> /proc/fs/nfsd.  This is a "best-effort" sort of thing, however so we
> just ignore the return code from the mount attempt and fall back to
> using nfsctl() if it fails.
> 
> Full disclosure: I'm not 100% thrilled with this patch. It seems ugly
> and kludgey, but I don't see a better way to handle this problem.
> Suggestions welcome.

I don't think it is all that bad.  It is a shame you have to use system()
rather than just calling mount() directly but I guess we need that to
update /etc/mtab.

Suggestions:

 - just don't do that.  Use /etc/init.d/nfsserver start (or whatever the
   distro uses).
 - Make /proc/fs/nfsd and auto-mount point.  That sounds like the systemd
   approach.
 - Print a warning message if the kernel is newer than 2.6 and nfsd-fs isn't
   mounted - see "don't do that" above.
 - If nfsdfs isn't mounted, try a no-op via the nfsd syscall, like
   NFSCTL_GETFD with invalid parameters.  This will trigger a mod-probe which
   will trigger the mount.
   Then check for the mounted filesystem again.  Yes, I think I like that one
   the best.

NeilBrown


  parent reply	other threads:[~2010-08-28 22:39 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-28 11:35 [PATCH] rpc.nfsd: mount up nfsdfs is it doesn't appear to be mounted yet Jeff Layton
2010-08-28 22:29 ` Neil Brown
2010-08-28 22:38 ` Neil Brown [this message]
2010-08-29  2:24   ` Jeff Layton
2010-08-29 19:31     ` J. Bruce Fields
2010-08-29 19:37     ` J. Bruce Fields
2010-08-29 22:12       ` Neil Brown
2010-08-30 15:51 ` Steve Dickson
2010-08-30 16:16   ` Jeff Layton
2010-08-30 16:53     ` Steve Dickson
2010-08-30 17:04       ` J. Bruce Fields
2010-08-30 17:22         ` Jeff Layton
2010-08-31 12:14         ` Steve Dickson
2010-08-30 17:48       ` Jeff Layton
2010-08-31 12:24         ` Steve Dickson
2010-08-31 12:43           ` Jeff Layton
2010-08-31 14:49             ` Steve Dickson
2010-08-31 15:10               ` Jeff Layton
2010-08-31 15:13                 ` J. Bruce Fields
2010-08-31 15:18                   ` Steve Dickson
2010-08-31 15:51                     ` J. Bruce Fields
2010-08-31 16:13                       ` Steve Dickson
2010-08-31 16:15                         ` J. Bruce Fields
2010-08-31 17:18                           ` Steve Dickson
2010-08-31 18:07                             ` J. Bruce Fields
2010-08-31 18:59                               ` Steve Dickson
2010-08-31 19:02                                 ` Jeff Layton

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=20100829083853.4e95d2ee@notabene \
    --to=neilb@suse.de \
    --cc=bfields@fieldses.org \
    --cc=chuck.lever@oracle.com \
    --cc=jlayton@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=steved@redhat.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