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

Commit 225c5161 authored by Jan Kara's avatar Jan Kara
Browse files

ext2: Unmap metadata when zeroing blocks



When zeroing blocks for DAX allocations, we also have to unmap aliases
in the block device mappings. Otherwise writeback can overwrite zeros
with stale data from block device page cache.

Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 5d3ddd84
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -733,6 +733,16 @@ static int ext2_get_blocks(struct inode *inode,
	}

	if (IS_DAX(inode)) {
		int i;

		/*
		 * We must unmap blocks before zeroing so that writeback cannot
		 * overwrite zeros with stale data from block device page cache.
		 */
		for (i = 0; i < count; i++) {
			unmap_underlying_metadata(inode->i_sb->s_bdev,
					le32_to_cpu(chain[depth-1].key) + i);
		}
		/*
		 * block must be initialised before we put it in the tree
		 * so that it's not found by another thread before it's