From b5443affdf0b6c822bfecdd6f8d9d25cb8a62d06 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Thu, 18 Dec 2014 07:47:20 +0000
Subject: [PATCH] core/linux-am33x aufs fix

---
 .../0001-AUFS-fix-for-3.18.1.patch            | 86 +++++++++++++++++++
 core/linux-am33x/PKGBUILD                     |  7 +-
 2 files changed, 92 insertions(+), 1 deletion(-)
 create mode 100644 core/linux-am33x/0001-AUFS-fix-for-3.18.1.patch

diff --git a/core/linux-am33x/0001-AUFS-fix-for-3.18.1.patch b/core/linux-am33x/0001-AUFS-fix-for-3.18.1.patch
new file mode 100644
index 000000000..d94b704ba
--- /dev/null
+++ b/core/linux-am33x/0001-AUFS-fix-for-3.18.1.patch
@@ -0,0 +1,86 @@
+From b4e9c2511bfe0eed13f7d0550241b60f6730d76a Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Thu, 18 Dec 2014 00:41:44 -0700
+Subject: [PATCH] AUFS fix for 3.18.1
+
+Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
+---
+ fs/aufs/dcsub.c   | 4 ++--
+ fs/aufs/debug.c   | 2 +-
+ fs/aufs/export.c  | 2 +-
+ fs/aufs/hnotify.c | 4 ++--
+ 4 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/fs/aufs/dcsub.c b/fs/aufs/dcsub.c
+index 9fbc218..04663e5 100644
+--- a/fs/aufs/dcsub.c
++++ b/fs/aufs/dcsub.c
+@@ -134,7 +134,7 @@ resume:
+ 	while (next != &this_parent->d_subdirs) {
+ 		struct list_head *tmp = next;
+ 		struct dentry *dentry = list_entry(tmp, struct dentry,
+-						   d_u.d_child);
++						   d_child);
+ 
+ 		next = tmp->next;
+ 		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+@@ -170,7 +170,7 @@ resume:
+ 		this_parent = tmp;
+ 		spin_lock(&this_parent->d_lock);
+ 		rcu_read_unlock();
+-		next = child->d_u.d_child.next;
++		next = child->d_child.next;
+ 		goto resume;
+ 	}
+ 
+diff --git a/fs/aufs/debug.c b/fs/aufs/debug.c
+index e3ee24d..563bac0 100644
+--- a/fs/aufs/debug.c
++++ b/fs/aufs/debug.c
+@@ -169,7 +169,7 @@ void au_dpri_dalias(struct inode *inode)
+ 	struct dentry *d;
+ 
+ 	spin_lock(&inode->i_lock);
+-	hlist_for_each_entry(d, &inode->i_dentry, d_alias)
++	hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias)
+ 		au_dpri_dentry(d);
+ 	spin_unlock(&inode->i_lock);
+ }
+diff --git a/fs/aufs/export.c b/fs/aufs/export.c
+index 32df1ed..864ec30 100644
+--- a/fs/aufs/export.c
++++ b/fs/aufs/export.c
+@@ -243,7 +243,7 @@ static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino,
+ 		dentry = d_find_alias(inode);
+ 	else {
+ 		spin_lock(&inode->i_lock);
+-		hlist_for_each_entry(d, &inode->i_dentry, d_alias) {
++		hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) {
+ 			spin_lock(&d->d_lock);
+ 			if (!au_test_anon(d)
+ 			    && d->d_parent->d_inode->i_ino == dir_ino) {
+diff --git a/fs/aufs/hnotify.c b/fs/aufs/hnotify.c
+index e120c55..94d6d6e 100644
+--- a/fs/aufs/hnotify.c
++++ b/fs/aufs/hnotify.c
+@@ -211,7 +211,7 @@ static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode,
+ 		AuDebugOn(!name);
+ 		au_iigen_dec(inode);
+ 		spin_lock(&inode->i_lock);
+-		hlist_for_each_entry(d, &inode->i_dentry, d_alias) {
++		hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) {
+ 			spin_lock(&d->d_lock);
+ 			dname = &d->d_name;
+ 			if (dname->len != nlen
+@@ -378,7 +378,7 @@ static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen,
+ 
+ 	dentry = NULL;
+ 	spin_lock(&parent->d_lock);
+-	list_for_each_entry(d, &parent->d_subdirs, d_u.d_child) {
++	list_for_each_entry(d, &parent->d_subdirs, d_child) {
+ 		/* AuDbg("%pd\n", d); */
+ 		spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
+ 		dname = &d->d_name;
+-- 
+2.1.3
+
diff --git a/core/linux-am33x/PKGBUILD b/core/linux-am33x/PKGBUILD
index ec1d363e4..f614228bb 100644
--- a/core/linux-am33x/PKGBUILD
+++ b/core/linux-am33x/PKGBUILD
@@ -19,12 +19,14 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
         "http://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz"
         "http://rcn-ee.net/deb/sid-armhf/v${pkgver}-${rcnrel}/patch-${pkgver%.0}-${rcnrel}.diff.gz"
         "git://git.code.sf.net/p/aufs/aufs3-standalone#branch=aufs${pkgver%.*}"
-        #"git://git.code.sf.net/p/aufs/aufs3-standalone#branch=aufs3.x-rcN"
+        #"git://git.code.sf.net/p/aufs/aufs3-standalone#branch=aufs3.x-rcN" 
+        '0001-AUFS-fix-for-3.18.1.patch'
         'config')
 md5sums=('9e854df51ca3fef8bfe566dbd7b89241'
          '82864000fde42252dd5e80cceb971479'
          '46ce48685ed5cd57ad8b81715aa9b31b'
          'SKIP'
+         'aa83d1bca3a3583aa4011d03ff23bfd5'
          'cdca1e95ac460aa6d8fb04c5c99e9238')
 
 prepare() {
@@ -47,6 +49,9 @@ prepare() {
   git apply ../aufs3-standalone/aufs3-mmap.patch
   git apply ../aufs3-standalone/aufs3-standalone.patch
 
+  # Fix until patched upstream
+  git apply ../0001-AUFS-fix-for-3.18.1.patch
+
   cat "${srcdir}/config" > ./.config
 
   # add pkgrel to extraversion