linux/fs/udf
Jan Kara 16d0556568 udf: Discard preallocation before extending file with a hole
When extending file with a hole, we tried to preserve existing
preallocation for the file. However that is not very useful and
complicates code because the previous extent may need to be rounded to
block boundary as well (which we forgot to do thus causing data
corruption for sequence like:

xfs_io -f -c "pwrite 0x75e63 11008" -c "truncate 0x7b24b" \
  -c "truncate 0xabaa3" -c "pwrite 0xac70b 22954" \
  -c "pwrite 0x93a43 11358" -c "pwrite 0xb8e65 52211" file

with 512-byte block size. Just discard preallocation before extending
file to simplify things and also fix this data corruption.

CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
2022-12-09 12:37:26 +01:00
..
balloc.c treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
dir.c udf: replace ll_rw_block() 2022-09-11 20:26:07 -07:00
directory.c udf: replace ll_rw_block() 2022-09-11 20:26:07 -07:00
ecma_167.h udf: Get rid of 0-length arrays in struct fileIdentDesc 2021-08-11 16:54:44 +02:00
file.c udf: Support splicing to file 2022-09-12 13:03:20 +02:00
ialloc.c udf: Fix error handling in udf_new_inode() 2021-12-15 13:08:34 +01:00
inode.c udf: Discard preallocation before extending file with a hole 2022-12-09 12:37:26 +01:00
Kconfig docs: filesystems: fix renamed references 2020-04-20 15:45:22 -06:00
lowlevel.c udf: use sb_bdev_nr_blocks 2021-10-18 14:43:23 -06:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
misc.c udf_get_extendedattr() had no boundary checks. 2021-08-23 13:35:19 +02:00
namei.c udf: Avoid double brelse() in udf_rename() 2022-10-24 17:35:04 +02:00
osta_udf.h udf: Get rid of 0-length arrays 2021-08-11 16:54:44 +02:00
partition.c udf: Remove pointless union in udf_inode_info 2020-09-29 17:21:54 +02:00
super.c fs: udf: Optimize udf_free_in_core_inode and udf_find_fileset function 2022-10-24 16:49:00 +02:00
symlink.c udf: Convert adinicb and symlinks to read_folio 2022-05-09 16:21:46 -04:00
truncate.c udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size 2022-12-09 12:37:26 +01:00
udf_i.h udf: Remove pointless union in udf_inode_info 2020-09-29 17:21:54 +02:00
udf_sb.h udf: Increase UDF_MAX_READ_VERSION to 0x0260 2022-12-05 11:50:44 +01:00
udfdecl.h udf: Get rid of 0-length arrays in struct fileIdentDesc 2021-08-11 16:54:44 +02:00
udfend.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udftime.c udf: convert inode stamps to timespec64 2018-06-27 13:58:00 +02:00
unicode.c udf: Fix iocharset=utf8 mount option 2021-08-12 16:07:09 +02:00