summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Zoffoli <xmerlin@gentoo.org>2008-03-21 02:21:05 +0000
committerChristian Zoffoli <xmerlin@gentoo.org>2008-03-21 02:21:05 +0000
commit796eefa3e636963c8800a0444efb340f03a348b3 (patch)
treede2fbe2f54c5a766171c8be5c1beee8def478808 /sys-cluster
parentMove wxaddons module into version-specific directories to fix bug #213819. (diff)
downloadhistorical-796eefa3e636963c8800a0444efb340f03a348b3.tar.gz
historical-796eefa3e636963c8800a0444efb340f03a348b3.tar.bz2
historical-796eefa3e636963c8800a0444efb340f03a348b3.zip
Patched gfs to compile also with kernel >= 2.6.20.
Package-Manager: portage-2.1.4.4
Diffstat (limited to 'sys-cluster')
-rw-r--r--sys-cluster/gfs-kernel/ChangeLog7
-rw-r--r--sys-cluster/gfs-kernel/Manifest12
-rw-r--r--sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.23.diff353
-rw-r--r--sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.24.diff179
-rw-r--r--sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild16
5 files changed, 560 insertions, 7 deletions
diff --git a/sys-cluster/gfs-kernel/ChangeLog b/sys-cluster/gfs-kernel/ChangeLog
index 453e5e57a747..57732cf54bd0 100644
--- a/sys-cluster/gfs-kernel/ChangeLog
+++ b/sys-cluster/gfs-kernel/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for sys-cluster/gfs-kernel
# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gfs-kernel/ChangeLog,v 1.29 2008/03/21 01:08:29 xmerlin Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gfs-kernel/ChangeLog,v 1.30 2008/03/21 02:21:04 xmerlin Exp $
+
+ 21 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
+ +files/gfs-kernel-2.02.00-before-2.6.23.diff,
+ +files/gfs-kernel-2.02.00-before-2.6.24.diff, gfs-kernel-2.02.00.ebuild:
+ Patched gfs to compile also with kernel >= 2.6.20.
21 Mar 2008; Christian Zoffoli <xmerlin@gentoo.org>
+files/gfs-kernel-locking-symbol.patch:
diff --git a/sys-cluster/gfs-kernel/Manifest b/sys-cluster/gfs-kernel/Manifest
index d98929f19493..65dcef5a6b3e 100644
--- a/sys-cluster/gfs-kernel/Manifest
+++ b/sys-cluster/gfs-kernel/Manifest
@@ -7,6 +7,8 @@ AUX gfs-kernel-1.03.00-pre2.6.17-compilefix.patch 3849 RMD160 3c6900e139cea9f9b8
AUX gfs-kernel-1.04.00-post2.6.12-compilefix.patch 1551 RMD160 1b4e7596ed6551475b2291a27377ee389d0e3972 SHA1 b1f4702f0fbe1497c73dcbaa280b92992ba1f6d0 SHA256 55cc92e258d592f177a3b361d1d2ed10d9c88013790ccfe700a3079425fb9e59
AUX gfs-kernel-1.04.00-post2.6.17-compilefix.patch 1449 RMD160 ad68ebc1853633a43e5528c950f9c7d048c9d136 SHA1 610541fff4b6fcb2ee0e1a24a72f0d2fbf668c49 SHA256 275fa240097bc2ac43ec00b8b23008670f3403e96c275b1a607994108a4ea6e4
AUX gfs-kernel-1.04.00-post2.6.22-compilefix.patch 1551 RMD160 1b4e7596ed6551475b2291a27377ee389d0e3972 SHA1 b1f4702f0fbe1497c73dcbaa280b92992ba1f6d0 SHA256 55cc92e258d592f177a3b361d1d2ed10d9c88013790ccfe700a3079425fb9e59
+AUX gfs-kernel-2.02.00-before-2.6.23.diff 9373 RMD160 ca5243b5d5ba1b545c7f746362f5c5dc2ed7d893 SHA1 51b9947475a146d6bd75048567264f807bb65466 SHA256 e6a4c40fc833293314c4771bf70ac1c9960ce7fe11fc1409a5ab6c346eeb4f6e
+AUX gfs-kernel-2.02.00-before-2.6.24.diff 5356 RMD160 cece71d13ec78d944a8ec1e4b85d3db787136093 SHA1 acee5735505f5a21cadd5276ea162c95c5c87428 SHA256 c7e00ba9008b572bdf07094d4638d216fc008f63b062f8010309db91f6263999
AUX gfs-kernel-locking-symbol.patch 509 RMD160 93c6631cf7fc4a5e8eb1844a0f6303a2c580e82a SHA1 2938621d4cfaef5ca2c1b921d82cdb3cf03d5bcb SHA256 d09edd37081aaf72b453f6020e00eb4b6e036e6e9b88ef6e22f84d00b98018ff
DIST cluster-1.02.00.tar.gz 1356451 RMD160 e9c0cdd1f5a7542c8a4ea38ccf6d057767269dc5 SHA1 d74cadb1ef21d1cfda333b20d7ef20272e0002d6 SHA256 de45885146f1481808f7a34af5e6b7e2042895a4e3844eaa6161f942345c7849
DIST cluster-1.03.00.tar.gz 1658274 RMD160 6fc16e2edba73dd1a83ecfad749b1553eca6d938 SHA1 c205d8ec034433c33f26724f7f69b0028d2a63d4 SHA256 e61c2438c7ee8d546aec9dd86ee1851c9a71f127c25ad1fb0c59eb4ed534e97b
@@ -19,13 +21,13 @@ EBUILD gfs-kernel-1.02.00-r2.ebuild 2204 RMD160 8a707a0dbbf30a44ce7df976a03db3d1
EBUILD gfs-kernel-1.03.00-r1.ebuild 1660 RMD160 1ed1ce627377fbdc217b2d4c5da862e3aac9f574 SHA1 a5377842ca31b48248f1ee661a5b58acd4917c50 SHA256 31955d70d6ef653675ec5ce2a69761fb948ceec9276de35fee4d4514a1a33fe9
EBUILD gfs-kernel-1.04.00-r1.ebuild 1823 RMD160 6682ebf5232729eb6850a571ee301c7054cff8cd SHA1 a1da94b2b475f384931d01e7a1325ebb9e2d1ec2 SHA256 f3074d673bcbd8e92fb35b6308267eb2a1bb54ccc24804168d122a8809e75297
EBUILD gfs-kernel-1.04.00.ebuild 1609 RMD160 4472e8300c46a0c8d95049ea17cc5ca03b82135d SHA1 1b14bdf031f0f0b338e4dcea810ca696d264ba76 SHA256 7ebef36abde617cf0a70ea2817f66c1495e79e811ebad3362b0311e5ffc57e63
-EBUILD gfs-kernel-2.02.00.ebuild 1709 RMD160 1af2302a95a52cec5b71dc439d31f6fc312d947e SHA1 ed8e458eb0d616e62c6bfb30700c4e07bd43c90e SHA256 87807f5754ee5a7ed636e258b8a9b5b9aea610f777b9961d3f6d41a5731e799d
-MISC ChangeLog 5200 RMD160 d9cab6c52857e8b02bd152a52ec2cbd148bec5e1 SHA1 61b66b8222d5c4eec4a24fb7b4b0bcc56dc6b635 SHA256 6148f1be2641bc0640487abd0af50c15db44a62daaf906e34f7eb230d7932236
+EBUILD gfs-kernel-2.02.00.ebuild 1974 RMD160 a9e88bc988d6d24bc9a5ed1c5a05e33bb278bde6 SHA1 c4ec1e0f0a439361cfbe02a025db159ac52a2a9e SHA256 ce83b4091ba5089369eb3b5bca4def6e64e50e47e1a203979d4cbb0fd9ac6455
+MISC ChangeLog 5431 RMD160 1f08d1be26a58b8036364daeecec2072abea0ae0 SHA1 e8382162ed47e50fdb41d6e93ff5fc9933370acc SHA256 1a30038aa823185255957d0625866e0028136211a18a2deccd7b1320abeb6e8f
MISC metadata.xml 229 RMD160 4dcf17b88c5f4db2e817f473f3e8269b0bff2e6e SHA1 e6315be43241c55bdc0d12a42fa05632c5ff9b79 SHA256 49e13d2d49bef7298e3bb665ebeceeff9b0880fae5ff639cb8405993504f244f
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)
-iD8DBQFH4wqVgMUyd/cdjWsRAuioAJ4nqFUsat+lrEG0dPYG8AYsd+L9lACdFoQM
-4vLszR5Jy9h1aAb3VmDHNnQ=
-=wrOZ
+iD8DBQFH4xuagMUyd/cdjWsRAnPnAKCOcQxxbG1212ppzqU4OPOkGBRrdwCdHh8l
++FVjokK/lszVzVrfxj/F2cg=
+=zZN/
-----END PGP SIGNATURE-----
diff --git a/sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.23.diff b/sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.23.diff
new file mode 100644
index 000000000000..57159fcf33f1
--- /dev/null
+++ b/sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.23.diff
@@ -0,0 +1,353 @@
+diff -uNr cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/main.c cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/main.c
+--- cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/main.c 2008-02-26 16:37:43.000000000 +0100
++++ cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/main.c 2008-03-21 03:01:47.000000000 +0100
+@@ -53,7 +53,7 @@
+
+ gfs_glock_cachep = kmem_cache_create("gfs_glock", sizeof(struct gfs_glock),
+ 0, 0,
+- NULL);
++ NULL, NULL);
+ gfs_inode_cachep = NULL;
+ gfs_bufdata_cachep = NULL;
+ gfs_mhc_cachep = NULL;
+@@ -63,19 +63,19 @@
+
+ gfs_inode_cachep = kmem_cache_create("gfs_inode", sizeof(struct gfs_inode),
+ 0, 0,
+- NULL);
++ NULL, NULL);
+ if (!gfs_inode_cachep)
+ goto fail1;
+
+ gfs_bufdata_cachep = kmem_cache_create("gfs_bufdata", sizeof(struct gfs_bufdata),
+ 0, 0,
+- NULL);
++ NULL, NULL);
+ if (!gfs_bufdata_cachep)
+ goto fail1;
+
+ gfs_mhc_cachep = kmem_cache_create("gfs_meta_header_cache", sizeof(struct gfs_meta_header_cache),
+ 0, 0,
+- NULL);
++ NULL, NULL);
+ if (!gfs_mhc_cachep)
+ goto fail;
+
+diff -uNr cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/main.c.orig cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/main.c.orig
+--- cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/main.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/main.c.orig 2008-02-26 16:37:43.000000000 +0100
+@@ -0,0 +1,137 @@
++/******************************************************************************
++*******************************************************************************
++**
++** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
++** Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
++**
++** This copyrighted material is made available to anyone wishing to use,
++** modify, copy, or redistribute it subject to the terms and conditions
++** of the GNU General Public License v.2.
++**
++*******************************************************************************
++******************************************************************************/
++
++#include <linux/sched.h>
++#include <linux/slab.h>
++#include <linux/smp_lock.h>
++#include <linux/spinlock.h>
++#include <asm/semaphore.h>
++#include <linux/completion.h>
++#include <linux/buffer_head.h>
++#include <linux/proc_fs.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/time.h>
++
++#include "gfs.h"
++#include "ops_fstype.h"
++#include "sys.h"
++#include "proc.h"
++
++/**
++ * init_gfs_fs - Register GFS as a filesystem
++ *
++ * Returns: 0 on success, error code on failure
++ */
++
++int __init init_gfs_fs(void)
++{
++ int error;
++ struct timespec tv;
++
++/* gfs2_init_lmh(); gfs2 should do this for us*/
++
++ error = gfs_sys_init();
++ if (error)
++ return error;
++ error = gfs_proc_init();
++ if (error)
++ goto fail;
++
++ getnstimeofday(&tv);
++ gfs_random_number = tv.tv_nsec;
++
++ gfs_glock_cachep = kmem_cache_create("gfs_glock", sizeof(struct gfs_glock),
++ 0, 0,
++ NULL);
++ gfs_inode_cachep = NULL;
++ gfs_bufdata_cachep = NULL;
++ gfs_mhc_cachep = NULL;
++ error = -ENOMEM;
++ if (!gfs_glock_cachep)
++ goto fail1;
++
++ gfs_inode_cachep = kmem_cache_create("gfs_inode", sizeof(struct gfs_inode),
++ 0, 0,
++ NULL);
++ if (!gfs_inode_cachep)
++ goto fail1;
++
++ gfs_bufdata_cachep = kmem_cache_create("gfs_bufdata", sizeof(struct gfs_bufdata),
++ 0, 0,
++ NULL);
++ if (!gfs_bufdata_cachep)
++ goto fail1;
++
++ gfs_mhc_cachep = kmem_cache_create("gfs_meta_header_cache", sizeof(struct gfs_meta_header_cache),
++ 0, 0,
++ NULL);
++ if (!gfs_mhc_cachep)
++ goto fail;
++
++ error = register_filesystem(&gfs_fs_type);
++ if (error)
++ goto fail;
++
++ printk("GFS %s (built %s %s) installed\n",
++ RELEASE_VERSION, __DATE__, __TIME__);
++
++ return 0;
++
++ fail1:
++ if (gfs_mhc_cachep)
++ kmem_cache_destroy(gfs_mhc_cachep);
++
++ if (gfs_bufdata_cachep)
++ kmem_cache_destroy(gfs_bufdata_cachep);
++
++ if (gfs_inode_cachep)
++ kmem_cache_destroy(gfs_inode_cachep);
++
++ if (gfs_glock_cachep)
++ kmem_cache_destroy(gfs_glock_cachep);
++
++ gfs_proc_uninit();
++
++ fail:
++ gfs_sys_uninit();
++
++ return error;
++}
++
++/**
++ * exit_gfs_fs - Unregister the file system
++ *
++ */
++
++void __exit
++exit_gfs_fs(void)
++{
++ unregister_filesystem(&gfs_fs_type);
++
++ kmem_cache_destroy(gfs_mhc_cachep);
++ kmem_cache_destroy(gfs_bufdata_cachep);
++ kmem_cache_destroy(gfs_inode_cachep);
++ kmem_cache_destroy(gfs_glock_cachep);
++
++ gfs_proc_uninit();
++ gfs_sys_uninit();
++}
++
++MODULE_DESCRIPTION("Global File System " RELEASE_VERSION);
++MODULE_AUTHOR("Red Hat, Inc.");
++MODULE_LICENSE("GPL");
++
++module_init(init_gfs_fs);
++module_exit(exit_gfs_fs);
++
+diff -uNr cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_export.c cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/ops_export.c
+--- cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_export.c 2008-03-21 03:01:29.000000000 +0100
++++ cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/ops_export.c 2008-03-21 03:01:47.000000000 +0100
+@@ -18,7 +18,6 @@
+ #include <asm/semaphore.h>
+ #include <linux/completion.h>
+ #include <linux/buffer_head.h>
+-#include <linux/exportfs.h>
+
+ #include "gfs.h"
+ #include "dio.h"
+diff -uNr cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_vm.c cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/ops_vm.c
+--- cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_vm.c 2008-03-21 03:01:29.000000000 +0100
++++ cluster-2.02.00-2.6.20/gfs-kernel/src/gfs/ops_vm.c 2008-03-21 03:01:47.000000000 +0100
+@@ -13,6 +13,7 @@
+
+ #include <linux/sched.h>
+ #include <linux/slab.h>
++#include <linux/smp_lock.h>
+ #include <linux/spinlock.h>
+ #include <asm/semaphore.h>
+ #include <linux/completion.h>
+@@ -52,7 +53,7 @@
+ }
+
+ /**
+- * gfs_private_fault -
++ * gfs_private_nopage -
+ * @area:
+ * @address:
+ * @type:
+@@ -60,29 +61,31 @@
+ * Returns: the page
+ */
+
+-static int gfs_private_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
++static struct page *
++gfs_private_nopage(struct vm_area_struct *area,
++ unsigned long address, int *type)
+ {
+- struct gfs_inode *ip = get_v2ip(vma->vm_file->f_mapping->host);
++ struct gfs_inode *ip = get_v2ip(area->vm_file->f_mapping->host);
+ struct gfs_holder i_gh;
++ struct page *result;
+ int error;
+- int ret = 0;
+
+ atomic_inc(&ip->i_sbd->sd_ops_vm);
+
+ error = gfs_glock_nq_init(ip->i_gl, LM_ST_SHARED, 0, &i_gh);
+ if (error)
+- goto out;
++ return NULL;
+
+ set_bit(GIF_PAGED, &ip->i_flags);
+
+- ret = filemap_fault(vma, vmf);
++ result = filemap_nopage(area, address, type);
+
+- if (ret && ret != VM_FAULT_OOM)
++ if (result && result != NOPAGE_OOM)
+ pfault_be_greedy(ip);
+
+ gfs_glock_dq_uninit(&i_gh);
+- out:
+- return ret;
++
++ return result;
+ }
+
+ /**
+@@ -167,7 +170,7 @@
+ }
+
+ /**
+- * gfs_sharewrite_fault -
++ * gfs_sharewrite_nopage -
+ * @area:
+ * @address:
+ * @type:
+@@ -175,72 +178,61 @@
+ * Returns: the page
+ */
+
+-static int gfs_sharewrite_fault(struct vm_area_struct *vma,
+- struct vm_fault *vmf)
++static struct page *
++gfs_sharewrite_nopage(struct vm_area_struct *area,
++ unsigned long address, int *type)
+ {
+- 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(area->vm_file->f_mapping->host);
+ struct gfs_holder i_gh;
++ struct page *result = NULL;
++ unsigned long index = ((address - area->vm_start) >> PAGE_CACHE_SHIFT) + area->vm_pgoff;
+ int alloc_required;
+ int error;
+- int ret = 0;
+
+ atomic_inc(&ip->i_sbd->sd_ops_vm);
+
+ error = gfs_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &i_gh);
+ if (error)
+- goto out;
++ return NULL;
+
+ if (gfs_is_jdata(ip))
+- goto out_unlock;
++ goto out;
+
+ set_bit(GIF_PAGED, &ip->i_flags);
+ set_bit(GIF_SW_PAGED, &ip->i_flags);
+
+- error = gfs_write_alloc_required(ip,
+- (u64)vmf->pgoff << PAGE_CACHE_SHIFT,
++ error = gfs_write_alloc_required(ip, (uint64_t)index << PAGE_CACHE_SHIFT,
+ PAGE_CACHE_SIZE, &alloc_required);
+- if (error) {
+- ret = VM_FAULT_OOM; /* XXX: are these right? */
+- goto out_unlock;
+- }
++ if (error)
++ goto out;
+
+- ret = filemap_fault(vma, vmf);
+- if (ret & VM_FAULT_ERROR)
+- goto out_unlock;
++ result = filemap_nopage(area, address, type);
++ if (!result || result == NOPAGE_OOM)
++ goto out;
+
+ if (alloc_required) {
+- /* XXX: do we need to drop page lock around alloc_page_backing?*/
+- error = alloc_page_backing(ip, vmf->page);
++ error = alloc_page_backing(ip, index);
+ if (error) {
+- /*
+- * VM_FAULT_LOCKED should always be the case for
+- * filemap_fault, but it may not be in a future
+- * implementation.
+- */
+- if (ret & VM_FAULT_LOCKED)
+- unlock_page(vmf->page);
+- page_cache_release(vmf->page);
+- ret = VM_FAULT_OOM;
+- goto out_unlock;
++ page_cache_release(result);
++ result = NULL;
++ goto out;
+ }
+- set_page_dirty(vmf->page);
++ set_page_dirty(result);
+ }
+
+ pfault_be_greedy(ip);
+
+- out_unlock:
+- gfs_glock_dq_uninit(&i_gh);
+ out:
+- return ret;
++ gfs_glock_dq_uninit(&i_gh);
++
++ return result;
+ }
+
+ struct vm_operations_struct gfs_vm_ops_private = {
+- .fault = gfs_private_fault,
++ .nopage = gfs_private_nopage,
+ };
+
+ struct vm_operations_struct gfs_vm_ops_sharewrite = {
+- .fault = gfs_sharewrite_fault,
++ .nopage = gfs_sharewrite_nopage,
+ };
+
diff --git a/sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.24.diff b/sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.24.diff
new file mode 100644
index 000000000000..c77113a3dcee
--- /dev/null
+++ b/sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.24.diff
@@ -0,0 +1,179 @@
+diff -uNr cluster-2.02.00.orig/gfs-kernel/src/gfs/ops_export.c cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_export.c
+--- cluster-2.02.00.orig/gfs-kernel/src/gfs/ops_export.c 2008-02-26 16:37:43.000000000 +0100
++++ cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_export.c 2008-03-21 03:01:29.000000000 +0100
+@@ -44,6 +44,49 @@
+ };
+
+ /**
++ * 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
+@@ -247,9 +290,10 @@
+ */
+
+ struct dentry *
+-gfs_get_dentry(struct super_block *sb, struct inode_cookie *cookie)
++gfs_get_dentry(struct super_block *sb, void *inump)
+ {
+ 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;
+@@ -362,55 +406,11 @@
+ return ERR_PTR(error);
+ }
+
+-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 = {
++struct export_operations gfs_export_ops = {
++ .decode_fh = gfs_decode_fh,
+ .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,
+ };
+
+diff -uNr cluster-2.02.00.orig/gfs-kernel/src/gfs/ops_export.h cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_export.h
+--- cluster-2.02.00.orig/gfs-kernel/src/gfs/ops_export.h 2008-02-26 16:37:43.000000000 +0100
++++ cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_export.h 2008-03-21 03:01:29.000000000 +0100
+@@ -14,6 +14,6 @@
+ #ifndef __OPS_EXPORT_DOT_H__
+ #define __OPS_EXPORT_DOT_H__
+
+-extern const struct export_operations gfs_export_ops;
++extern struct export_operations gfs_export_ops;
+
+ #endif /* __OPS_EXPORT_DOT_H__ */
+diff -uNr cluster-2.02.00.orig/gfs-kernel/src/gfs/ops_vm.c cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_vm.c
+--- cluster-2.02.00.orig/gfs-kernel/src/gfs/ops_vm.c 2008-02-26 16:37:43.000000000 +0100
++++ cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/ops_vm.c 2008-03-21 03:01:29.000000000 +0100
+@@ -94,10 +94,9 @@
+ */
+
+ static int
+-alloc_page_backing(struct gfs_inode *ip, struct page *page)
++alloc_page_backing(struct gfs_inode *ip, unsigned long index)
+ {
+ 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;
+@@ -180,7 +179,8 @@
+ struct vm_fault *vmf)
+ {
+ struct file *file = vma->vm_file;
+- struct gfs_inode *ip = get_v2ip(file->f_mapping->host);
++ struct gfs_file *gf = file->private_data;
++ struct gfs_inode *ip = get_v2ip(vma->vm_file->f_mapping->host);
+ struct gfs_holder i_gh;
+ int alloc_required;
+ int error;
+diff -uNr cluster-2.02.00.orig/gfs-kernel/src/gfs/sys.c cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/sys.c
+--- cluster-2.02.00.orig/gfs-kernel/src/gfs/sys.c 2008-02-26 16:37:43.000000000 +0100
++++ cluster-2.02.00-2.6.23/gfs-kernel/src/gfs/sys.c 2008-03-21 03:01:29.000000000 +0100
+@@ -86,6 +86,7 @@
+ };
+
+ static struct kset gfs_kset = {
++ .kobj = {.name = "gfs",},
+ .ktype = &gfs_ktype,
+ };
+
+@@ -119,7 +120,6 @@
+ {
+ 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);
+ }
diff --git a/sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild b/sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild
index 9326a8f8d2d0..9bcf3dea424c 100644
--- a/sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild
+++ b/sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild,v 1.1 2008/03/17 17:23:01 xmerlin Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild,v 1.2 2008/03/21 02:21:04 xmerlin Exp $
inherit eutils linux-mod linux-info versionator
@@ -32,6 +32,20 @@ pkg_setup() {
esac
}
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ if kernel_is 2 6; then
+ if [ "$KV_PATCH" -lt "24" ] ; then
+ epatch "${FILESDIR}"/${P}-before-2.6.24.diff || die
+ fi
+ if [ "$KV_PATCH" -lt "23" ] ; then
+ epatch "${FILESDIR}"/${P}-before-2.6.23.diff || die
+ fi
+ fi
+}
+
src_compile() {
set_arch_to_kernel