Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Jul 1996 08:07:11 +0200 (MET DST)
From:      "Martin v.Loewis" <loewis@cs.tu-berlin.de>
To:        freebsd-fs@freebsd.org
Subject:   umount question
Message-ID:  <199607280607.IAA17525@cent.cs.tu-berlin.de>

next in thread | raw e-mail | index | archive | help
I have a question on umount(8). Why does it sometimes pass the mounted-from
device to unmount(2)? For your reference, I have some code from
/usr/src/sbin/umount/umount.c of FreeBSD 2.1.0. In umountfs, the umount
parameter is checked:

    if (stat(name, &sb) < 0) {
        if (((mntpt = getmntname(name, MNTFROM, &type)) == NULL) &&
            ((mntpt = getmntname(name, MNTON, &type)) == NULL)) {
            warnx("%s: not currently mounted", name);

getmntname in turn checks on name and returns the other:

        if ((what == MNTON) && !strcmp(mntbuf[i].f_mntfromname, name)) {
            if (type)
                *type = mntbuf[i].f_type;
            return (mntbuf[i].f_mntonname);
        }
        if ((what == MNTFROM) && !strcmp(mntbuf[i].f_mntonname, name)) {
            if (type)
                *type = mntbuf[i].f_type;
            return (mntbuf[i].f_mntfromname);
        }

In my case, /dev/wd0s2 was mounted on /mnt, and I invoked 'umount /mnt'.
The root vnode of the file system did not support stat(2), so umount 
ran through the mntlist and found it to a mntonname. As a result, it 
later invoked unmount(2) with "/dev/wd0s2". unmount now verified whether
this is a VROOT vnode, and failed.
In the NFS case, I can see why it is important make mntonnames out of
mntfromnames, in case somebody invokes "umount remote:/path" (stat
will fail here as well). However, I can see no reason to ever pass the
mntfromname to unmount. Any comments?

Thanks,
Martin

P.S. I know that the solution is to support stat and lstat in the root
vnode. I'm writing this because I actually had to debug umount to see
why it fails.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199607280607.IAA17525>