dentries question (umsdos)

Matija Nalis (Matija.Nalis@public.srce.hr)
Tue, 3 Mar 1998 12:16:22 +0100 (MET)


Here is a problem that I had while fixing umsdosfs:

It is rather specific filesystem, that uses msdosfs as underlaying layer.
It needs to use msdos file named '--linux-.---' at many places. To do
that (using msdos_lookup and other functions) it uses following code to
create dentry:

struct dentry *ret, *parent=NULL;
struct qstr qname;

qname.name = name; /* this is passed */
qname.len = len; /* this is passed */
qname.hash = 0;

ret = d_alloc (parent,&qname); /* create new dentry */
d_add (ret, inode); /* inode is passed */

the question is next:
after the dentry has been used and is no longer needed, what do I need to do
get rid of it ? d_invalidate ?

Also question about iput() and dput() - when those should be called and what
exactly do they do ?

problem is that I had messages like
iput: device 02:00 inode 309 still has aliases !
(some of old not-yet-converted-code calls iput on dentry that still exists)

and
VFS: busy inodes after unmount. self-destruct in 5 seconds. Bye-bye.
on umount.

And then strange problems if I try to mount something other at that
mountpoint, usually followed by kernel panic.

I would appreciate any input or pointer (to something other than 'read the
source' - I'm getting lost in it :) anyone can give me.

TIA,
Matija

--
Opinions above are GNU-copylefted.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu