Messages in this thread | | | Date | Tue, 5 Jan 1999 22:41:22 +0100 (MET) | From | Andries.Brouwer@cwi ... | Subject | Re: dcache problems with vfat |
| |
> 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/
| |