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

Commit f81c9cdc authored by Sage Weil's avatar Sage Weil Committed by Chris Mason
Browse files

Btrfs: truncate pages from clone ioctl target range



We need to truncate page cache pages for the clone ioctl target range or
else we'll confuse ourselves to no end.  If the old data was cached, we
used to still see it (until remount).  If the page was partially updated
we used to get a mix of old and new data.

Signed-off-by: default avatarSage Weil <sage@newdream.net>
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 0e588859
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2244,6 +2244,10 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
		btrfs_wait_ordered_range(src, off, len);
	}

	/* truncate page cache pages from target inode range */
	truncate_inode_pages_range(&inode->i_data, off,
				   ALIGN(off + len, PAGE_CACHE_SIZE) - 1);

	/* clone data */
	key.objectid = btrfs_ino(src);
	key.type = BTRFS_EXTENT_DATA_KEY;