From owner-freebsd-bugs Fri May 16 00:00:07 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id AAA12879 for bugs-outgoing; Fri, 16 May 1997 00:00:07 -0700 (PDT) Received: (from gnats@localhost) by hub.freebsd.org (8.8.5/8.8.5) id AAA12850; Fri, 16 May 1997 00:00:02 -0700 (PDT) Date: Fri, 16 May 1997 00:00:02 -0700 (PDT) Message-Id: <199705160700.AAA12850@hub.freebsd.org> To: freebsd-bugs Cc: From: j@uriah.heep.sax.de (J Wunsch) Subject: Re: bin/3588: Memory Filesystem unmounting problem Reply-To: j@uriah.heep.sax.de (J Wunsch) Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR bin/3588; it has been noted by GNATS. From: j@uriah.heep.sax.de (J Wunsch) To: yugawa@orleans.rim.or.jp Cc: FreeBSD-gnats-submit@freebsd.org, dfr@freebsd.org Subject: Re: bin/3588: Memory Filesystem unmounting problem Date: Fri, 16 May 1997 08:30:30 +0200 As Takahiro Yugawa wrote: > *** umount.c.orig Tue May 13 23:31:17 1997 > --- umount.c Tue May 13 23:31:40 1997 > *************** > *** 219,225 **** > if (!selected(type)) > return (0); > > ! if ((delimp = strchr(name, '@')) != NULL) { > hostp = delimp + 1; > *delimp = '\0'; > hp = gethostbyname(hostp); > --- 219,227 ---- > if (!selected(type)) > return (0); > > ! if (strstr( name, "mfs:" ) == name && isdigit(*(name+4))) { > ! hp = NULL; > ! } else if ((delimp = strchr(name, '@')) != NULL) { > hostp = delimp + 1; > *delimp = '\0'; > hp = gethostbyname(hostp); That's the wrong fix, IMHO. Umounting other mount points that use the same syntax will still yield the same problem (e.g., amd writes a similar entry to mfs). Doug recently fixed some problem like: Index: /usr/src/sbin/umount/umount.c =================================================================== RCS file: /home/cvs/src/sbin/umount/umount.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -u -r1.5 -r1.6 --- umount.c 1997/03/29 03:33:12 1.5 +++ umount.c 1997/04/29 09:10:11 1.6 @@ -219,12 +219,12 @@ if (!selected(type)) return (0); - if ((delimp = strchr(name, '@')) != NULL) { + if ((delimp = strchr(name, '@')) != NULL && type != MOUNT_UNION) { hostp = delimp + 1; *delimp = '\0'; hp = gethostbyname(hostp); *delimp = '@'; - } else if ((delimp = strchr(name, ':')) != NULL) { + } else if ((delimp = strchr(name, ':')) != NULL && type != MOUNT_UNION) { *delimp = '\0'; hostp = name; hp = gethostbyname(hostp); I think the logic should be reversed: only if the type is MOUNT_NFS, there should be a hostname lookup. Everything else is local. -- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)