fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / fs / afs / file.c
index 23c1251..2e8c426 100644 (file)
@@ -16,7 +16,6 @@
 #include <linux/slab.h>
 #include <linux/fs.h>
 #include <linux/pagemap.h>
-#include <linux/buffer_head.h>
 #include "volume.h"
 #include "vnode.h"
 #include <rxrpc/call.h>
@@ -28,51 +27,20 @@ static int afs_file_release(struct inode *inode, struct file *file);
 #endif
 
 static int afs_file_readpage(struct file *file, struct page *page);
-static int afs_file_invalidatepage(struct page *page, unsigned long offset);
-static int afs_file_releasepage(struct page *page, int gfp_flags);
-
-static ssize_t afs_file_write(struct file *file, const char __user *buf,
-                             size_t size, loff_t *off);
+static void afs_file_invalidatepage(struct page *page, unsigned long offset);
+static int afs_file_releasepage(struct page *page, gfp_t gfp_flags);
 
 struct inode_operations afs_file_inode_operations = {
        .getattr        = afs_inode_getattr,
 };
 
-struct file_operations afs_file_file_operations = {
-       .read           = generic_file_read,
-       .write          = afs_file_write,
-       .mmap           = generic_file_mmap,
-#if 0
-       .open           = afs_file_open,
-       .release        = afs_file_release,
-       .fsync          = afs_file_fsync,
-#endif
-};
-
-struct address_space_operations afs_fs_aops = {
+const struct address_space_operations afs_fs_aops = {
        .readpage       = afs_file_readpage,
-       .sync_page      = block_sync_page,
        .set_page_dirty = __set_page_dirty_nobuffers,
        .releasepage    = afs_file_releasepage,
        .invalidatepage = afs_file_invalidatepage,
 };
 
-/*****************************************************************************/
-/*
- * AFS file write
- */
-static ssize_t afs_file_write(struct file *file, const char __user *buf,
-                             size_t size, loff_t *off)
-{
-       struct afs_vnode *vnode;
-
-       vnode = AFS_FS_I(file->f_dentry->d_inode);
-       if (vnode->flags & AFS_VNODE_DELETED)
-               return -ESTALE;
-
-       return -EIO;
-} /* end afs_file_write() */
-
 /*****************************************************************************/
 /*
  * deal with notification that a page was read from the cache
@@ -242,7 +210,7 @@ int afs_cache_get_page_cookie(struct page *page,
 /*
  * invalidate part or all of a page
  */
-static int afs_file_invalidatepage(struct page *page, unsigned long offset)
+static void afs_file_invalidatepage(struct page *page, unsigned long offset)
 {
        int ret = 1;
 
@@ -268,18 +236,18 @@ static int afs_file_invalidatepage(struct page *page, unsigned long offset)
                        if (!PageWriteback(page))
                                ret = page->mapping->a_ops->releasepage(page,
                                                                        0);
+                       /* possibly should BUG_ON(!ret); - neilb */
                }
        }
 
        _leave(" = %d", ret);
-       return ret;
 } /* end afs_file_invalidatepage() */
 
 /*****************************************************************************/
 /*
  * release a page and cleanup its private data
  */
-static int afs_file_releasepage(struct page *page, int gfp_flags)
+static int afs_file_releasepage(struct page *page, gfp_t gfp_flags)
 {
        struct cachefs_page *pageio;
 
@@ -291,12 +259,11 @@ static int afs_file_releasepage(struct page *page, int gfp_flags)
                cachefs_uncache_page(vnode->cache, page);
 #endif
 
-               pageio = (struct cachefs_page *) page->private;
-               page->private = 0;
+               pageio = (struct cachefs_page *) page_private(page);
+               set_page_private(page, 0);
                ClearPagePrivate(page);
 
-               if (pageio)
-                       kfree(pageio);
+               kfree(pageio);
        }
 
        _leave(" = 0");