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)
commit8a850c3fb8d0f204eabc1a32b502f47d3c16eac4
tree7178b6117c8d559e4de519bfc17e792f6456bdd8
parentb6a8e62f8b0aec7607c947ba0d37d30fef65440f
ext4: Make ext4_bio_writepage() handle unprepared buffers

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>
fs/ext4/page-io.c