summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Andreetta <satya@gentoo.org>2005-02-09 12:32:10 +0000
committerChristian Andreetta <satya@gentoo.org>2005-02-09 12:32:10 +0000
commit81655e6b54912c99fec099674a162e356ad9ff04 (patch)
treebffa210db493b537b667336383cc50796e587a61
parentFixed #warn directive in glxext.h to be #warning. See bug #81199. (diff)
downloadgentoo-2-81655e6b54912c99fec099674a162e356ad9ff04.tar.gz
gentoo-2-81655e6b54912c99fec099674a162e356ad9ff04.tar.bz2
gentoo-2-81655e6b54912c99fec099674a162e356ad9ff04.zip
vserver fix for upstream bug: system calls GFP_KERNEL avoided when mem-locking
(Portage version: 2.0.51.16)
-rw-r--r--sys-fs/unionfs/ChangeLog8
-rw-r--r--sys-fs/unionfs/Manifest3
-rw-r--r--sys-fs/unionfs/files/digest-unionfs-1.0.8-r21
-rw-r--r--sys-fs/unionfs/files/unionfs-1.0.8-vserver-GFP.patch442
-rw-r--r--sys-fs/unionfs/unionfs-1.0.8-r2.ebuild48
5 files changed, 501 insertions, 1 deletions
diff --git a/sys-fs/unionfs/ChangeLog b/sys-fs/unionfs/ChangeLog
index 0a68681a2fd5..8eb7ec65d418 100644
--- a/sys-fs/unionfs/ChangeLog
+++ b/sys-fs/unionfs/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for sys-fs/unionfs
# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-fs/unionfs/ChangeLog,v 1.3 2005/02/08 13:44:50 satya Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/unionfs/ChangeLog,v 1.4 2005/02/09 12:32:10 satya Exp $
+
+*unionfs-1.0.8-r2 (09 Feb 2005)
+
+ 09 Feb 2005; Christian Andreetta <satya@gentoo.org>
+ +files/unionfs-1.0.8-vserver-GFP.patch, +unionfs-1.0.8-r2.ebuild:
+ vserver fix for upstream bug: system calls GFP_KERNEL avoided when mem-locking
*unionfs-1.0.8-r1 (08 Feb 2005)
diff --git a/sys-fs/unionfs/Manifest b/sys-fs/unionfs/Manifest
index b75c78e8911e..393fdc07d7fa 100644
--- a/sys-fs/unionfs/Manifest
+++ b/sys-fs/unionfs/Manifest
@@ -1,9 +1,12 @@
+MD5 a63bfd039d538b6def3e39e340a9fd1b unionfs-1.0.8-r2.ebuild 1725
MD5 4970b965d7183e3424b52abea83f54ad unionfs-1.0.8.ebuild 1205
MD5 5174ac257a7393609e34f76c2b7ebd76 unionfs-1.0.8-r1.ebuild 1501
MD5 32ded1933e949b1adcb87b3ae826f9c6 ChangeLog 721
MD5 8959da33bd490fabac57869170fb5cd2 unionfs-1.0.5.ebuild 778
MD5 6e89ba8198764bfd079a0cfa18dca593 metadata.xml 264
+MD5 6653e7e3a3d5228979e268c072f39081 files/unionfs-1.0.8-vserver-GFP.patch 18519
MD5 3e8352aeb89adf9621000e68a01d1c42 files/digest-unionfs-1.0.5 64
MD5 ed43e0aa2c797f7089d0b5233c2f4a28 files/digest-unionfs-1.0.8 65
MD5 ca0c70650ac2ad10a83bc3255de16baa files/unionfs-1.0.8-vserver.patch 520
MD5 ed43e0aa2c797f7089d0b5233c2f4a28 files/digest-unionfs-1.0.8-r1 65
+MD5 ed43e0aa2c797f7089d0b5233c2f4a28 files/digest-unionfs-1.0.8-r2 65
diff --git a/sys-fs/unionfs/files/digest-unionfs-1.0.8-r2 b/sys-fs/unionfs/files/digest-unionfs-1.0.8-r2
new file mode 100644
index 000000000000..1782641b3989
--- /dev/null
+++ b/sys-fs/unionfs/files/digest-unionfs-1.0.8-r2
@@ -0,0 +1 @@
+MD5 c0c8ad1f7e2f0776bfe1ed41662120f9 unionfs-1.0.8.tar.gz 105819
diff --git a/sys-fs/unionfs/files/unionfs-1.0.8-vserver-GFP.patch b/sys-fs/unionfs/files/unionfs-1.0.8-vserver-GFP.patch
new file mode 100644
index 000000000000..997e54269f70
--- /dev/null
+++ b/sys-fs/unionfs/files/unionfs-1.0.8-vserver-GFP.patch
@@ -0,0 +1,442 @@
+diff -Nur unionfs-1.0.8/branchman.c unionfs-1.0.8_r1/branchman.c
+--- unionfs-1.0.8/branchman.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/branchman.c 2005-02-08 14:26:10.544231264 +0100
+@@ -109,7 +109,7 @@
+ dpd = dtopd(inode->i_sb->s_root);
+ ipd = itopd(inode->i_sb->s_root->d_inode);
+
+- addargs = KMALLOC(sizeof(struct unionfs_addbranch_args), GFP_NOFS);
++ addargs = KMALLOC(sizeof(struct unionfs_addbranch_args), GFP_KERNEL);
+ if (!addargs) {
+ err = -ENOMEM;
+ goto out;
+@@ -177,12 +177,12 @@
+ gen = atomic_read(&spd->usi_generation);
+
+ /* Reallocate the dynamic structures. */
+- new_hidden_mnt = KMALLOC(sizeof(struct hidden_mnt *) * (spd->b_end + 1), GFP_NOFS);
+- new_udi_dentry = KMALLOC(sizeof(struct dentry *) * (spd->b_end + 1), GFP_NOFS);
+- new_uii_inode = KMALLOC(sizeof(struct inode *) * (spd->b_end + 1), GFP_NOFS);
+- new_usi_sb = KMALLOC(sizeof(struct super_block *) * (spd->b_end + 1), GFP_NOFS);
+- new_counts = KMALLOC(sizeof(atomic_t) * (spd->b_end + 1), GFP_NOFS);
+- new_branchperms = KMALLOC(sizeof(int) * (spd->b_end + 1), GFP_NOFS);
++ new_hidden_mnt = KMALLOC(sizeof(struct hidden_mnt *) * (spd->b_end + 1), GFP_KERNEL);
++ new_udi_dentry = KMALLOC(sizeof(struct dentry *) * (spd->b_end + 1), GFP_KERNEL);
++ new_uii_inode = KMALLOC(sizeof(struct inode *) * (spd->b_end + 1), GFP_KERNEL);
++ new_usi_sb = KMALLOC(sizeof(struct super_block *) * (spd->b_end + 1), GFP_KERNEL);
++ new_counts = KMALLOC(sizeof(atomic_t) * (spd->b_end + 1), GFP_KERNEL);
++ new_branchperms = KMALLOC(sizeof(int) * (spd->b_end + 1), GFP_KERNEL);
+ if (!new_hidden_mnt || !new_udi_dentry || !new_uii_inode || !new_counts || !new_usi_sb || !new_branchperms) {
+ err = -ENOMEM;
+ goto out;
+@@ -386,7 +386,7 @@
+ dpd = dtopd(inode->i_sb->s_root);
+ ipd = itopd(inode->i_sb->s_root->d_inode);
+
+- rdwrargs = KMALLOC(sizeof(struct unionfs_rdwrbranch_args), GFP_NOFS);
++ rdwrargs = KMALLOC(sizeof(struct unionfs_rdwrbranch_args), GFP_KERNEL);
+ if (!rdwrargs) {
+ err = -ENOMEM;
+ goto out;
+diff -Nur unionfs-1.0.8/copyup.c unionfs-1.0.8_r1/copyup.c
+--- unionfs-1.0.8/copyup.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/copyup.c 2005-02-08 14:26:10.546230960 +0100
+@@ -118,7 +118,7 @@
+ PASSERT(old_hidden_dentry->d_inode->i_op);
+ PASSERT(old_hidden_dentry->d_inode->i_op->readlink);
+
+- symbuf = KMALLOC(PATH_MAX, GFP_NOFS);
++ symbuf = KMALLOC(PATH_MAX, GFP_KERNEL);
+ if (!symbuf) {
+ err = -ENOMEM;
+ goto copyup_readlink_err;
+@@ -204,7 +204,7 @@
+ }
+
+ /* allocating a buffer */
+- buf = (char *) KMALLOC(PAGE_SIZE, GFP_NOFS);
++ buf = (char *) KMALLOC(PAGE_SIZE, GFP_KERNEL);
+ if (!buf) {
+ err = -ENOMEM;
+ goto out;
+diff -Nur unionfs-1.0.8/file.c unionfs-1.0.8_r1/file.c
+--- unionfs-1.0.8/file.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/file.c 2005-02-08 14:26:10.552230048 +0100
+@@ -77,7 +77,7 @@
+ bstart = fbstart(file) = dbstart(dentry);
+ bend = fbend(file) = dbend(dentry);
+
+- ftohf_ptr(file) = KMALLOC(sizeof(file_t *) * sbmax(sb), GFP_NOFS);
++ ftohf_ptr(file) = KMALLOC(sizeof(file_t *) * sbmax(sb), GFP_KERNEL);
+ if (!ftohf_ptr(file)) {
+ err = -ENOMEM;
+ goto out;
+@@ -817,14 +817,14 @@
+ int bindex = 0, bstart = 0, bend = 0;
+
+ print_entry_location();
+- ftopd_lhs(file) = KMALLOC(sizeof(struct unionfs_file_info), GFP_NOFS);
++ ftopd_lhs(file) = KMALLOC(sizeof(struct unionfs_file_info), GFP_KERNEL);
+ if (!ftopd(file)) {
+ err = -ENOMEM;
+ goto out;
+ }
+ init_ftopd(file);
+ atomic_set(&ftopd(file)->ufi_generation, atomic_read(&itopd(inode)->uii_generation));
+- ftohf_ptr(file) = KMALLOC((sizeof(file_t *) * sbmax(inode->i_sb)), GFP_NOFS);
++ ftohf_ptr(file) = KMALLOC((sizeof(file_t *) * sbmax(inode->i_sb)), GFP_KERNEL);
+ if (!ftohf_ptr(file)) {
+ err = -ENOMEM;
+ goto out;
+diff -Nur unionfs-1.0.8/inode.c unionfs-1.0.8_r1/inode.c
+--- unionfs-1.0.8/inode.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/inode.c 2005-02-08 14:26:10.562228528 +0100
+@@ -46,7 +46,7 @@
+ hidden_dentry = dtohd(dentry);
+
+ /* check if whiteout exists in this branch, i.e. lookup .wh.foo first */
+- name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -244,7 +244,7 @@
+
+ /* allocate space for hidden dentries */
+ if (!dtopd_lhs(dentry)) {
+- dtopd_lhs(dentry) = (struct unionfs_dentry_info *) KMALLOC(sizeof(struct unionfs_dentry_info), GFP_NOFS);
++ dtopd_lhs(dentry) = (struct unionfs_dentry_info *) KMALLOC(sizeof(struct unionfs_dentry_info), GFP_KERNEL);
+ if (!dtopd_lhs(dentry)) {
+ err = -ENOMEM;
+ goto out;
+@@ -253,7 +253,7 @@
+ } else {
+ reinit_dtopd(dentry, parent->i_sb);
+ }
+- dtohd_ptr(dentry) = KMALLOC(sizeof(dentry_t *) * sbmax(parent->i_sb), GFP_NOFS);
++ dtohd_ptr(dentry) = KMALLOC(sizeof(dentry_t *) * sbmax(parent->i_sb), GFP_KERNEL);
+ if (!dtohd_ptr(dentry)) {
+ err = -ENOMEM;
+ goto out_free_dtopd;
+@@ -281,7 +281,7 @@
+
+ /* we reuse the whiteout name for the entire function because its value doesn't change. */
+ if (!name) {
+- name = KMALLOC(namelen + 5, GFP_NOFS);
++ name = KMALLOC(namelen + 5, GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out_free;
+@@ -512,7 +512,7 @@
+ hidden_new_dentry = dtohd(new_dentry);
+
+ /* check if whiteout exists in the branch of new dentry, i.e. lookup .wh.foo first. If present, delete it */
+- name = KMALLOC(sizeof(char) * (new_dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (new_dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -756,7 +756,7 @@
+ hidden_old_dentry = unionfs_hidden_dentry(dentry);
+
+ /* lookup .wh.foo first, MUST NOT EXIST */
+- name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -1054,7 +1054,7 @@
+ hidden_dentry = dtohd(dentry);
+
+ /* check if whiteout exists in this branch, i.e. lookup .wh.foo first. If present, delete it */
+- name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -1187,7 +1187,7 @@
+ hidden_dentry = dtohd(dentry);
+
+ // check if whiteout exists in this branch, i.e. lookup .wh.foo first
+- name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -1321,7 +1321,7 @@
+ hidden_dentry = dtohd(dentry);
+
+ // check if whiteout exists in this branch, i.e. lookup .wh.foo first
+- name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -1455,7 +1455,7 @@
+ }
+ }
+
+- wh_name = KMALLOC(new_dentry->d_name.len + 5, GFP_NOFS);
++ wh_name = KMALLOC(new_dentry->d_name.len + 5, GFP_KERNEL);
+ if (!wh_name) {
+ err = -ENOMEM;
+ goto out;
+@@ -2157,7 +2157,7 @@
+ print_entry_location();
+ // fist_print_dentry("unionfs_follow_link dentry IN", dentry);
+
+- buf = KMALLOC(len, GFP_NOFS);
++ buf = KMALLOC(len, GFP_KERNEL);
+ if (!buf) {
+ err = -ENOMEM;
+ goto out;
+diff -Nur unionfs-1.0.8/main.c unionfs-1.0.8_r1/main.c
+--- unionfs-1.0.8/main.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/main.c 2005-02-08 14:26:10.567227768 +0100
+@@ -68,7 +68,7 @@
+ itopd(inode)->b_end = -1;
+ atomic_set(&itopd(inode)->uii_generation, atomic_read(&stopd(sb)->usi_generation));
+
+- itohi_ptr(inode) = KMALLOC(sizeof(inode_t *) * sbmax(sb), GFP_NOFS);
++ itohi_ptr(inode) = KMALLOC(sizeof(inode_t *) * sbmax(sb), GFP_KERNEL);
+ if (!itohi_ptr(inode)) {
+ err = -ENOMEM;
+ goto out;
+@@ -245,7 +245,7 @@
+ print_entry_location();
+
+ /* allocate private data area */
+- hidden_root_info = KMALLOC(sizeof(struct unionfs_dentry_info), GFP_NOFS);
++ hidden_root_info = KMALLOC(sizeof(struct unionfs_dentry_info), GFP_KERNEL);
+ if (!hidden_root_info) {
+ err = -ENOMEM;
+ goto out_error;
+@@ -297,7 +297,7 @@
+ }
+
+ /* allocate space for underlying pointers to hidden dentry */
+- hidden_root_info->udi_dentry = KMALLOC(sizeof(dentry_t *) * branches, GFP_NOFS);
++ hidden_root_info->udi_dentry = KMALLOC(sizeof(dentry_t *) * branches, GFP_KERNEL);
+ if (IS_ERR(hidden_root_info->udi_dentry)) {
+ err = -ENOMEM;
+ goto out_error;
+@@ -305,7 +305,7 @@
+ memset(hidden_root_info->udi_dentry, 0, sizeof(dentry_t *) * branches);
+
+ /* allocate space for underlying pointers to super block */
+- stohs_ptr(sb) = KMALLOC(sizeof(super_block_t *) * branches, GFP_NOFS);
++ stohs_ptr(sb) = KMALLOC(sizeof(super_block_t *) * branches, GFP_KERNEL);
+ if (IS_ERR(stohs_ptr(sb))) {
+ err = -ENOMEM;
+ goto out_error;
+@@ -313,7 +313,7 @@
+ init_stohs_ptr(sb, branches);
+
+ /* Set all reference counts to zero. */
+- stopd(sb)->usi_sbcount = KMALLOC(sizeof(atomic_t) * branches, GFP_NOFS);
++ stopd(sb)->usi_sbcount = KMALLOC(sizeof(atomic_t) * branches, GFP_KERNEL);
+ if (IS_ERR(stopd(sb)->usi_sbcount)) {
+ err = -ENOMEM;
+ goto out_error;
+@@ -323,14 +323,14 @@
+ }
+
+ /* Set the permissions to none (we'll fix them up later). */
+- stopd(sb)->usi_branchperms = KMALLOC(sizeof(int) * branches, GFP_NOFS);
++ stopd(sb)->usi_branchperms = KMALLOC(sizeof(int) * branches, GFP_KERNEL);
+ if (IS_ERR(stopd(sb)->usi_branchperms)) {
+ err = -ENOMEM;
+ goto out_error;
+ }
+
+ /* allocate space for array of pointers for underlying mount points */
+- stohiddenmnt_ptr(sb) = KMALLOC(sizeof(struct vfsmount *) * branches, GFP_NOFS);
++ stohiddenmnt_ptr(sb) = KMALLOC(sizeof(struct vfsmount *) * branches, GFP_KERNEL);
+ if (IS_ERR(stohiddenmnt_ptr(sb))) {
+ err = -ENOMEM;
+ goto out_error;
+@@ -700,7 +700,7 @@
+ /*
+ * Allocate superblock private data
+ */
+- stopd_lhs(sb) = KMALLOC(sizeof(struct unionfs_sb_info), GFP_NOFS);
++ stopd_lhs(sb) = KMALLOC(sizeof(struct unionfs_sb_info), GFP_KERNEL);
+ if (!stopd(sb)) {
+ printk(KERN_WARNING "%s: out of memory\n", __FUNCTION__);
+ err = -ENOMEM;
+@@ -790,7 +790,7 @@
+ sb->s_root->d_parent = sb->s_root;
+
+ /* link the upper and lower dentries */
+- dtopd_lhs(sb->s_root) = KMALLOC(sizeof(struct unionfs_dentry_info), GFP_NOFS);
++ dtopd_lhs(sb->s_root) = KMALLOC(sizeof(struct unionfs_dentry_info), GFP_KERNEL);
+ if (!dtopd_lhs(sb->s_root)) {
+ err = -ENOMEM;
+ goto out_dput2;
+@@ -798,7 +798,7 @@
+ init_dtopd(sb->s_root, sb);
+
+ /* allocate array of dentry pointers for the root dentry */
+- dtohd_ptr(sb->s_root) = KMALLOC(sizeof(dentry_t *) * sbmax(sb), GFP_NOFS);
++ dtohd_ptr(sb->s_root) = KMALLOC(sizeof(dentry_t *) * sbmax(sb), GFP_KERNEL);
+ if (!dtohd_ptr(sb->s_root)) {
+ err = -ENOMEM;
+ goto out_dput3;
+@@ -913,7 +913,7 @@
+ /*
+ * Allocate superblock private data
+ */
+- stopd(ret_sb) = KMALLOC(sizeof(struct unionfs_sb_info), GFP_NOFS);
++ stopd(ret_sb) = KMALLOC(sizeof(struct unionfs_sb_info), GFP_KERNEL);
+ if (!stopd(ret_sb)) {
+ err = -ENOMEM;
+ goto out;
+@@ -927,7 +927,7 @@
+ sbmax(ret_sb) = sbmax(sb);
+
+ /* allocate space for underlying pointers to super block */
+- stohs_ptr(ret_sb) = KMALLOC(sizeof(super_block_t *) * sbmax(ret_sb), GFP_NOFS);
++ stohs_ptr(ret_sb) = KMALLOC(sizeof(super_block_t *) * sbmax(ret_sb), GFP_KERNEL);
+ if (!stohs_ptr(ret_sb)) {
+ err = -ENOMEM;
+ goto out;
+@@ -940,7 +940,7 @@
+ }
+
+ /* Set all reference counts to zero. */
+- stopd(ret_sb)->usi_sbcount = KMALLOC(sizeof(atomic_t) * sbmax(ret_sb), GFP_NOFS);
++ stopd(ret_sb)->usi_sbcount = KMALLOC(sizeof(atomic_t) * sbmax(ret_sb), GFP_KERNEL);
+ if (!stopd(ret_sb)->usi_sbcount) {
+ err = -ENOMEM;
+ goto out;
+@@ -950,7 +950,7 @@
+ }
+
+ /* Set the permissions to none (we'll fix them up later). */
+- stopd(ret_sb)->usi_branchperms = KMALLOC(sizeof(int) * sbmax(ret_sb), GFP_NOFS);
++ stopd(ret_sb)->usi_branchperms = KMALLOC(sizeof(int) * sbmax(ret_sb), GFP_KERNEL);
+ if (!stopd(ret_sb)->usi_branchperms) {
+ err = -ENOMEM;
+ goto out;
+@@ -960,7 +960,7 @@
+ }
+
+ /* allocate space for array of pointers for underlying mount points */
+- stohiddenmnt_ptr(ret_sb) = KMALLOC(sizeof(struct vfsmount *) * sbmax(ret_sb), GFP_NOFS);
++ stohiddenmnt_ptr(ret_sb) = KMALLOC(sizeof(struct vfsmount *) * sbmax(ret_sb), GFP_KERNEL);
+ if (!stohiddenmnt_ptr(ret_sb)) {
+ err = -ENOMEM;
+ goto out;
+@@ -995,13 +995,13 @@
+ ret_sb->s_root->d_parent = ret_sb->s_root;
+
+ /* link the upper and lower dentries */
+- dtopd(ret_sb->s_root) = KMALLOC(sizeof(struct unionfs_dentry_info), GFP_NOFS);
++ dtopd(ret_sb->s_root) = KMALLOC(sizeof(struct unionfs_dentry_info), GFP_KERNEL);
+ if (!dtopd(ret_sb->s_root)) {
+ goto out;
+ }
+
+ /* allocate array of dentry pointers for the root dentry */
+- dtohd_ptr(ret_sb->s_root) = KMALLOC(sizeof(dentry_t *) * sbmax(ret_sb), GFP_NOFS);
++ dtohd_ptr(ret_sb->s_root) = KMALLOC(sizeof(dentry_t *) * sbmax(ret_sb), GFP_KERNEL);
+ if (!dtohd_ptr(ret_sb->s_root)) {
+ goto out;
+ }
+diff -Nur unionfs-1.0.8/rdstate.c unionfs-1.0.8_r1/rdstate.c
+--- unionfs-1.0.8/rdstate.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/rdstate.c 2005-02-08 14:26:10.572227008 +0100
+@@ -83,7 +83,7 @@
+ }
+ hashsize = (mallocsize - sizeof(struct unionfs_dir_state)) / sizeof(struct list_head);
+
+- ftopd(file)->rdstate = KMALLOC(mallocsize, GFP_NOFS);
++ ftopd(file)->rdstate = KMALLOC(mallocsize, GFP_KERNEL);
+ if (!ftopd(file)->rdstate) {
+ return -ENOMEM;
+ }
+@@ -161,7 +161,7 @@
+ if (namelen < DNAME_INLINE_LEN_MIN) {
+ newnode->name = newnode->iname;
+ } else {
+- newnode->name = (char *) KMALLOC(namelen + 1, GFP_NOFS);
++ newnode->name = (char *) KMALLOC(namelen + 1, GFP_KERNEL);
+ if (!newnode->name) {
+ kmem_cache_free(unionfs_filldir_cachep, newnode);
+ newnode = NULL;
+diff -Nur unionfs-1.0.8/subr.c unionfs-1.0.8_r1/subr.c
+--- unionfs-1.0.8/subr.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/subr.c 2005-02-08 14:26:10.577226248 +0100
+@@ -149,7 +149,7 @@
+ goto out;
+ }
+
+- wh_name = KMALLOC(sizeof(char) * (namelen + 5), GFP_NOFS);
++ wh_name = KMALLOC(sizeof(char) * (namelen + 5), GFP_KERNEL);
+ if (!wh_name) {
+ err = -ENOMEM;
+ goto out;
+@@ -299,7 +299,7 @@
+ bend = dbend(dentry);
+
+ /* create dentry's whiteout equivalent */
+- name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (dentry->d_name.len + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -391,7 +391,7 @@
+ fist_print_dentry("IN create_whiteout_parent", parent_dentry);
+
+ /* create dentry's whiteout equivalent */
+- name = KMALLOC(sizeof(char) * (strlen(filename) + 5), GFP_NOFS);
++ name = KMALLOC(sizeof(char) * (strlen(filename) + 5), GFP_KERNEL);
+ if (!name) {
+ err = -ENOMEM;
+ goto out;
+@@ -595,7 +595,7 @@
+ }
+
+ hashsize = guesstimate_hash_size(dentry->d_inode);
+- buf = KMALLOC(sizeof(struct unionfs_check_whiteout_callback) + (hashsize * sizeof(struct list_head)), GFP_NOFS);
++ buf = KMALLOC(sizeof(struct unionfs_check_whiteout_callback) + (hashsize * sizeof(struct list_head)), GFP_KERNEL);
+ if (!buf) {
+ err = -ENOMEM;
+ goto out;
+diff -Nur unionfs-1.0.8/super.c unionfs-1.0.8_r1/super.c
+--- unionfs-1.0.8/super.c 2005-01-19 16:03:24.000000000 +0100
++++ unionfs-1.0.8_r1/super.c 2005-02-08 14:26:10.579225944 +0100
+@@ -33,13 +33,13 @@
+ ASSERT(sizeof(struct unionfs_inode_info) < sizeof(inode->u) - sizeof(void *));
+ itopd_lhs(inode) = (&(inode->u.generic_ip) + 1);
+ #else
+- itopd_lhs(inode) = KMALLOC(sizeof(struct unionfs_inode_info), GFP_NOFS);
++ itopd_lhs(inode) = KMALLOC(sizeof(struct unionfs_inode_info), GFP_KERNEL);
+ #endif
+ if (!itopd(inode)) {
+ FISTBUG("No kernel memory when allocating inode private data!\n");
+ }
+ init_itopd(inode);
+- itohi_ptr(inode) = KMALLOC(sizeof(inode_t *) * sbmax(inode->i_sb), GFP_NOFS);
++ itohi_ptr(inode) = KMALLOC(sizeof(inode_t *) * sbmax(inode->i_sb), GFP_KERNEL);
+ if (!itohi_ptr(inode)) {
+ FISTBUG("No kernel memory when allocating lower-pointer array!\n");
+ }
+@@ -171,7 +171,7 @@
+ unsigned short *hidden_s_dev;
+
+ print_entry_location();
+- hidden_s_dev = (unsigned short *) KMALLOC (sizeof(unsigned short) * sbmax(sb), GFP_NOFS);
++ hidden_s_dev = (unsigned short *) KMALLOC (sizeof(unsigned short) * sbmax(sb), GFP_KERNEL);
+ if (!hidden_s_dev) {
+ err = -ENOMEM;
+ goto out;
+@@ -357,7 +357,7 @@
+ int bindex, bstart, bend;
+ int perms;
+
+- tmp = __get_free_page(GFP_NOFS);
++ tmp = __get_free_page(GFP_KERNEL);
+ if (!tmp) {
+ ret = -ENOMEM;
+ goto out;
diff --git a/sys-fs/unionfs/unionfs-1.0.8-r2.ebuild b/sys-fs/unionfs/unionfs-1.0.8-r2.ebuild
new file mode 100644
index 000000000000..0aa11dd64dc3
--- /dev/null
+++ b/sys-fs/unionfs/unionfs-1.0.8-r2.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/unionfs/unionfs-1.0.8-r2.ebuild,v 1.1 2005/02/09 12:32:10 satya Exp $
+
+inherit eutils linux-mod check-kernel
+
+DESCRIPTION="Stackable unification file system, which can appear to merge the contents of several directories"
+HOMEPAGE="http://www.fsl.cs.sunysb.edu/project-unionfs.html"
+SRC_URI="ftp://ftp.fsl.cs.sunysb.edu/pub/${PN}/${P}.tar.gz"
+LICENSE="GPL-2"
+KEYWORDS="~x86"
+IUSE="${IUSE} acl debug vserver"
+
+MODULE_NAMES="unionfs(fs:)"
+BUILD_TARGETS="all"
+BUILD_PARAMS="LINUXSRC=${KV_DIR} KERNELVERSION=${KV_MAJOR}.${KV_MINOR}"
+
+#============================================================================
+src_unpack() {
+ local user_Makefile=fistdev.mk
+ local EXTRACFLAGS=""
+ #------------------------------------------------------------------------
+ unpack ${A}
+ cd ${S}
+ #------------------------------------------------------------------------
+ if use vserver; then
+ epatch ${FILESDIR}/${P}-vserver-GFP.patch || die
+ if is_2_4_kernel; then
+ epatch ${FILESDIR}/${P}-vserver.patch || die
+ fi
+ fi
+ #------------------------------------------------------------------------
+ if ! use debug; then
+ echo "UNIONFS_DEBUG_CFLAG=" >> ${user_Makefile}
+ EXTRACFLAGS="${EXTRACFLAGS} -DNODEBUG"
+ fi
+ use acl && EXTRACFLAGS="${EXTRACFLAGS} -DUNIONFS_XATTR -DFIST_SETXATTR_CONSTVOID"
+ echo "EXTRACFLAGS=${EXTRACFLAGS}" >> ${user_Makefile} || die
+}
+#============================================================================
+src_install() {
+ dosbin unionctl uniondbg
+ doman man/unionfs.4 man/unionctl.8 man/uniondbg.8
+
+ linux-mod_src_install
+
+ dodoc INSTALL NEWS README ChangeLog
+}