diff options
author | 2008-03-21 02:21:05 +0000 | |
---|---|---|
committer | 2008-03-21 02:21:05 +0000 | |
commit | 796eefa3e636963c8800a0444efb340f03a348b3 (patch) | |
tree | de2fbe2f54c5a766171c8be5c1beee8def478808 /sys-cluster | |
parent | Move wxaddons module into version-specific directories to fix bug #213819. (diff) | |
download | historical-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/ChangeLog | 7 | ||||
-rw-r--r-- | sys-cluster/gfs-kernel/Manifest | 12 | ||||
-rw-r--r-- | sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.23.diff | 353 | ||||
-rw-r--r-- | sys-cluster/gfs-kernel/files/gfs-kernel-2.02.00-before-2.6.24.diff | 179 | ||||
-rw-r--r-- | sys-cluster/gfs-kernel/gfs-kernel-2.02.00.ebuild | 16 |
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 |