On Tuesday June 12, [EMAIL PROTECTED] wrote:
> 
> 
> On Wed, 13 Jun 2001, Neil Brown wrote:
> 
> >    Call fat_iget(i_location).
> >     If this finds something, check i_logstart. 
> >     If it matches, assume SUCCESS.
> > 
> >    Then comes the tricky bit:  read the directory entry
> >     indicated by i_location, check the i_logstart is right,
> >     if it is, try to get it into the inode cache properly.
> 
> Uh-huh. Suppose that directory had been removed and space had been
> reused by a regular file. Which had been filled with the right
> contents. It's really not hard to do. Now, remove that file and
> you've got a nice data corruption waiting to happen.

Told you it was tricky!!

Let's see now... We could also store the disc address of the start of
the directory in the filehandle.
Then we examine the FAT to see if the file starting at that block
looks like a directory, and contains the target directory entry.
If it does, we extract the ".." entry (do FAT directories have and
analogue of ".." entries?) and keep going up the tree until we find
the root, or we have tried too hard.

Once we hit the root we will have collected a full path name for the
file, so we just do lots of lookups to get it into the caches.

Ugh.

I might just do that first step (find_ino) and offer it as as an
experimental patch to the growing number of people who have asked for
nfs exporting of FAT filesystems, and see how reliable it is in
practice.

NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to