return err;
 }
 
+static int f2fs_write_end(struct file *file,
+                       struct address_space *mapping,
+                       loff_t pos, unsigned len, unsigned copied,
+                       struct page *page, void *fsdata)
+{
+       struct inode *inode = page->mapping->host;
+
+       SetPageUptodate(page);
+       set_page_dirty(page);
+
+       if (pos + copied > i_size_read(inode)) {
+               i_size_write(inode, pos + copied);
+               mark_inode_dirty(inode);
+               update_inode_page(inode);
+       }
+
+       unlock_page(page);
+       page_cache_release(page);
+       return copied;
+}
+
 static ssize_t f2fs_direct_IO(int rw, struct kiocb *iocb,
                const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
        .writepage      = f2fs_write_data_page,
        .writepages     = f2fs_write_data_pages,
        .write_begin    = f2fs_write_begin,
-       .write_end      = nobh_write_end,
+       .write_end      = f2fs_write_end,
        .set_page_dirty = f2fs_set_data_page_dirty,
        .invalidatepage = f2fs_invalidate_data_page,
        .releasepage    = f2fs_release_data_page,