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/
This archive was generated by hypermail 2b29 : Sat Apr 15 2000 - 21:00:26 EST