]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/hfs/inode.c
ocfs2: Readpages support
[linux-2.6-omap-h63xx.git] / fs / hfs / inode.c
index 02f5573e03491b597a7d68b40fb45f72f87e4a07..97f8446c4ff415e8646a868ecce82d6ef77c20eb 100644 (file)
 
 #include <linux/pagemap.h>
 #include <linux/mpage.h>
+#include <linux/sched.h>
 
 #include "hfs_fs.h"
 #include "btree.h"
 
 static const struct file_operations hfs_file_operations;
-static struct inode_operations hfs_file_inode_operations;
+static const struct inode_operations hfs_file_inode_operations;
 
 /*================ Variable-like macros ================*/
 
@@ -34,10 +35,14 @@ static int hfs_readpage(struct file *file, struct page *page)
        return block_read_full_page(page, hfs_get_block);
 }
 
-static int hfs_prepare_write(struct file *file, struct page *page, unsigned from, unsigned to)
+static int hfs_write_begin(struct file *file, struct address_space *mapping,
+                       loff_t pos, unsigned len, unsigned flags,
+                       struct page **pagep, void **fsdata)
 {
-       return cont_prepare_write(page, from, to, hfs_get_block,
-                                 &HFS_I(page->mapping->host)->phys_size);
+       *pagep = NULL;
+       return cont_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
+                               hfs_get_block,
+                               &HFS_I(mapping->host)->phys_size);
 }
 
 static sector_t hfs_bmap(struct address_space *mapping, sector_t block)
@@ -102,7 +107,7 @@ static ssize_t hfs_direct_IO(int rw, struct kiocb *iocb,
                const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
        struct file *file = iocb->ki_filp;
-       struct inode *inode = file->f_dentry->d_inode->i_mapping->host;
+       struct inode *inode = file->f_path.dentry->d_inode->i_mapping->host;
 
        return blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov,
                                  offset, nr_segs, hfs_get_block, NULL);
@@ -118,8 +123,8 @@ const struct address_space_operations hfs_btree_aops = {
        .readpage       = hfs_readpage,
        .writepage      = hfs_writepage,
        .sync_page      = block_sync_page,
-       .prepare_write  = hfs_prepare_write,
-       .commit_write   = generic_commit_write,
+       .write_begin    = hfs_write_begin,
+       .write_end      = generic_write_end,
        .bmap           = hfs_bmap,
        .releasepage    = hfs_releasepage,
 };
@@ -128,8 +133,8 @@ const struct address_space_operations hfs_aops = {
        .readpage       = hfs_readpage,
        .writepage      = hfs_writepage,
        .sync_page      = block_sync_page,
-       .prepare_write  = hfs_prepare_write,
-       .commit_write   = generic_commit_write,
+       .write_begin    = hfs_write_begin,
+       .write_end      = generic_write_end,
        .bmap           = hfs_bmap,
        .direct_IO      = hfs_direct_IO,
        .writepages     = hfs_writepages,
@@ -606,13 +611,13 @@ static const struct file_operations hfs_file_operations = {
        .write          = do_sync_write,
        .aio_write      = generic_file_aio_write,
        .mmap           = generic_file_mmap,
-       .sendfile       = generic_file_sendfile,
+       .splice_read    = generic_file_splice_read,
        .fsync          = file_fsync,
        .open           = hfs_file_open,
        .release        = hfs_file_release,
 };
 
-static struct inode_operations hfs_file_inode_operations = {
+static const struct inode_operations hfs_file_inode_operations = {
        .lookup         = hfs_file_lookup,
        .truncate       = hfs_file_truncate,
        .setattr        = hfs_inode_setattr,