2009/7/30 Timo Kreuzer timo.kreuzer@web.de:
What about long file names? Can't we use something like that to work around the patent?
Speaking of the LongFile Name patent and Journaling, there was if I recall, a Linux kernel hacker a while back that addressed both with an interesting patch. If I recall correctly, rather than storing a LFN and a SFN it would only store one or the other and then use the other record as some sort of a checksum on the file in question to achieve a similar effect as a journal record. Maybe its more analogous to UFS soft updates but I think you might get the idea. I'm not all that up on filesystem semantics but I think a bit of googling might turn up what I am talking about.
Actually thats just being developed into FullFAT already in preparation for the 1.0.0 release. I believe I already mentioned it, but here's a link the the linux kernel mailing list that explains how the patch works and why its legally valid.
http://lkml.org/lkml/2009/6/26/314 -- A legal discussion about the patch. http://lkml.org/lkml/2009/6/26/313 -- Technical details of what the patch does.
FAT stores a checksum in LFNs of the shortname, this can be used to verify the integrity of LFN entries in a directory. Of course using the linux patch, the short name can be used for other puposes. However its not really journaling because you still have to scan all the directories. This takes a long time.
Sarocet also makes a good point about the problem with a ReactOS journaling file. The journal should store some kind of hash or checksum value of the state of the FAT table (which is probably too big). Or atleast the directories affected by the journal changes. If this hash differs before journal transactions are committed to the FS then the journal should clear that transaction and not commit it.
Really journaling should only be enabled for a ReactOS system partition, using journaling on removable media wouldn't bring any great benefit, because of the effect that Sarocet described.
Still I think the journaling is something we won't add until the driver is working and stable.
James