aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/page-io.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index 4cb2743cb2e3..b6a3804a9855 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -422,6 +422,17 @@ int ext4_bio_write_page(struct ext4_io_submit *io,
422 ClearPageError(page); 422 ClearPageError(page);
423 423
424 /* 424 /*
425 * Comments copied from block_write_full_page_endio:
426 *
427 * The page straddles i_size. It must be zeroed out on each and every
428 * writepage invocation because it may be mmapped. "A file is mapped
429 * in multiples of the page size. For a file that is not a multiple of
430 * the page size, the remaining memory is zeroed when mapped, and
431 * writes to that region are not written out to the file."
432 */
433 if (len < PAGE_CACHE_SIZE)
434 zero_user_segment(page, len, PAGE_CACHE_SIZE);
435 /*
425 * In the first loop we prepare and mark buffers to submit. We have to 436 * In the first loop we prepare and mark buffers to submit. We have to
426 * mark all buffers in the page before submitting so that 437 * mark all buffers in the page before submitting so that
427 * end_page_writeback() cannot be called from ext4_bio_end_io() when IO 438 * end_page_writeback() cannot be called from ext4_bio_end_io() when IO
@@ -432,19 +443,6 @@ int ext4_bio_write_page(struct ext4_io_submit *io,
432 do { 443 do {
433 block_start = bh_offset(bh); 444 block_start = bh_offset(bh);
434 if (block_start >= len) { 445 if (block_start >= len) {
435 /*
436 * Comments copied from block_write_full_page_endio:
437 *
438 * The page straddles i_size. It must be zeroed out on
439 * each and every writepage invocation because it may
440 * be mmapped. "A file is mapped in multiples of the
441 * page size. For a file that is not a multiple of
442 * the page size, the remaining memory is zeroed when
443 * mapped, and writes to that region are not written
444 * out to the file."
445 */
446 zero_user_segment(page, block_start,
447 block_start + blocksize);
448 clear_buffer_dirty(bh); 446 clear_buffer_dirty(bh);
449 set_buffer_uptodate(bh); 447 set_buffer_uptodate(bh);
450 continue; 448 continue;