BACKPORT: f2fs: allocate node blocks for atomic write block replacement

When a node block is missing for atomic write block replacement, we need
to allocate it in advance of the replacement.

Bug: 298879042
Bug: 308706939
Change-Id: Ia9daad11660068d40bda255ff585d42f89e09399
Signed-off-by: Daeho Jeong <daehojeong@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 4bfa7f8c9f4561f707366ad1a1b56a2f7d3645aa)
Signed-off-by: zhoudan8 <zhoudan8@xiaomi.com>
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index f0c4b7e..1d10990 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -216,7 +216,7 @@
 
 retry:
 	set_new_dnode(&dn, inode, NULL, NULL, 0);
-	err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE_RA);
+	err = f2fs_get_dnode_of_data(&dn, index, ALLOC_NODE);
 	if (err) {
 		if (err == -ENOMEM) {
 			f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);