return block_read_full_page(page, bfs_get_block);
 }
 
-static int bfs_prepare_write(struct file *file, struct page *page, unsigned from, unsigned to)
+static int bfs_write_begin(struct file *file, struct address_space *mapping,
+                       loff_t pos, unsigned len, unsigned flags,
+                       struct page **pagep, void **fsdata)
 {
-       return block_prepare_write(page, from, to, bfs_get_block);
+       *pagep = NULL;
+       return block_write_begin(file, mapping, pos, len, flags,
+                                       pagep, fsdata, bfs_get_block);
 }
 
 static sector_t bfs_bmap(struct address_space *mapping, sector_t block)
        .readpage       = bfs_readpage,
        .writepage      = bfs_writepage,
        .sync_page      = block_sync_page,
-       .prepare_write  = bfs_prepare_write,
-       .commit_write   = generic_commit_write,
+       .write_begin    = bfs_write_begin,
+       .write_end      = generic_write_end,
        .bmap           = bfs_bmap,
 };