Messages in this thread | | | Subject | Re: Linux 2.2.11pre2 proposed patch | Date | Tue, 20 Jul 1999 10:59:37 -0700 | From | Craig Milo Rogers <> |
| |
>> 2.2.11pre2, and I get the same behavior, namely the inode numbers on >> vfat partitions change between boots. I use tar for incremental > >Yes, they do. VFAT has *no* reliable inumbers. Never had. You have to >choose between inumber changing on rename(), lots of races or inmuber >changing across umount;mount. The latter is the smallest breakage. ... >Let me put it that way - inumber is a key allowing to identify the file. >It should not change while the file is opened. Thus we can't use directory >entry location (rename()) or the first cluster number (truncate() and >write()). The latter is obviously unacceptable. The former is nasty ... > You are dealing with inherently sucking filesystem. Sorry. There >is *no* out-of-directory metadata and thus there is no persistent inodes.
If you are willing to accept the still-not-ideal constraint that the inode number stays constant so long as only Linux (or, in any case, another system employing the same algorithm) performs directory operations on the filesystem in questions, you might implement an auxiliary file that holds persistent inode mappings.
The natural place to put the inode map would be on the same underlying FAT filesystem, but for extra brownie points you could perhaps arrange for it to be located on a different filesystem. To protect against external meddling (e.g., renaming a file with Ms. Windows), the persistent inode map should contain checksums of the VFAT filesystem's underlying directory pages.
This is piling cruft upon cruft, but it could be made to work under the given constraint. It could even be yet another layered filesystem (PVFAT?) in the towering FAT ensemble. Future generations will not thank you, though.
Craig Milo Rogers
- 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/
| |