summaryrefslogtreecommitdiff
path: root/kernels/aufs2-libre
diff options
context:
space:
mode:
Diffstat (limited to 'kernels/aufs2-libre')
-rw-r--r--kernels/aufs2-libre/PKGBUILD64
-rw-r--r--kernels/aufs2-libre/aufs2-libre.install12
-rw-r--r--kernels/aufs2-libre/aufs2-module-2.6.36.patch47
-rw-r--r--kernels/aufs2-libre/create-tarball.sh14
4 files changed, 137 insertions, 0 deletions
diff --git a/kernels/aufs2-libre/PKGBUILD b/kernels/aufs2-libre/PKGBUILD
new file mode 100644
index 000000000..bd177ef9c
--- /dev/null
+++ b/kernels/aufs2-libre/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 110689 2011-02-21 15:30:22Z tpowa $
+# Maintainer: Paul Mattal <pjmattal@elys.com>
+
+pkgname=aufs2-libre
+pkgver=2.6.38_20110314
+pkgrel=4
+#_kernver=${pkgver%_*}-LIBRE
+_kernver=2.6.38-LIBRE
+pkgdesc="Another Unionfs Implementation for the Linux-Libre kernel"
+arch=('i686' 'x86_64')
+url="http://aufs.sourceforge.net/"
+license=('GPL2')
+depends=('kernel26-libre>=2.6.38' 'kernel26-libre<2.6.39')
+makedepends=('kernel26-libre-headers>=2.6.38' 'kernel26-libre-headers<2.6.39')
+replaces=('aufs' 'aufs2')
+conflicts=('aufs2')
+provides=("aufs2=$pkgver")
+install=${pkgname}.install
+source=("ftp://ftp.archlinux.org/other/aufs2/${pkgname%-libre}-${pkgver}.tar.gz")
+options=('!makeflags' '!strip')
+md5sums=('60649fa47d3f499dfbb4b68a2afde47c')
+
+build() {
+ cd ${srcdir}/${pkgname%-libre}-${pkgver}
+ #patch -Np1 -i ../aufs2-module-2.6.36.patch
+ sed -i 's|CONFIG_AUFS_HNOTIFY =.*|CONFIG_AUFS_HNOTIFY = y|' \
+ config.mk || return 1
+ sed -i 's|CONFIG_AUFS_HFSNOTIFY =.*|CONFIG_AUFS_HFSNOTIFY = y|' \
+ config.mk || return 1
+ sed -i 's|CONFIG_AUFS_EXPORT =.*|CONFIG_AUFS_EXPORT = y|' \
+ config.mk || return 1
+ sed -i 's|CONFIG_AUFS_SHWH =.*|CONFIG_AUFS_SHWH = y|' \
+ config.mk || return 1
+ sed -i 's|CONFIG_AUFS_BDEV_LOOP =.*|CONFIG_AUFS_BDEV_LOOP = y|' \
+ config.mk || return 1
+ sed -i 's|CONFIG_AUFS_BR_RAMFS =.*|CONFIG_AUFS_BR_RAMFS = y|' \
+ config.mk || return 1
+ sed -i 's|CONFIG_AUFS_DEBUG =.*|CONFIG_AUFS_DEBUG =|' \
+ config.mk || return 1
+ if [ "${CARCH}" = "x86_64" ]; then
+ inot64=" y"
+ else
+ inot64=""
+ fi
+ sed -i "s|CONFIG_AUFS_INO_T_64 =.*|CONFIG_AUFS_INO_T_64 =${inot64}|" \
+ config.mk
+ # build, sed fixes are from gentoo portage build
+ sed -i "s:aufs.ko usr/include/linux/aufs_type.h:aufs.ko:g" Makefile
+ sed -i "s:__user::g" include/linux/aufs_type.h
+ make KDIR=/usr/src/linux-${_kernver}
+}
+
+package() {
+ cd ${srcdir}/${pkgname%-libre}-${pkgver}
+ install -D -m644 fs/aufs/aufs.ko \
+ $pkgdir/lib/modules/${_kernver}/kernel/fs/aufs/aufs.ko
+ # tweak the install script for the right kernel version
+ sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
+ $startdir/$pkgname.install
+ # install include files
+ install -D -m 644 include/linux/aufs_type.h $pkgdir/usr/include/linux/aufs_type.h
+ # gzip -9 all modules to safe 100MB
+ find "$pkgdir" -name '*.ko' -exec gzip -9 {} \;
+}
diff --git a/kernels/aufs2-libre/aufs2-libre.install b/kernels/aufs2-libre/aufs2-libre.install
new file mode 100644
index 000000000..883882a54
--- /dev/null
+++ b/kernels/aufs2-libre/aufs2-libre.install
@@ -0,0 +1,12 @@
+post_install() {
+ KERNEL_VERSION=2.6.38-LIBRE
+ depmod $KERNEL_VERSION
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/kernels/aufs2-libre/aufs2-module-2.6.36.patch b/kernels/aufs2-libre/aufs2-module-2.6.36.patch
new file mode 100644
index 000000000..3b43f7aed
--- /dev/null
+++ b/kernels/aufs2-libre/aufs2-module-2.6.36.patch
@@ -0,0 +1,47 @@
+diff --git a/ubuntu/aufs/branch.c b/ubuntu/aufs/branch.c
+index cd4463c..ff6b158 100644
+--- a/fs/aufs/branch.c
++++ b/fs/aufs/branch.c
+@@ -22,6 +22,8 @@
+
+ #include <linux/file.h>
+ #include <linux/statfs.h>
++#include <linux/lglock.h>
++#include <linux/percpu.h>
+ #include "aufs.h"
+
+ /*
+@@ -851,7 +853,8 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex)
+ goto out;
+
+ /* no need file_list_lock() since sbinfo is locked? defered? */
+- list_for_each_entry(file, &sb->s_files, f_u.fu_list) {
++ lg_global_lock(files_lglock);
++ do_file_list_for_each_entry(sb, file) {
+ if (special_file(file->f_dentry->d_inode->i_mode))
+ continue;
+
+@@ -861,6 +864,7 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex)
+ err = -EBUSY;
+ FiMustNoWaiters(file);
+ fi_read_unlock(file);
++ lg_global_unlock(files_lglock);
+ goto out_free;
+ }
+
+@@ -889,10 +893,13 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex)
+ if (p) {
+ a = p;
+ a[n++] = hf;
+- } else
++ } else {
++ lg_global_unlock(files_lglock);
+ goto out_free;
++ }
+ }
+- }
++ } while_file_list_for_each_entry;
++ lg_global_unlock(files_lglock);
+
+ err = 0;
+ if (n)
diff --git a/kernels/aufs2-libre/create-tarball.sh b/kernels/aufs2-libre/create-tarball.sh
new file mode 100644
index 000000000..6801f00bd
--- /dev/null
+++ b/kernels/aufs2-libre/create-tarball.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+AUFS2VERSION="-38"
+KERNELVERSION=2.6.38
+GITSNAPSHOT=20110314
+# aufs2 (no -xx) for the latest -rc version.
+git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git aufs2-standalone.git
+cd aufs2-standalone.git
+#git checkout origin/aufs2.1${AUFS2VERSION}
+git checkout origin/aufs2.1
+#*** apply "aufs2-base.patch" and "aufs2-standalone.patch" to your kernel source files.
+cd ..
+rm -rf aufs2-${KERNELVERSION}_${GITSNAPSHOT}
+cp -a aufs2-standalone.git aufs2-${KERNELVERSION}_${GITSNAPSHOT}
+tar -czf aufs2-${KERNELVERSION}_${GITSNAPSHOT}.tar.gz --exclude=.git aufs2-${KERNELVERSION}_${GITSNAPSHOT}