mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
f2fs: avoid wrong f2fs_bug_on when truncating inline_data
This patch removes wrong f2fs_bug_on in truncate_inline_inode. When there is no space, it can happen a corner case where i_isze is over MAX_INLINE_SIZE while its inode is still inline_data. The scenario is 1. write small data into file #A. 2. fill the whole partition to 100%. 3. truncate 4096 on file #A. 4. write data at 8192 offset. --> f2fs_write_begin -> -ENOSPC = f2fs_convert_inline_page -> f2fs_write_failed -> truncate_blocks -> truncate_inline_inode BUG_ON, since i_size is 4096. Reviewed-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
78373b7319
commit
83e21db693
@ -54,13 +54,6 @@ bool truncate_inline_inode(struct page *ipage, u64 from)
|
|||||||
{
|
{
|
||||||
void *addr;
|
void *addr;
|
||||||
|
|
||||||
/*
|
|
||||||
* we should never truncate inline data past max inline data size,
|
|
||||||
* because we always convert inline inode to normal one before
|
|
||||||
* truncating real data if new size is past max inline data size.
|
|
||||||
*/
|
|
||||||
f2fs_bug_on(F2FS_P_SB(ipage), from > MAX_INLINE_DATA);
|
|
||||||
|
|
||||||
if (from >= MAX_INLINE_DATA)
|
if (from >= MAX_INLINE_DATA)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user