void *fsdata;
                loff_t size = inode->i_size;
 
-               res = pagecache_write_begin(NULL, mapping, size, 0, 0,
-                                           &page, &fsdata);
+               res = hfsplus_write_begin(NULL, mapping, size, 0,
+                                         &page, &fsdata);
                if (res)
                        return;
-               res = pagecache_write_end(NULL, mapping, size,
-                       0, 0, page, fsdata);
+               res = generic_write_end(NULL, mapping, size, 0, 0,
+                                       page, fsdata);
                if (res < 0)
                        return;
                mark_inode_dirty(inode);
 
 extern const struct address_space_operations hfsplus_btree_aops;
 extern const struct dentry_operations hfsplus_dentry_operations;
 
+int hfsplus_write_begin(struct file *file, struct address_space *mapping,
+               loff_t pos, unsigned len, struct page **pagep, void **fsdata);
 struct inode *hfsplus_new_inode(struct super_block *sb, struct inode *dir,
                                umode_t mode);
 void hfsplus_delete_inode(struct inode *inode);
 
        }
 }
 
-static int hfsplus_write_begin(struct file *file, struct address_space *mapping,
-                       loff_t pos, unsigned len,
-                       struct page **pagep, void **fsdata)
+int hfsplus_write_begin(struct file *file, struct address_space *mapping,
+               loff_t pos, unsigned len, struct page **pagep, void **fsdata)
 {
        int ret;