Date: Tue, 19 Aug 2014 16:24:38 -0500 From: Bryan Drewery <bdrewery@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r270183 - head/usr.sbin/mountd Message-ID: <53F3C096.5080907@FreeBSD.org> In-Reply-To: <201408192104.s7JL4WKo059223@svn.freebsd.org> References: <201408192104.s7JL4WKo059223@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On 8/19/2014 4:04 PM, Bryan Drewery wrote: > Author: bdrewery > Date: Tue Aug 19 21:04:31 2014 > New Revision: 270183 > URL: http://svnweb.freebsd.org/changeset/base/270183 > > Log: > Avoid showing stale errors when nmount(2) fails. > > Sometimes nmount(2) will fail without setting errmsg. The previous (ignored) > error would then be shown as the reason for the failed call if the next > nmount(2) also fails without [ENOENT,ENOTSUP]. > > An example is when there is a tmpfs mounted with -o size. vfs_filteropt() adds > 'size' as an error in errmsg due to 'size' not being in tmpfs_updateopts. Then > tmpfs_mount returns [ENOTSUP] from nmount(2), which is then ignored. The next > call may race with an unmount causing an invalid [EINVAL] that then does log an > error, with the tmpfs errmsg. > > The race itself is a separate issue to fix as it is expected to have an > [ENOENT] returned instead. The actual race causing the EINVAL is here with a proposed patch: http://lists.freebsd.org/pipermail/freebsd-fs/2013-August/018008.html I have not spent time analyzing/testing it yet. > > In this example the mount being shown is actually nullfs, not tmpfs that the > error is from. > > mountd[740]: can't delete exports for /poudriere/data/.m/exp-head-commit-test-devel/04/.npkg: Invalid argument mount option <size> is unknown > > It should only show: > > mountd[740]: can't delete exports for /poudriere/data/.m/exp-head-commit-test-devel/04/.npkg: Invalid argument > > MFC after: 2 weeks > > Modified: > head/usr.sbin/mountd/mountd.c > > Modified: head/usr.sbin/mountd/mountd.c > ============================================================================== > --- head/usr.sbin/mountd/mountd.c Tue Aug 19 20:53:28 2014 (r270182) > +++ head/usr.sbin/mountd/mountd.c Tue Aug 19 21:04:31 2014 (r270183) > @@ -1744,6 +1744,7 @@ get_exportlist(void) > iov[3].iov_len = strlen(fsp->f_mntonname) + 1; > iov[5].iov_base = fsp->f_mntfromname; > iov[5].iov_len = strlen(fsp->f_mntfromname) + 1; > + errmsg[0] = '\0'; > > if (nmount(iov, iovlen, fsp->f_flags) < 0 && > errno != ENOENT && errno != ENOTSUP) { > @@ -2501,6 +2502,7 @@ do_mount(struct exportlist *ep, struct g > iov[3].iov_len = strlen(fsb->f_mntonname) + 1; > iov[5].iov_base = fsb->f_mntfromname; /* "from" */ > iov[5].iov_len = strlen(fsb->f_mntfromname) + 1; > + errmsg[0] = '\0'; > > while (nmount(iov, iovlen, fsb->f_flags) < 0) { > if (cp) > -- Regards, Bryan Drewery [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (MingW32) iQEcBAEBAgAGBQJT88CXAAoJEDXXcbtuRpfPm+sIALUpaWY9gwkcahVPSTvK/DIM ejtcfuZ3xuy7n3LTw5oCa4RwEaOpRf1eo3NknPbkMiREUKAXgjRo/HAVLmFlEIZB d+cVvHrqnnapG0IZ9HjjI5G+IT/CLNviDtw7cb/p4skJz2rGXjvMbg1IdXidItE5 6MkCmtO2Tk+l/8/erS9RnYu2k0LhSC5BJOt2fiaAehsqd0de7l7LVSth4e/n5pP1 tq+rpd/nhi+05dyTaNeL8Ibv2i7arkkDo1oJlGAKblNRDZJzfBEb/yGIvwUjt51G fzw/AqK0hMvb9xIAJrj8TDPtWrCVaz2Pwdr+UTkFtGKGRAusi2gUs3qzGW8NnZE= =VpX4 -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53F3C096.5080907>
