f2fs: fix to check return value in f2fs_insert_range()
authorChao Yu <chao@kernel.org>
Mon, 26 Feb 2024 03:19:16 +0000 (11:19 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 4 Mar 2024 17:51:52 +0000 (09:51 -0800)
In f2fs_insert_range(), it missed to check return value of
filemap_write_and_wait_range(), fix it.

Meanwhile, just return error number once __exchange_data_block()
fails.

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/file.c

index 1c044fb19c87d83c984099a83857c83373d71831..4ca6c693b33a507936df6ac49960309b647b87c9 100644 (file)
@@ -1679,10 +1679,12 @@ static int f2fs_insert_range(struct inode *inode, loff_t offset, loff_t len)
        }
        filemap_invalidate_unlock(mapping);
        f2fs_up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
+       if (ret)
+               return ret;
 
        /* write out all moved pages, if possible */
        filemap_invalidate_lock(mapping);
-       filemap_write_and_wait_range(mapping, offset, LLONG_MAX);
+       ret = filemap_write_and_wait_range(mapping, offset, LLONG_MAX);
        truncate_pagecache(inode, offset);
        filemap_invalidate_unlock(mapping);