mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
ntfs: not zero out range beyond init in punch_hole
The area beyond initialized_size are read as zero values, there is no need to zero out that region. Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
This commit is contained in:
parent
8b4064e614
commit
ca513e492f
|
|
@ -876,14 +876,19 @@ static int ntfs_punch_hole(struct ntfs_inode *ni, int mode, loff_t offset,
|
|||
end_vcn = ntfs_bytes_to_cluster(vol, end_offset - 1) + 1;
|
||||
|
||||
if (offset & vol->cluster_size_mask) {
|
||||
loff_t to;
|
||||
if (offset < ni->initialized_size) {
|
||||
loff_t to;
|
||||
|
||||
to = min_t(loff_t, ntfs_cluster_to_bytes(vol, start_vcn + 1),
|
||||
end_offset);
|
||||
err = iomap_zero_range(vi, offset, to - offset, NULL,
|
||||
&ntfs_seek_iomap_ops,
|
||||
&ntfs_iomap_folio_ops, NULL);
|
||||
if (err < 0 || (end_vcn - start_vcn) == 1)
|
||||
to = min_t(loff_t,
|
||||
ntfs_cluster_to_bytes(vol, start_vcn + 1),
|
||||
end_offset);
|
||||
err = iomap_zero_range(vi, offset, to - offset,
|
||||
NULL, &ntfs_seek_iomap_ops,
|
||||
&ntfs_iomap_folio_ops, NULL);
|
||||
if (err < 0)
|
||||
goto out;
|
||||
}
|
||||
if (end_vcn - start_vcn == 1)
|
||||
goto out;
|
||||
start_vcn++;
|
||||
}
|
||||
|
|
@ -892,10 +897,14 @@ static int ntfs_punch_hole(struct ntfs_inode *ni, int mode, loff_t offset,
|
|||
loff_t from;
|
||||
|
||||
from = ntfs_cluster_to_bytes(vol, end_vcn - 1);
|
||||
err = iomap_zero_range(vi, from, end_offset - from, NULL,
|
||||
&ntfs_seek_iomap_ops,
|
||||
&ntfs_iomap_folio_ops, NULL);
|
||||
if (err < 0 || (end_vcn - start_vcn) == 1)
|
||||
if (from < ni->initialized_size) {
|
||||
err = iomap_zero_range(vi, from, end_offset - from,
|
||||
NULL, &ntfs_seek_iomap_ops,
|
||||
&ntfs_iomap_folio_ops, NULL);
|
||||
if (err < 0)
|
||||
goto out;
|
||||
}
|
||||
if (end_vcn - start_vcn == 1)
|
||||
goto out;
|
||||
end_vcn--;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user