Bang head on wall time. You need more than partially ordered writes to
solve what you describe. Consider adding a 4K block to a file. You must
write
The inode - new size, block count
The indirect block (maybe blocks) with the block number
The data block.
Now you can order those however you like as strictly as you like I can
still turn the power off at any point.
Ext2fs (generally)
update data block
update inode
update indirect block
So potentially the data update is lost on a power off because the inode
or indirect block isnt written.
BSD (strict)
update inode
update indirect block
update data block
And if I turn the power off your file is 4K larger, consistent with its
meta-data and containing 4K of unspecified random previous data - eg a previous
copy of the shadow password file, a private note to your girlfriend whatever..
You can pick any order of update you like, you still lose. Only a transaction
based file system where you atomically write a transaction, then commit it
is capable of resolving the situation.
Anyone who can't grasp such basic facts shouldnt be writing books on file
systems
Alan
-
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/