Skip site navigation (1)Skip section navigation (2)
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>