I am a very happy user of XFS on servers and workstations alike.
Nevertheless, I have also been bitten by the "binary zeroes
problem"... which may not be a problem but a feature, but it's hard
to tell as the information about it is sparse.
I am writing this message to create a record for our ancestors which
should finally contain all answers. Sorry if I am repeating
anything, I really tried to collect all available information for
weeks, and while there was plenty relevant to the developers, users
are left in the rain (at least I felt so).
From what I understand, binary zeroes appear to replace file
contents after a system crash. The FAQ says that this is because the
file has been allocated, but the system had no time to write, so it
was empty. What surprises me here is that XFS nulls the file.
Normally, a newly allocated file is garbage to be overwritten, not
one zero after the other. Or are the zeroes overlaid on read() when
the inode is inconsistent?
This would give credit to another explanation I have heard: The
nulling is done to prevent a file from potentially exposing contents
of another file... in this case, a previously deleted file.
So far so good, it seems like this is all based on the infamous
"mommy, someone pulled the power plug" problem, and XFS simply does
its best to keep the damage low.
But then I cannot figure out just why existing files would appear to
be nulled out after a crash. Sure, the file could have been opened
for write-truncate just when the crash happened, and if that write
never completes, XFS will overlay zeroes to the previous file
contents.
I want to end this email with two questions. First, is the above
correct, or is there anything to add/change? And second, if XFS
overlays zeroes over existing file contents, is there any way to get
the previous data off the disk short of accessing the device
directly? Or, put differently: can I temporarily disable or
circumvent the nullification if I really need to be able to get at
the data before the incomplete truncation?
Thanks for your time,
--
martin; (greetings from the heart of the sun.)
\____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
spamtraps: madduck.bogus@xxxxxxxxxxx
due to lack of interest tomorrow has been cancelled.
signature.asc
Description: Digital signature
|