Unverified Commit 95472274 authored by Darrick J. Wong's avatar Darrick J. Wong Committed by Christian Brauner
Browse files

fsdax: remove zeroing code from dax_unshare_iter



Remove the code in dax_unshare_iter that zeroes the destination memory
because it's not necessary.

If srcmap is unwritten, we don't have to do anything because that
unwritten extent came from the regular file mapping, and unwritten
extents cannot be shared.  The same applies to holes.

Furthermore, zeroing to unshare a mapping is just plain wrong because
unsharing means copy on write, and we should be copying data.

This is effectively a revert of commit 13dd4e04 ("fsdax: unshare:
zero destination if srcmap is HOLE or UNWRITTEN")

Cc: ruansy.fnst@fujitsu.com
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Link: https://lore.kernel.org/r/172796813311.1131942.16033376284752798632.stgit@frogsfrogsfrogs


Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 6ef6a0e8
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -1276,14 +1276,6 @@ static s64 dax_unshare_iter(struct iomap_iter *iter)
	if (ret < 0)
		goto out_unlock;

	/* zero the distance if srcmap is HOLE or UNWRITTEN */
	if (srcmap->flags & IOMAP_F_SHARED || srcmap->type == IOMAP_UNWRITTEN) {
		memset(daddr, 0, length);
		dax_flush(iomap->dax_dev, daddr, length);
		ret = length;
		goto out_unlock;
	}

	ret = dax_iomap_direct_access(srcmap, pos, length, &saddr, NULL);
	if (ret < 0)
		goto out_unlock;