trace_f2fs_write_end(inode, pos, len, copied);
 
-       if (f2fs_is_atomic_file(inode))
+       if (f2fs_is_atomic_file(inode) || f2fs_is_volatile_file(inode))
                register_inmem_page(inode, page);
        else
                set_page_dirty(page);
 
 #define F2FS_IOCTL_MAGIC               0xf5
 #define F2FS_IOC_START_ATOMIC_WRITE    _IO(F2FS_IOCTL_MAGIC, 1)
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE   _IO(F2FS_IOCTL_MAGIC, 2)
+#define F2FS_IOC_START_VOLATILE_WRITE  _IO(F2FS_IOCTL_MAGIC, 3)
 
 #if defined(__KERNEL__) && defined(CONFIG_COMPAT)
 /*
        FI_UPDATE_WRITE,        /* inode has in-place-update data */
        FI_NEED_IPU,            /* used for ipu per file */
        FI_ATOMIC_FILE,         /* indicate atomic file */
+       FI_VOLATILE_FILE,       /* indicate volatile file */
 };
 
 static inline void set_inode_flag(struct f2fs_inode_info *fi, int flag)
        return is_inode_flag_set(F2FS_I(inode), FI_ATOMIC_FILE);
 }
 
+static inline bool f2fs_is_volatile_file(struct inode *inode)
+{
+       return is_inode_flag_set(F2FS_I(inode), FI_VOLATILE_FILE);
+}
+
 static inline void *inline_data_addr(struct page *page)
 {
        struct f2fs_inode *ri = F2FS_INODE(page);
 
        if (!inode_owner_or_capable(inode))
                return -EACCES;
 
+       if (f2fs_is_volatile_file(inode))
+               return 0;
+
        ret = mnt_want_write_file(filp);
        if (ret)
                return ret;
        return ret;
 }
 
+static int f2fs_ioc_start_volatile_write(struct file *filp)
+{
+       struct inode *inode = file_inode(filp);
+
+       if (!inode_owner_or_capable(inode))
+               return -EACCES;
+
+       set_inode_flag(F2FS_I(inode), FI_VOLATILE_FILE);
+       return 0;
+}
+
 static int f2fs_ioc_fitrim(struct file *filp, unsigned long arg)
 {
        struct inode *inode = file_inode(filp);
                return f2fs_ioc_start_atomic_write(filp);
        case F2FS_IOC_COMMIT_ATOMIC_WRITE:
                return f2fs_ioc_commit_atomic_write(filp);
+       case F2FS_IOC_START_VOLATILE_WRITE:
+               return f2fs_ioc_start_volatile_write(filp);
        case FITRIM:
                return f2fs_ioc_fitrim(filp, arg);
        default:
 
        nid_t xnid = F2FS_I(inode)->i_xattr_nid;
 
        /* some remained atomic pages should discarded */
-       if (f2fs_is_atomic_file(inode))
+       if (f2fs_is_atomic_file(inode) || f2fs_is_volatile_file(inode))
                commit_inmem_pages(inode, true);
 
        trace_f2fs_evict_inode(inode);