CVSROOT:        /cvs/cluster
Module name:    cluster
Changes by:     [EMAIL PROTECTED]       2008-01-28 06:29:25

Modified files:
        gfs-kernel/src/gfs: ops_export.c ops_export.h ops_vm.c sys.c 

Log message:
        Update gfs to cope with 2.6.24 export op changes and other bits

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_export.c.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_export.h.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_vm.c.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/sys.c.diff?cvsroot=cluster&r1=1.4&r2=1.5

--- cluster/gfs-kernel/src/gfs/ops_export.c     2007/07/23 16:41:46     1.12
+++ cluster/gfs-kernel/src/gfs/ops_export.c     2008/01/28 06:29:25     1.13
@@ -44,49 +44,6 @@
 };
 
 /**
- * gfs_decode_fh -
- * @param1: description
- * @param2: description
- * @param3: description
- *
- * Function description
- *
- * Returns: what is returned
- */
-
-struct dentry *
-gfs_decode_fh(struct super_block *sb, __u32 *fh, int fh_len, int fh_type,
-             int (*acceptable)(void *context, struct dentry *dentry),
-             void *context)
-{
-       struct inode_cookie this, parent;
-
-       atomic_inc(&get_v2sdp(sb)->sd_ops_export);
-
-       memset(&parent, 0, sizeof(struct inode_cookie));
-
-       switch (fh_type) {
-       case 6:
-               parent.gen_valid = TRUE;
-               parent.gen = gfs32_to_cpu(fh[5]);
-       case 5:
-               parent.formal_ino = ((uint64_t)gfs32_to_cpu(fh[3])) << 32;
-               parent.formal_ino |= (uint64_t)gfs32_to_cpu(fh[4]);
-       case 3:
-               this.gen_valid = TRUE;
-               this.gen = gfs32_to_cpu(fh[2]);
-               this.formal_ino = ((uint64_t)gfs32_to_cpu(fh[0])) << 32;
-               this.formal_ino |= (uint64_t)gfs32_to_cpu(fh[1]);
-               break;
-       default:
-               return NULL;
-       }
-
-       return gfs_export_ops.find_exported_dentry(sb, &this, &parent,
-                                                  acceptable, context);
-}
-
-/**
  * gfs_encode_fh -
  * @param1: description
  * @param2: description
@@ -290,10 +247,9 @@
  */
 
 struct dentry *
-gfs_get_dentry(struct super_block *sb, void *inump)
+gfs_get_dentry(struct super_block *sb, struct inode_cookie *cookie)
 {
        struct gfs_sbd *sdp = get_v2sdp(sb);
-       struct inode_cookie *cookie = (struct inode_cookie *)inump;
        struct gfs_inum inum;
        struct gfs_holder i_gh, ri_gh, rgd_gh;
        struct gfs_rgrpd *rgd;
@@ -406,11 +362,55 @@
        return ERR_PTR(error);
 }
 
-struct export_operations gfs_export_ops = {
-       .decode_fh = gfs_decode_fh,
+static struct dentry *gfs_fh_to_dentry(struct super_block *sb, struct fid *fid,
+               int fh_len, int fh_type)
+{
+       struct inode_cookie this;
+       __u32 *fh = fid->raw;
+
+       atomic_inc(&get_v2sdp(sb)->sd_ops_export);
+
+       switch (fh_type) {
+       case 6:
+       case 5:
+       case 3:
+               this.gen_valid = TRUE;
+               this.gen = gfs32_to_cpu(fh[2]);
+               this.formal_ino = ((uint64_t)gfs32_to_cpu(fh[0])) << 32;
+               this.formal_ino |= (uint64_t)gfs32_to_cpu(fh[1]);
+               return gfs_get_dentry(sb, &this);
+       default:
+               return NULL;
+       }
+}
+
+static struct dentry *gfs_fh_to_parent(struct super_block *sb, struct fid *fid,
+               int fh_len, int fh_type)
+{
+       struct inode_cookie parent;
+       __u32 *fh = fid->raw;
+
+       atomic_inc(&get_v2sdp(sb)->sd_ops_export);
+
+       switch (fh_type) {
+       case 6:
+               parent.gen_valid = TRUE;
+               parent.gen = gfs32_to_cpu(fh[5]);
+       case 5:
+               parent.formal_ino = ((uint64_t)gfs32_to_cpu(fh[3])) << 32;
+               parent.formal_ino |= (uint64_t)gfs32_to_cpu(fh[4]);
+       default:
+               return NULL;
+       }
+
+       return gfs_get_dentry(sb, &parent);
+}
+
+const struct export_operations gfs_export_ops = {
        .encode_fh = gfs_encode_fh,
+       .fh_to_dentry = gfs_fh_to_dentry,
+       .fh_to_parent = gfs_fh_to_parent,
        .get_name = gfs_get_name,
        .get_parent = gfs_get_parent,
-       .get_dentry = gfs_get_dentry,
 };
 
--- cluster/gfs-kernel/src/gfs/ops_export.h     2006/07/10 23:22:34     1.2
+++ cluster/gfs-kernel/src/gfs/ops_export.h     2008/01/28 06:29:25     1.3
@@ -14,6 +14,6 @@
 #ifndef __OPS_EXPORT_DOT_H__
 #define __OPS_EXPORT_DOT_H__
 
-extern struct export_operations gfs_export_ops;
+extern const struct export_operations gfs_export_ops;
 
 #endif /* __OPS_EXPORT_DOT_H__ */
--- cluster/gfs-kernel/src/gfs/ops_vm.c 2007/07/23 16:41:46     1.8
+++ cluster/gfs-kernel/src/gfs/ops_vm.c 2008/01/28 06:29:25     1.9
@@ -94,9 +94,10 @@
  */
 
 static int
-alloc_page_backing(struct gfs_inode *ip, unsigned long index)
+alloc_page_backing(struct gfs_inode *ip, struct page *page)
 {
        struct gfs_sbd *sdp = ip->i_sbd;
+       unsigned long index = page->index;
        uint64_t lblock = index << (PAGE_CACHE_SHIFT - 
sdp->sd_sb.sb_bsize_shift);
        unsigned int blocks = PAGE_CACHE_SIZE >> sdp->sd_sb.sb_bsize_shift;
        struct gfs_alloc *al;
@@ -179,8 +180,7 @@
                                struct vm_fault *vmf)
 {
        struct file *file = vma->vm_file;
-       struct gfs_file *gf = file->private_data;
-       struct gfs_inode *ip = get_v2ip(vma->vm_file->f_mapping->host);
+       struct gfs_inode *ip = get_v2ip(file->f_mapping->host);
        struct gfs_holder i_gh;
        int alloc_required;
        int error;
--- cluster/gfs-kernel/src/gfs/sys.c    2007/06/06 15:11:54     1.4
+++ cluster/gfs-kernel/src/gfs/sys.c    2008/01/28 06:29:25     1.5
@@ -86,7 +86,6 @@
 };
 
 static struct kset gfs_kset = {
-       .kobj   = {.name = "gfs",},
        .ktype  = &gfs_ktype,
 };
 
@@ -120,6 +119,7 @@
 {
        gfs_sys_margs = NULL;
        spin_lock_init(&gfs_sys_margs_lock);
+       kobject_set_name(&gfs_kset.kobj, "gfs");
        kobj_set_kset_s(&gfs_kset, fs_subsys);
        return kset_register(&gfs_kset);
 }

Reply via email to