Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 272b62c1 authored by Goldwyn Rodrigues's avatar Goldwyn Rodrigues Committed by Joel Becker
Browse files

Treat writes as new when holes span across page boundaries



When a hole spans across page boundaries, the next write forces
a read of the block. This could end up reading existing garbage
data from the disk in ocfs2_map_page_blocks. This leads to
non-zero holes. In order to avoid this, mark the writes as new
when the holes span across page boundaries.

Signed-off-by: default avatarGoldwyn Rodrigues <rgoldwyn@suse.de>
Signed-off-by: default avatarjlbec <jlbec@evilplan.org>
parent 99bdc388
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1015,6 +1015,12 @@ static int ocfs2_prepare_page_for_write(struct inode *inode, u64 *p_blkno,
	ocfs2_figure_cluster_boundaries(OCFS2_SB(inode->i_sb), cpos,
					&cluster_start, &cluster_end);

	/* treat the write as new if the a hole/lseek spanned across
	 * the page boundary.
	 */
	new = new | ((i_size_read(inode) <= page_offset(page)) &&
			(page_offset(page) <= user_pos));

	if (page == wc->w_target_page) {
		map_from = user_pos & (PAGE_CACHE_SIZE - 1);
		map_to = map_from + user_len;