Re: [NOT FIXED] Re: umount2

Russell King (rmk@arm.linux.org.uk)
Sat, 15 Apr 2000 14:35:50 +0100 (BST)


Alexander Viro writes:
> Huh? What about more verbose output?

That's about as verbose as this mount gets, sorry.

> Urgh. What about doing the following trick: in fs/super.c::do_umount(),

Ok, added. When I shutdown to single user mode and try to umount /var,
I get:

umount: busy (/log/wtmp)

If I thien "halt" from single user, I get:

umount: busy (/run/random-seed)
umount: busy (/log/wtmp)

It appears that touching a file creates these. Eg, on a live system with
you patch in:

touch /var/run/tst
umount /var
(brings up a list of busy dentries, not including /var/run/tst)
touch /var/run/tst
umount /var
(brings up a list of busy dentries, *including* /var/run/tst)

The difference seens to be the way touch works. In the second attempt,
strace reveals:

open("/var/run/tst", O_WRONLY|O_CREAT|O_EXCL, 0666) = -1 EEXIST (File exists)

Looking in fs/namei.c, open_namei(), it appears that the code is probably
following the path:

dir = dget(nd->dentry);
...
dentry = lookup_hash(&nd->last, dget(nd->dentry));
...
if (dentry->d_inode) {
...
dput(dir); /* dir is balanced again */
error = -EEXIST;
if (flag & O_EXCL)
goto exit;
...
exit:
dput(nd->dentry);
mntput(nd->mnt);
return error;
/* "dentry" is still in-use */
_____
|_____| ------------------------------------------------- ---+---+-
| | Russell King rmk@arm.linux.org.uk --- ---
| | | | http://www.arm.linux.org.uk/~rmk/aboutme.html / / |
| +-+-+ --- -+-
/ | THE developer of ARM Linux |+| /|\
/ | | | --- |
+-+-+ ------------------------------------------------- /\\\ |

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/