Date: Tue, 13 May 1997 23:39:05 +0900 (JST) From: Takahiro Yugawa <yugawa@orleans.rim.or.jp> To: FreeBSD-gnats-submit@FreeBSD.ORG Cc: yugawa@oleo.orleans.rim.or.jp Subject: bin/3588: Memory Filesystem unmounting problem Message-ID: <199705131439.XAA04885@oleo.orleans.rim.or.jp> Resent-Message-ID: <199705131510.IAA24168@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 3588 >Category: bin >Synopsis: Memory Filesystem unmounting problem >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue May 13 08:10:01 PDT 1997 >Last-Modified: >Originator: Takahiro Yugawa >Organization: personal FreeBSD user in Japan >Release: FreeBSD 2.2.1-RELEASE i386 >Environment: General FreeBSD environment with 'options MFS' enabled kernel. >Description: When unmounting mfs like '# umount /tmp', umount process searches for host 'mfs'. And if there is a host named 'mfs', an error will occur with umount command. If there isn't a host named 'mfs' but the host is configured to use name server, umount produces unnecessary network packet. In /usr/src/sbin/umount/umount.c, there is a function named umountfs(). The argument to the function umountfs(), named 'name', is a file system name (which can see at the left most column at the output of df command). Umountfs() searches '@' or ':' character in variable 'name' to see if it is a NFS or not. Since file system name for mfs is 'mfs:[pid of mfs]', umountfs() thinks it is a NFS (because there is ':' in it) and then searches for host named 'mfs' with gethostbyname() function. >How-To-Repeat: First, prepare a kernel with 'options MFS' enabled. Then prepare a host named 'mfs'. The easiest way is to add an alias 'mfs' to localhost(127.0.0.1) in /etc/hosts like, 127.0.0.1 localhost mfs Then mount mfs with mount_mfs command like, # mount_mfs -s 2048 /dev/wd0s2b /tmp And, then umount mfs with umount command like, # umount /tmp This umount process produces message like "Cannot MNT PRC: RPC: Program not registered." Or, give an IP address for host 'mfs'(actually it isn't exist), and do mounting & umounting as above produces message like "Cannot MNT PRC: RPC: Port mapper failure - RPC: Unable to send." In any cases, mfs will actually umounted, though. >Fix: I think there are several ways to fix the problem. One of them is to change file system name for mfs to something like 'mfs![pid of mfs]', and not include a character '@' or ':' in it. I didn't do this because I wonder there may be some side effects. Another way and my solution is to change /usr/src/sbin/umount/umount.c like this. *** 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); >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199705131439.XAA04885>