Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jul 2017 14:35:15 -0600
From:      Ian Lepore <ian@freebsd.org>
To:        Edward Tomasz Napierala <trasz@freebsd.org>, rgrimes@freebsd.org
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r320803 - head/sbin/mount
Message-ID:  <1499805315.45330.14.camel@freebsd.org>
In-Reply-To: <20170711201230.GB1725@brick>
References:  <20170708171641.GA1129@brick> <201707081734.v68HYpN9068500@pdx.rh.CN85.dnsmgr.net> <20170711201230.GB1725@brick>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 2017-07-11 at 21:12 +0100, Edward Tomasz Napierala wrote:
> On 0708T1034, Rodney W. Grimes wrote:
> > 
> > [ Charset ISO-8859-1 unsupported, converting... ]
> > > 
> > > On 0708T1102, Ian Lepore wrote:
> > > > 
> > > > On Sat, 2017-07-08 at 09:50 -0700, Rodney W. Grimes wrote:
> > > > > 
> > > > > [ Charset UTF-8 unsupported, converting... ]
> > > > > > 
> > > > > > 
> > > > > > Author: trasz
> > > > > > Date: Sat Jul??8 11:06:27 2017
> > > > > > New Revision: 320803
> > > > > > URL: https://svnweb.freebsd.org/changeset/base/320803
> > > > > > 
> > > > > > Log:
> > > > > > ? Fix "mount -uw /" when the filesystem type doesn't match.
> > > > > > ??
> > > > > > ? This basically makes "mount -uw /" work when the
> > > > > > filesystem
> > > > > > ? mounted on / is NFS, but the one configured in fstab(5)
> > > > > > is UFS,
> > > > > > ? which can happen when you forget to modify fstab.
> > > > > Please do not silence user errors because they are
> > > > > inconvinient,
> > > > > this is a configuration error and the system should fail to?
> > > > > mount the incorrectly configured root.
> > > > > 
> > > > > If we start changing things to silently ignore user
> > > > > configuration
> > > > > errors we are going down a very slippery road.
> > > It doesn't silence down the error.  What it does is it makes it
> > > possible
> > > to use "mount -uw /" - previously it would fail in a rather
> > > nonsensical
> > > way, by calling "mount_nfs -o upgrade,rw /dev/ada0 /".
> > It DOES silence the error.  My configuration TOLD it to execute
> > that
> > rather nonsensical command, your change now causes it to execute
> > something
> > that my configuration did NOT tell it to do.
> I don't know your configuration; mine certainly didn't tell it to try
> to
> mount /dev/ada0 as NFS.  What I certainly _did_ told it was to "mount
> -uw /",
> and previously, in some cases, it failed to do this.  Now it works.
> 
> From a practical standpoint, it's like this: I have an NFS root
> filesystem
> mounted read-only.  There's a slightly wrong fstab.  I want to
> remount it
> read-write and fix it.  With UFS I can.  I expect the same with NFS.
> 
> > 
> > > 
> > > > 
> > > > IMO, this change fixes the right problem, but maybe does so the
> > > > wrong
> > > > way. ?Mount -u is by definition an update to an existing mount.
> > > > ?There
> > > > should be no need to consult /etc/fstab for an existing mount
> > > > since the
> > > > info is available from the kernel.
> > > > 
> > > > Note that I say the foregoing with my user hat on. ?I haven't
> > > > looked at
> > > > the code to see if there's some reason why my common-sensical
> > > > way of
> > > > thinking about it is actually impossible to implement for some
> > > > reason.
> > > I wouldn't expect it to consult fstab either, to be honest.  But
> > > it does,
> > > and I suspect changing that would break someone's config.
> > It reads the fstab to get the options that may be specified there
> > that your mount -uw / command does not specify, realize the kernel
> > when mounting / does so in a very minimal way, when you invoke
> > mount -u the parameters in /etc/fstab come in to play.
> Yup, that's it.  So it is right in most cases - it's just that the
> hack
> for "/" case sometimes worked in an way that's pretty obviously wrong
> (using the fstab value for "mounted from", but ignoring the
> filesystem
> type), although didn't hurt before reroot, because it could never
> happen.
> 
> > 
> > I believe KIB refered to this during your differential when he said
> > something like "what if the options disagree".
> Possibly.

I think the docs on this are pretty clear... under -u it says:

    The set of options is determined by applying the options specified
    in the argument to -o and finally applying the -r or -w option.

To me, that says that nothing in /etc/fstab is germane to mount -u
unless one of the other args to mount -u is -o fstab.

This change (r320803) seems like an acceptable workaround, but I think
the correct long term fix would be to not even open /etc/fstab on mount
-u without -o fstab.  But that may be harder to do than to say; I still
haven't actually looked at the code involved.

-- Ian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1499805315.45330.14.camel>