In f2fs_map_blocks(), we should bail out once __allocate_data_block()
failed.

Fixes: f847c699cff3 ("f2fs: allow out-place-update for direct IO in LFS mode")
Signed-off-by: Chao Yu <[email protected]>
---
 fs/f2fs/data.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 727df32382c6..777888ba171a 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -1195,10 +1195,10 @@ int f2fs_map_blocks(struct inode *inode, struct 
f2fs_map_blocks *map,
                if (test_opt(sbi, LFS) && flag == F2FS_GET_BLOCK_DIO &&
                                                        map->m_may_create) {
                        err = __allocate_data_block(&dn, map->m_seg_type);
-                       if (!err) {
-                               blkaddr = dn.data_blkaddr;
-                               set_inode_flag(inode, FI_APPEND_WRITE);
-                       }
+                       if (err)
+                               goto sync_out;
+                       blkaddr = dn.data_blkaddr;
+                       set_inode_flag(inode, FI_APPEND_WRITE);
                }
        } else {
                if (create) {
-- 
2.18.0.rc1

Reply via email to