goto out;
        }
  
-       /* Create a COW inode for atomic write */
-       pinode = f2fs_iget(inode->i_sb, fi->i_pino);
-       if (IS_ERR(pinode)) {
-               f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
-               ret = PTR_ERR(pinode);
-               goto out;
-       }
+       /* Check if the inode already has a COW inode */
+       if (fi->cow_inode == NULL) {
+               /* Create a COW inode for atomic write */
+               pinode = f2fs_iget(inode->i_sb, fi->i_pino);
+               if (IS_ERR(pinode)) {
+                       f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
+                       ret = PTR_ERR(pinode);
+                       goto out;
+               }
  
-       ret = f2fs_get_tmpfile(idmap, pinode, &fi->cow_inode);
-       iput(pinode);
-       if (ret) {
-               f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
-               goto out;
 -              ret = f2fs_get_tmpfile(mnt_userns, pinode, &fi->cow_inode);
++              ret = f2fs_get_tmpfile(idmap, pinode, &fi->cow_inode);
+               iput(pinode);
+               if (ret) {
+                       f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
+                       goto out;
+               }
+ 
+               set_inode_flag(fi->cow_inode, FI_COW_FILE);
+               clear_inode_flag(fi->cow_inode, FI_INLINE_DATA);
+       } else {
+               /* Reuse the already created COW inode */
+               f2fs_do_truncate_blocks(fi->cow_inode, 0, true);
        }
  
        f2fs_write_inode(inode, NULL);
 
        return finish_open_simple(file, err);
  }
  
 -static int f2fs_create_whiteout(struct user_namespace *mnt_userns,
 +static int f2fs_create_whiteout(struct mnt_idmap *idmap,
                                struct inode *dir, struct inode **whiteout)
  {
-       if (unlikely(f2fs_cp_error(F2FS_I_SB(dir))))
-               return -EIO;
- 
 -      return __f2fs_tmpfile(mnt_userns, dir, NULL,
 +      return __f2fs_tmpfile(idmap, dir, NULL,
                                S_IFCHR | WHITEOUT_MODE, true, whiteout);
  }