Date: Sun, 29 May 2011 14:44:55 -0700 From: Jeremy Chadwick <freebsd@jdc.parodius.com> To: rmacklem@freebsd.org Cc: freebsd-fs@FreeBSD.org Subject: Re: kern/157365: commit references a PR Message-ID: <20110529214455.GA61419@icarus.home.lan> In-Reply-To: <201105292120.p4TLKAB8055239@freefall.freebsd.org> References: <201105292120.p4TLKAB8055239@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, May 29, 2011 at 09:20:10PM +0000, dfilter service wrote: > The following reply was made to PR kern/157365; it has been noted by GNATS. > > From: dfilter@FreeBSD.ORG (dfilter service) > To: bug-followup@FreeBSD.org > Cc: > Subject: Re: kern/157365: commit references a PR > Date: Sun, 29 May 2011 21:14:07 +0000 (UTC) > > Author: rmacklem > Date: Sun May 29 21:13:53 2011 > New Revision: 222466 > URL: http://svn.freebsd.org/changeset/base/222466 > > Log: > Modify the umount(8) command so that it doesn't do > a sync(2) syscall before unmount(2) for the "-f" case. > This avoids a forced dismount from getting stuck for > an NFS mountpoint in sync() when the server is not > responsive. With this commit, forced dismounts should > normally work for the NFS clients, but can take up to > about 1minute to complete. > > PR: kern/157365 > Reviewed by: kib > MFC after: 2 weeks > > Modified: > head/sbin/umount/umount.c > > Modified: head/sbin/umount/umount.c > ============================================================================== > --- head/sbin/umount/umount.c Sun May 29 21:03:40 2011 (r222465) > +++ head/sbin/umount/umount.c Sun May 29 21:13:53 2011 (r222466) > @@ -90,9 +90,6 @@ main(int argc, char *argv[]) > struct statfs *mntbuf, *sfs; > struct addrinfo hints; > > - /* Start disks transferring immediately. */ > - sync(); > - > all = errs = 0; > while ((ch = getopt(argc, argv, "AaF:fh:t:v")) != -1) > switch (ch) { > @@ -127,6 +124,10 @@ main(int argc, char *argv[]) > argc -= optind; > argv += optind; > > + /* Start disks transferring immediately. */ > + if ((fflag & MNT_FORCE) == 0) > + sync(); > + > if ((argc == 0 && !all) || (argc != 0 && all)) > usage(); IMHO: the "60-second" behaviour needs to be documented in umount(8). Administrators who are issuing "umount -f" will (understandably) expect the unmount to happen immediately. If umount(8) blocks for 60 seconds while an unmount of an NFS mount happens, that may be more reasonable, but I imagine most administrators are going to Ctrl-C the umount citing "it wasn't doing anything". Since printing a message during "umount -f" is not ideal (the implications may break system scripts, etc.), the behaviour should really be documented in the man page. -- | Jeremy Chadwick jdc@parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP 4BD6C0CB |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110529214455.GA61419>