ext4: Make ext4_bio_writepage() handle unprepared buffers
authorJan Kara <jack@suse.cz>
Tue, 29 Jan 2013 01:53:28 +0000 (20:53 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 29 Jan 2013 01:53:28 +0000 (20:53 -0500)
So far ext4_bio_writepage() unconditionally cleared dirty bit on all
buffers underlying the page. That implicitely assumes we can write all
buffers. So far that is true because callers call into
ext4_bio_writepage() make sure all buffers in the page are mapped but:

a) it's a data corruption bug waiting to happen
b) in data=ordered mode when blocksize < pagesize we do need to write
   pages that may have only some of dirty buffers mapped.

So change ext4_bio_writepage() to skip buffers that cannot be written without
clearing their dirty bit.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

No differences found