mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 12:14:10 +08:00
fsdax: remove zeroing code from dax_unshare_iter
[ Upstream commit95472274b6
] 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 commit13dd4e0462
("fsdax: unshare: zero destination if srcmap is HOLE or UNWRITTEN") Cc: ruansy.fnst@fujitsu.com Signed-off-by: Darrick J. Wong <djwong@kernel.org> Link: https://lore.kernel.org/r/172796813311.1131942.16033376284752798632.stgit@frogsfrogsfrogs Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Christian Brauner <brauner@kernel.org> Stable-dep-of:50793801fc
("fsdax: dax_unshare_iter needs to copy entire blocks") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e84223962e
commit
67b6a710b9
8
fs/dax.c
8
fs/dax.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user