Re: question about possibility of data loss in Ext2/3 file system
From: Andreas Dilger
Date: Wed Feb 22 2006 - 18:05:22 EST
On Feb 22, 2006 17:34 -0500, Xin Zhao wrote:
> Apparently the scheme you described helps improve the file integrity.
> But still not good enough. For example, if all data blocks are
> flushed, then you will update the metadata. But right after you update
> the block bitmap and before you update the inode, you lose power. You
> will get some dead blocks. Right? Do you know how ext2/3 deal with
> this situation?
ext3 journals changes to the filesystem metadata, and if the journal
update is not fully written to disk (committed) then the change to
the filesystem _metadata_ is NOT actually performed. Only if the
metadata change is committed to the journal does it actually continue
and update the filesystem metatada. If that is interrupted then journal
replay will re-do the operation.
> Also, the scheme you mentioned is just for new file creation. What
> will happen if I want to update an existing file? Say, I open file A,
> seek to offset 5000, write 4096 bytes, and then close. Do you know how
> ext2/3 handle this situation?
The above is not relevant to any _data_ changes, just metadata, unless
the file(system) is running in data-journal mode. In that case the write
is written to the journal before being written into the filesystem. There
is a limitation on how large such a write can be before it is split into
smaller (non-atomic) transactions in the journal. The data-journal mode
also writes twice as much data to disk so can impact performance if you
are already using more than 1/2 of your disk bandwidth.
Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/