Re: dcache problems with vfat

Andries.Brouwer@cwi.nl
Tue, 5 Jan 1999 22:41:22 +0100 (MET)


> Maybe vfat does something that confuses the child lists?

If I am not mistaken (hope to find time later this evening
to look a little bit more into this) it is simply this:

A dcache entry referring to some inode is created: i_count=1.
A second dcache entry referring to the same inode is created
because revalidate() on the first one failed. Now i_count=2.
For rmdir the test for an empty directory vfat_empty() fails:
if (dir->i_count > 1)
return -EBUSY;

Off-hand I tend to agree with your first reply, that the first
dcache entry should not just be dropped but released entirely,
so that i_count is decreased again.

However, such changes affect all filesystems simultaneously -
or at least all that have a non-NULL revalidate function -
and I wouldnt like to do that without first having a formal
specification.

(Something else is that the present vfat revalidate() seems to
cause lots of unnecessary lookups, but of course efficiency
is a secondary concern. I would like to hear from Gordon why
things are as they are at present.)

Andries

-
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/