Chao Yu
b8962cf985
f2fs: compress: don't allow unaligned truncation on released compress inode
...
[ Upstream commit 29ed2b5dd521ce7c5d8466cd70bf0cc9d07afeee ]
f2fs image may be corrupted after below testcase:
- mkfs.f2fs -O extra_attr,compression -f /dev/vdb
- mount /dev/vdb /mnt/f2fs
- touch /mnt/f2fs/file
- f2fs_io setflags compression /mnt/f2fs/file
- dd if=/dev/zero of=/mnt/f2fs/file bs=4k count=4
- f2fs_io release_cblocks /mnt/f2fs/file
- truncate -s 8192 /mnt/f2fs/file
- umount /mnt/f2fs
- fsck.f2fs /dev/vdb
[ASSERT] (fsck_chk_inode_blk:1256) --> ino: 0x5 has i_blocks: 0x00000002, but has 0x3 blocks
[FSCK] valid_block_count matching with CP [Fail] [0x4, 0x5]
[FSCK] other corrupted bugs [Fail]
The reason is: partial truncation assume compressed inode has reserved
blocks, after partial truncation, valid block count may change w/o
.i_blocks and .total_valid_block_count update, result in corruption.
This patch only allow cluster size aligned truncation on released
compress inode for fixing.
Fixes: c61404153eb6 ("f2fs: introduce FI_COMPRESS_RELEASED instead of using IMMUTABLE bit")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-16 13:32:21 +02:00
..
2024-05-17 11:48:05 +02:00
2023-02-01 08:23:11 +01:00
2024-03-26 18:22:01 -04:00
2023-09-23 11:01:04 +02:00
2024-05-25 16:19:06 +02:00
2024-03-06 14:37:50 +00:00
2024-02-23 08:42:29 +01:00
2024-03-01 13:16:46 +01:00
2023-03-11 16:39:51 +01:00
2023-09-21 09:45:15 +02:00
2022-11-10 18:14:25 +01:00
2024-01-25 14:37:36 -08:00
2022-02-01 17:25:39 +01:00
2023-09-19 12:20:22 +02:00
2024-06-16 13:32:01 +02:00
2024-01-25 14:37:40 -08:00
2024-03-01 13:16:48 +01:00
2023-11-28 16:54:52 +00:00
2023-09-23 11:01:07 +02:00
2024-06-16 13:32:14 +02:00
2024-06-16 13:32:21 +02:00
2024-04-13 12:58:08 +02:00
2021-09-18 13:40:15 +02:00
2024-04-13 12:58:19 +02:00
2024-06-16 13:32:05 +02:00
2023-03-11 16:39:55 +01:00
2023-05-30 12:57:47 +01:00
2021-04-14 08:42:06 +02:00
2024-03-15 10:48:22 -04:00
2022-07-07 17:52:19 +02:00
2024-04-13 12:59:46 +02:00
2024-03-01 13:16:47 +01:00
2024-06-16 13:32:02 +02:00
2024-02-23 08:42:04 +01:00
2024-02-23 08:42:14 +01:00
2023-09-19 12:20:15 +02:00
2022-04-13 21:01:01 +02:00
2024-05-17 11:47:59 +02:00
2023-12-08 08:46:10 +01:00
2024-06-16 13:32:01 +02:00
2023-09-19 12:20:04 +02:00
2023-07-27 08:44:15 +02:00
2022-11-25 17:45:57 +01:00
2023-09-19 12:20:09 +02:00
2024-06-16 13:32:01 +02:00
2023-01-14 10:16:20 +01:00
2023-11-28 16:54:57 +00:00
2023-11-28 16:54:56 +00:00
2024-04-13 12:59:41 +02:00
2021-09-30 10:11:08 +02:00
2024-03-26 18:21:56 -04:00
2023-07-27 08:44:13 +02:00
2023-09-19 12:20:06 +02:00
2023-02-22 12:55:56 +01:00
2024-05-02 16:23:39 +02:00
2024-04-13 12:59:45 +02:00
2023-09-23 11:01:10 +02:00
2024-04-13 12:58:09 +02:00
2023-09-19 12:20:23 +02:00
2024-04-13 12:59:25 +02:00
2023-09-19 12:20:22 +02:00
2023-06-14 11:09:59 +02:00
2024-03-01 13:16:43 +01:00
2024-04-13 12:58:53 +02:00
2023-09-23 11:01:09 +02:00
2023-10-10 21:53:35 +02:00
2022-11-03 23:57:49 +09:00
2022-06-09 10:20:47 +02:00
2023-01-14 10:16:13 +01:00
2024-01-15 18:48:03 +01:00
2022-11-25 17:45:56 +01:00
2023-01-14 10:15:59 +01:00
2023-01-04 11:39:22 +01:00
2022-06-09 10:21:16 +02:00
2024-02-23 08:42:10 +01:00
2021-04-14 08:41:58 +02:00
2023-09-19 12:20:06 +02:00
2023-06-21 15:45:37 +02:00
2024-04-13 12:59:03 +02:00
2022-10-30 09:41:18 +01:00
2024-03-26 18:21:47 -04:00
2022-05-18 10:23:48 +02:00
2023-08-11 11:57:53 +02:00
2023-07-27 08:44:13 +02:00
2023-05-17 11:48:10 +02:00
2023-12-08 08:46:15 +01:00
2023-07-27 08:44:13 +02:00
2024-02-23 08:41:53 +01:00
2021-10-27 09:56:51 +02:00
2023-01-14 10:15:19 +01:00
2023-09-23 11:01:04 +02:00
2023-01-04 11:39:23 +01:00
2023-01-14 10:16:50 +01:00
2024-02-23 08:41:54 +01:00
2024-01-25 14:37:42 -08:00
2023-08-11 11:57:53 +02:00
2024-02-23 08:42:00 +01:00
2023-01-14 10:16:27 +01:00
2021-03-17 17:06:13 +01:00
2022-12-19 12:27:30 +01:00
2021-04-21 13:00:54 +02:00
2022-07-21 21:20:01 +02:00
2024-03-26 18:21:47 -04:00
2021-07-20 16:05:59 +02:00
2022-09-05 10:28:58 +02:00
2022-10-17 17:26:07 +02:00
2022-04-27 13:53:54 +02:00
2023-05-30 12:57:55 +01:00
2023-08-11 11:57:54 +02:00
2022-08-31 17:15:14 +02:00
2022-10-26 13:25:17 +02:00
2023-01-14 10:15:16 +01:00