commit cf32a4801ed39d7084639e832dfc1d419726aa55 Author: Arkadiusz MiĆkiewicz <ar...@maven.pl> Date: Sun Jan 31 22:17:05 2016 +0100
- up to 4.1.17; updated aufs patch from upstream kernel-aufs4.patch | 459 +++++++++++++++++++++++++++-------------------------- kernel.spec | 6 +- 2 files changed, 238 insertions(+), 227 deletions(-) --- diff --git a/kernel.spec b/kernel.spec index ae0a680..b9457fd 100644 --- a/kernel.spec +++ b/kernel.spec @@ -69,9 +69,9 @@ %define have_pcmcia 0 %endif -%define rel 3 +%define rel 1 %define basever 4.1 -%define postver .16 +%define postver .17 # define this to '-%{basever}' for longterm branch %define versuffix -%{basever} @@ -120,7 +120,7 @@ Source0: http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{basever}.tar.xz # Source0-md5: fe9dc0f6729f36400ea81aa41d614c37 %if "%{postver}" != ".0" Patch0: http://www.kernel.org/pub/linux/kernel/v4.x/patch-%{version}.xz -# Patch0-md5: 8c3804e9af8e28279071ce745ee4d579 +# Patch0-md5: 49c68f18968fa809e20a7b20423fd1d2 %endif Source1: kernel.sysconfig diff --git a/kernel-aufs4.patch b/kernel-aufs4.patch index 9ebd5fc..3eb634b 100644 --- a/kernel-aufs4.patch +++ b/kernel-aufs4.patch @@ -1,4 +1,4 @@ -aufs4.1 kbuild patch +aufs4.1.13+ kbuild patch diff --git a/fs/Kconfig b/fs/Kconfig index 011f433..b1083f6 100644 @@ -33,7 +33,7 @@ index 1a0006a..ddad01a 100644 header-y += auto_fs4.h header-y += auto_fs.h header-y += auxvec.h -aufs4.1 base patch +aufs4.1.13+ base patch diff --git a/MAINTAINERS b/MAINTAINERS index d8afd29..feac5ea 100644 @@ -60,10 +60,10 @@ index d8afd29..feac5ea 100644 M: Miguel Ojeda Sandonis <miguel.ojeda.sando...@gmail.com> W: http://miguelojeda.es/auxdisplay.htm diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index d7173cb..0160952 100644 +index cef6fa8..a5b343d 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -540,6 +540,24 @@ static inline int is_loop_device(struct file *file) +@@ -538,6 +538,24 @@ static inline int is_loop_device(struct file *file) return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR; } @@ -89,10 +89,10 @@ index d7173cb..0160952 100644 static ssize_t loop_attr_show(struct device *dev, char *page, diff --git a/fs/dcache.c b/fs/dcache.c -index 37b5afd..bc261e2 100644 +index 0046ab7..23bdfa1 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -1164,7 +1164,7 @@ enum d_walk_ret { +@@ -1167,7 +1167,7 @@ enum d_walk_ret { * * The @enter() and @finish() callbacks are called with d_lock held. */ @@ -175,10 +175,10 @@ index f87d308..9a290b3 100644 static inline void fput_light(struct file *file, int fput_needed) { diff --git a/include/linux/fs.h b/include/linux/fs.h -index 35ec87e..3229f97 100644 +index fdc369f..da37e51 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1649,6 +1649,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, +@@ -1663,6 +1663,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, struct iovec *fast_pointer, struct iovec **ret_pointer); @@ -206,7 +206,7 @@ index da2751d..2e0fca6 100644 + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif -aufs4.1 mmap patch +aufs4.1.13+ mmap patch diff --git a/fs/buffer.c b/fs/buffer.c index c7a5602..8c50a22 100644 @@ -292,10 +292,10 @@ index 599ec2e..1740207 100644 ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; diff --git a/include/linux/mm.h b/include/linux/mm.h -index 0755b9f..2ee5500 100644 +index b208558..bda1930 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -1172,6 +1172,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, +@@ -1200,6 +1200,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, } #endif @@ -325,10 +325,10 @@ index 0755b9f..2ee5500 100644 extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, int write); diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 8d37e26..ce89d4c 100644 +index c0c6b33..e65090c 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -241,6 +241,7 @@ struct vm_region { +@@ -232,6 +232,7 @@ struct vm_region { unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ @@ -336,7 +336,7 @@ index 8d37e26..ce89d4c 100644 int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for -@@ -305,6 +306,7 @@ struct vm_area_struct { +@@ -296,6 +297,7 @@ struct vm_area_struct { unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units, *not* PAGE_CACHE_SIZE */ struct file * vm_file; /* File we map to (can be NULL). */ @@ -345,7 +345,7 @@ index 8d37e26..ce89d4c 100644 #ifndef CONFIG_MMU diff --git a/kernel/fork.c b/kernel/fork.c -index 03c1eaa..7e215ba 100644 +index 8209fa2..7c655e8 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -456,7 +456,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) @@ -371,7 +371,7 @@ index 98c4eae..3f0c9b9 100644 obj-y += init-mm.o diff --git a/mm/filemap.c b/mm/filemap.c -index 6bf5e42..a863d0f 100644 +index 1ffef05..13a1981 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2062,7 +2062,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) @@ -384,7 +384,7 @@ index 6bf5e42..a863d0f 100644 if (page->mapping != inode->i_mapping) { unlock_page(page); diff --git a/mm/memory.c b/mm/memory.c -index 22e037e..62096a2 100644 +index 2a9e098..2a8d5ec 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2034,7 +2034,7 @@ static inline int wp_page_reuse(struct mm_struct *mm, @@ -612,13 +612,13 @@ index 0000000..b323b8a + fput(pr); +} +#endif /* !CONFIG_MMU */ -aufs4.1 standalone patch +aufs4.1.13+ standalone patch diff --git a/fs/dcache.c b/fs/dcache.c -index bc261e2..8d7951d 100644 +index 23bdfa1..7e3ccfa 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -1269,6 +1269,7 @@ rename_retry: +@@ -1272,6 +1272,7 @@ rename_retry: seq = 1; goto again; } @@ -647,7 +647,7 @@ index 294174d..3cea027 100644 void __init files_init(unsigned long mempages) { diff --git a/fs/inode.c b/fs/inode.c -index ea37cd1..58f5f58 100644 +index 6e342ca..59a6409 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -58,6 +58,7 @@ static struct hlist_head *inode_hashtable __read_mostly; @@ -659,7 +659,7 @@ index ea37cd1..58f5f58 100644 /* * Empty aops. Can be used for the cases where the user does not diff --git a/fs/namespace.c b/fs/namespace.c -index 1b9e111..d45b81b 100644 +index fce3cc1..777b481 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *mnt) @@ -670,7 +670,7 @@ index 1b9e111..d45b81b 100644 /** * mnt_drop_write - give up write access to a mount -@@ -1768,6 +1769,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, +@@ -1792,6 +1793,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, } return 0; } @@ -715,7 +715,7 @@ index d16b62c..06ca6bc 100644 int fsnotify_fasync(int fd, struct file *file, int on) { diff --git a/fs/notify/mark.c b/fs/notify/mark.c -index 92e48c7..d2c4b68 100644 +index 39ddcaf..39a838a 100644 --- a/fs/notify/mark.c +++ b/fs/notify/mark.c @@ -109,6 +109,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) @@ -742,7 +742,7 @@ index 92e48c7..d2c4b68 100644 int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, struct inode *inode, struct vfsmount *mnt, int allow_dups) -@@ -455,6 +458,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, +@@ -475,6 +478,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, atomic_set(&mark->refcnt, 1); mark->free_mark = free_mark; } @@ -751,7 +751,7 @@ index 92e48c7..d2c4b68 100644 static int fsnotify_mark_destroy(void *ignored) { diff --git a/fs/open.c b/fs/open.c -index 98e5a52..a94e2e7 100644 +index f9d2bf9..268ea92 100644 --- a/fs/open.c +++ b/fs/open.c @@ -62,6 +62,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, @@ -769,7 +769,7 @@ index 98e5a52..a94e2e7 100644 +EXPORT_SYMBOL(open_check_o_direct); static int do_dentry_open(struct file *f, - int (*open)(struct inode *, struct file *), + struct inode *inode, diff --git a/fs/read_write.c b/fs/read_write.c index fd0414e..8ace6ec 100644 --- a/fs/read_write.c @@ -944,7 +944,7 @@ index 8e9b1f4..c1c7cd1 100644 { diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Documentation/ABI/testing/debugfs-aufs --- /usr/share/empty/Documentation/ABI/testing/debugfs-aufs 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/ABI/testing/debugfs-aufs 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/ABI/testing/debugfs-aufs 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,50 @@ +What: /debug/aufs/si_<id>/ +Date: March 2009 @@ -998,7 +998,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Document + will be empty. About XINO files, see the aufs manual. diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentation/ABI/testing/sysfs-aufs --- /usr/share/empty/Documentation/ABI/testing/sysfs-aufs 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/ABI/testing/sysfs-aufs 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/ABI/testing/sysfs-aufs 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_<id>/ +Date: March 2009 @@ -1033,7 +1033,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentat + will be empty. About XINO files, see the aufs manual. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt linux/Documentation/filesystems/aufs/design/01intro.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/01intro.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/01intro.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,170 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1207,7 +1207,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt lin +about it. But currently I have implemented it in kernel space. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt linux/Documentation/filesystems/aufs/design/02struct.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/02struct.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/02struct.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1469,7 +1469,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt li +For this purpose, use "aumvdown" command in aufs-util.git. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt linux/Documentation/filesystems/aufs/design/03atomic_open.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,85 @@ + +# Copyright (C) 2015 Junjiro R. Okajima @@ -1558,7 +1558,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.t + be implemented in aufs, but not all I am afraid. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt linux/Documentation/filesystems/aufs/design/03lookup.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1675,7 +1675,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt li + by over-mounting something (or another method). diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt linux/Documentation/filesystems/aufs/design/04branch.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/04branch.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/04branch.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1753,7 +1753,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt li + same named entry on the upper branch. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt linux/Documentation/filesystems/aufs/design/05wbr_policy.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1821,7 +1821,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.tx + copyup policy. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linux/Documentation/filesystems/aufs/design/06fhsm.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,120 @@ + +# Copyright (C) 2011-2015 Junjiro R. Okajima @@ -1945,7 +1945,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linu +should restore the original file state after an error happens. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linux/Documentation/filesystems/aufs/design/06mmap.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,72 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2021,7 +2021,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linu +I have to give up this "looks-smater" approach. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt linux/Documentation/filesystems/aufs/design/06xattr.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2015-09-24 10:47:58.244719488 +0200 ++++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,96 @@ + +# Copyright (C) 2014-2015 Junjiro R. Okajima @@ -2121,7 +2121,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt lin +now, aufs implements the branch attributes to ignore the error. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt linux/Documentation/filesystems/aufs/design/07export.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/07export.txt 2015-09-24 10:47:58.248052907 +0200 ++++ linux/Documentation/filesystems/aufs/design/07export.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2183,7 +2183,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt li + lookup_one_len(), vfs_getattr(), encode_fh() and others. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linux/Documentation/filesystems/aufs/design/08shwh.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2015-09-24 10:47:58.248052907 +0200 ++++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2239,7 +2239,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linu +initramfs will use it to replace the old one at the next boot. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt linux/Documentation/filesystems/aufs/design/10dynop.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2015-09-24 10:47:58.248052907 +0200 ++++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2016-01-13 20:11:11.663093444 +0100 @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2015 Junjiro R. Okajima @@ -2290,8 +2290,8 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt lin +regular files only. diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documentation/filesystems/aufs/README --- /usr/share/empty/Documentation/filesystems/aufs/README 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/README 2015-09-24 10:47:58.244719488 +0200 -@@ -0,0 +1,383 @@ ++++ linux/Documentation/filesystems/aufs/README 2016-01-13 20:11:11.663093444 +0100 +@@ -0,0 +1,390 @@ + +Aufs4 -- advanced multi layered unification filesystem version 4.x +http://aufs.sf.net @@ -2400,7 +2400,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta +And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot +build aufs4 as an external kernel module. +Several extra patches are not included in this tree. Only -+aufs4-standalone tree contains them. They are describe in the later ++aufs4-standalone tree contains them. They are described in the later +section "Configuration and Compilation." + +On the other hand, the aufs4-standalone tree has only aufs source files @@ -2556,6 +2556,13 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. ++- lockdep-debug.patch ++ Because aufs is not only an ordinary filesystem (callee of VFS), but ++ also a caller of VFS functions for branch filesystems, subclassing of ++ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging ++ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will ++ need to apply this debug patch to expand several constant values. ++ If don't know what LOCKDEP, then you don't have apply this patch. + + +4. Usage @@ -2677,7 +2684,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta +# End: ; diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h --- /usr/share/empty/fs/aufs/aufs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/aufs.h 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/aufs.h 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2740,8 +2747,8 @@ diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h +#endif /* __AUFS_H__ */ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c --- /usr/share/empty/fs/aufs/branch.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/branch.c 2015-12-10 18:46:31.223310574 +0100 -@@ -0,0 +1,1414 @@ ++++ linux/fs/aufs/branch.c 2016-01-31 21:55:05.413097911 +0100 +@@ -0,0 +1,1408 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -2874,7 +2881,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + + err = -ENOMEM; + root = sb->s_root; -+ add_branch = kmalloc(sizeof(*add_branch), GFP_NOFS); ++ add_branch = kzalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + @@ -2882,16 +2889,14 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + if (unlikely(err)) + goto out_br; + -+ add_branch->br_wbr = NULL; + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ -+ add_branch->br_wbr = kmalloc(sizeof(*add_branch->br_wbr), ++ add_branch->br_wbr = kzalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + -+ add_branch->br_fhsm = NULL; + if (au_br_fhsm(perm)) { + err = au_fhsm_br_alloc(add_branch); + if (unlikely(err)) @@ -3096,9 +3101,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + + wbr = br->br_wbr; + au_rw_init(&wbr->wbr_wh_rwsem); -+ memset(wbr->wbr_wh, 0, sizeof(wbr->wbr_wh)); + atomic_set(&wbr->wbr_wh_running, 0); -+ wbr->wbr_bytes = 0; + + /* + * a limit for rmdir/rename a dir @@ -3127,12 +3130,10 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + struct inode *h_inode; + + err = 0; -+ memset(&br->br_xino, 0, sizeof(br->br_xino)); + mutex_init(&br->br_xino.xi_nondir_mtx); + br->br_perm = add->perm; + br->br_path = add->path; /* set first, path_get() later */ + spin_lock_init(&br->br_dykey_lock); -+ memset(br->br_dykey, 0, sizeof(br->br_dykey)); + atomic_set(&br->br_count, 0); + atomic_set(&br->br_xino_running, 0); + br->br_id = au_new_br_id(sb); @@ -3341,7 +3342,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + for (ull = 0; ull < max; ull++) + if (a[ull]) + fput(a[ull]); -+ au_array_free(a); ++ kvfree(a); +} + +/* ---------------------------------------------------------------------- */ @@ -4091,7 +4092,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + + if (unlikely(err)) { + rerr = -ENOMEM; -+ br->br_wbr = kmalloc(sizeof(*br->br_wbr), ++ br->br_wbr = kzalloc(sizeof(*br->br_wbr), + GFP_NOFS); + if (br->br_wbr) + rerr = au_wbr_init(br, sb, br->br_perm); @@ -4105,7 +4106,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c + } else if (au_br_writable(mod->perm)) { + /* ro --> rw */ + err = -ENOMEM; -+ br->br_wbr = kmalloc(sizeof(*br->br_wbr), GFP_NOFS); ++ br->br_wbr = kzalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + err = au_wbr_init(br, sb, mod->perm); + if (unlikely(err)) { @@ -4158,7 +4159,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c +} diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h --- /usr/share/empty/fs/aufs/branch.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/branch.h 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/branch.h 2016-01-31 21:55:05.413097911 +0100 @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -4441,7 +4442,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h +#endif /* __AUFS_BRANCH_H__ */ diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk --- /usr/share/empty/fs/aufs/conf.mk 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/conf.mk 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/conf.mk 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,38 @@ + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} @@ -4483,7 +4484,7 @@ diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk +-include ${srctree}/${src}/conf_priv.mk diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c --- /usr/share/empty/fs/aufs/cpup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/cpup.c 2015-11-11 17:21:46.915530388 +0100 ++++ linux/fs/aufs/cpup.c 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,1319 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -5806,7 +5807,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c +} diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h --- /usr/share/empty/fs/aufs/cpup.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/cpup.h 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/cpup.h 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -5904,7 +5905,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h +#endif /* __AUFS_CPUP_H__ */ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c --- /usr/share/empty/fs/aufs/dbgaufs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dbgaufs.c 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/dbgaufs.c 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,432 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6340,7 +6341,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c +} diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h --- /usr/share/empty/fs/aufs/dbgaufs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dbgaufs.h 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/dbgaufs.h 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6392,7 +6393,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h +#endif /* __DBGAUFS_H__ */ diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c --- /usr/share/empty/fs/aufs/dcsub.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dcsub.c 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/dcsub.c 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6620,7 +6621,7 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c +} diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h --- /usr/share/empty/fs/aufs/dcsub.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dcsub.h 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/dcsub.h 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6760,8 +6761,8 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h +#endif /* __AUFS_DCSUB_H__ */ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c --- /usr/share/empty/fs/aufs/debug.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/debug.c 2015-09-24 10:47:58.251386326 +0200 -@@ -0,0 +1,440 @@ ++++ linux/fs/aufs/debug.c 2016-01-13 20:11:11.666426853 +0100 +@@ -0,0 +1,438 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -7094,9 +7095,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c + } + + a->mnt.mnt_sb = sb; -+ a->fake.br_perm = 0; + a->fake.br_path.mnt = &a->mnt; -+ a->fake.br_xino.xi_file = NULL; + atomic_set(&a->fake.br_count, 0); + smp_mb(); /* atomic_set */ + err = do_pri_br(-1, &a->fake); @@ -7204,7 +7203,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c +} diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h --- /usr/share/empty/fs/aufs/debug.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/debug.h 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/debug.h 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -7433,7 +7432,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h +#endif /* __AUFS_DEBUG_H__ */ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c --- /usr/share/empty/fs/aufs/dentry.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dentry.c 2015-11-11 17:21:46.918863802 +0100 ++++ linux/fs/aufs/dentry.c 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,1136 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -8004,7 +8003,9 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c + struct dentry *dentry; + struct inode *inode; + mode_t mode; -+ } orig_h, tmp_h; ++ } orig_h, tmp_h = { ++ .dentry = NULL ++ }; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; @@ -8018,10 +8019,8 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c + orig_h.inode = d_inode(orig_h.dentry); + orig_h.mode = orig_h.inode->i_mode & S_IFMT; + } -+ memset(&tmp_h, 0, sizeof(tmp_h)); + if (tmp->di_bstart >= 0) { + tmp_h.dentry = tmp->di_hdentry[tmp->di_bstart].hd_dentry; -+ tmp_h.inode = NULL; + if (d_is_positive(tmp_h.dentry)) { + tmp_h.inode = d_inode(tmp_h.dentry); + tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; @@ -8573,7 +8572,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c +}; diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h --- /usr/share/empty/fs/aufs/dentry.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dentry.h 2015-11-11 17:21:46.918863802 +0100 ++++ linux/fs/aufs/dentry.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,234 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -8811,7 +8810,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h +#endif /* __AUFS_DENTRY_H__ */ diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c --- /usr/share/empty/fs/aufs/dinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dinfo.c 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/dinfo.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,550 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -9365,7 +9364,7 @@ diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c +} diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c --- /usr/share/empty/fs/aufs/dir.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dir.c 2015-12-10 17:59:16.836166410 +0100 ++++ linux/fs/aufs/dir.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,753 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -10122,7 +10121,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c +}; diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h --- /usr/share/empty/fs/aufs/dir.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dir.h 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/dir.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -10257,7 +10256,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h +#endif /* __AUFS_DIR_H__ */ diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c --- /usr/share/empty/fs/aufs/dynop.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dynop.c 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/dynop.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -10630,7 +10629,7 @@ diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c +} diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h --- /usr/share/empty/fs/aufs/dynop.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dynop.h 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/dynop.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -10708,7 +10707,7 @@ diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h +#endif /* __AUFS_DYNOP_H__ */ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c --- /usr/share/empty/fs/aufs/export.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/export.c 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/export.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,832 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -11544,7 +11543,7 @@ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c +} diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c --- /usr/share/empty/fs/aufs/fhsm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/fhsm.c 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/fhsm.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,426 @@ +/* + * Copyright (C) 2011-2015 Junjiro R. Okajima @@ -11974,7 +11973,7 @@ diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c +} diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c --- /usr/share/empty/fs/aufs/file.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/file.c 2015-11-11 17:21:46.918863802 +0100 ++++ linux/fs/aufs/file.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,844 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -12822,7 +12821,7 @@ diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c +}; diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h --- /usr/share/empty/fs/aufs/file.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/file.h 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/file.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -13117,8 +13116,8 @@ diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h +#endif /* __AUFS_FILE_H__ */ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c --- /usr/share/empty/fs/aufs/finfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/finfo.c 2015-09-24 10:47:58.251386326 +0200 -@@ -0,0 +1,157 @@ ++++ linux/fs/aufs/finfo.c 2016-01-13 20:11:11.669760262 +0100 +@@ -0,0 +1,156 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -13196,7 +13195,6 @@ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c + if (fidir) { + fidir->fd_bbot = -1; + fidir->fd_nent = nbr; -+ fidir->fd_vdir_cache = NULL; + } + + return fidir; @@ -13278,7 +13276,7 @@ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c +} diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c --- /usr/share/empty/fs/aufs/f_op.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/f_op.c 2015-09-24 10:47:58.251386326 +0200 ++++ linux/fs/aufs/f_op.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,738 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -14020,7 +14018,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c +}; diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h --- /usr/share/empty/fs/aufs/fstype.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/fstype.h 2015-12-10 17:59:16.836166410 +0100 ++++ linux/fs/aufs/fstype.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,400 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -14424,7 +14422,7 @@ diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h +#endif /* __AUFS_FSTYPE_H__ */ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c --- /usr/share/empty/fs/aufs/hfsnotify.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hfsnotify.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/hfsnotify.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,288 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -14716,7 +14714,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c +}; diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c --- /usr/share/empty/fs/aufs/hfsplus.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hfsplus.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/hfsplus.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -14776,7 +14774,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c +} diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c --- /usr/share/empty/fs/aufs/hnotify.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hnotify.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/hnotify.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,710 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -15490,7 +15488,7 @@ diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c +} diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c --- /usr/share/empty/fs/aufs/iinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/iinfo.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/iinfo.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,277 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -15612,13 +15610,13 @@ diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c + sigen = au_sigen(inode->i_sb); + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; -+ spin_lock(&iinfo->ii_genspin); ++ spin_lock(&iigen->ig_spin); + iigen->ig_generation = sigen; + if (half) + au_ig_fset(iigen->ig_flags, HALF_REFRESHED); + else + au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); -+ spin_unlock(&iinfo->ii_genspin); ++ spin_unlock(&iigen->ig_spin); +} + +/* it may be called at remount time, too */ @@ -15671,7 +15669,7 @@ diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c + struct au_iinfo *iinfo = &c->iinfo; + static struct lock_class_key aufs_ii; + -+ spin_lock_init(&iinfo->ii_genspin); ++ spin_lock_init(&iinfo->ii_generation.ig_spin); + au_rw_init(&iinfo->ii_rwsem); + au_rw_class(&iinfo->ii_rwsem, &aufs_ii); + inode_init_once(&c->vfs_inode); @@ -15771,8 +15769,8 @@ diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c +} diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c --- /usr/share/empty/fs/aufs/inode.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/inode.c 2015-12-10 17:59:16.836166410 +0100 -@@ -0,0 +1,528 @@ ++++ linux/fs/aufs/inode.c 2016-01-24 20:34:04.746537160 +0100 +@@ -0,0 +1,527 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -16061,8 +16059,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; -+ unsigned int gen; -+ struct au_iigen iigen; ++ unsigned int gen, igflags; + aufs_bindex_t bindex, bend; + struct inode *h_inode, *h_dinode; + struct dentry *h_dentry; @@ -16087,9 +16084,9 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c + continue; + + err = 0; -+ gen = au_iigen(inode, &iigen); ++ gen = au_iigen(inode, &igflags); + if (gen == au_digen(dentry) -+ && !au_ig_ftest(iigen.ig_flags, HALF_REFRESHED)) ++ && !au_ig_ftest(igflags, HALF_REFRESHED)) + break; + + /* fully refresh inode using dentry */ @@ -16303,8 +16300,8 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c +} diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h --- /usr/share/empty/fs/aufs/inode.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/inode.h 2015-12-10 17:59:16.836166410 +0100 -@@ -0,0 +1,681 @@ ++++ linux/fs/aufs/inode.h 2016-01-24 20:34:04.746537160 +0100 +@@ -0,0 +1,685 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -16366,12 +16363,12 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h + do { (flags) &= ~AuIG_##name; } while (0) + +struct au_iigen { ++ spinlock_t ig_spin; + __u32 ig_generation, ig_flags; +}; + +struct au_vdir; +struct au_iinfo { -+ spinlock_t ii_genspin; + struct au_iigen ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + @@ -16729,17 +16726,19 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h +#endif +} + -+static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen) ++static inline unsigned int au_iigen(struct inode *inode, unsigned int *igflags) +{ + unsigned int gen; + struct au_iinfo *iinfo; ++ struct au_iigen *iigen; + + iinfo = au_ii(inode); -+ spin_lock(&iinfo->ii_genspin); -+ if (iigen) -+ *iigen = iinfo->ii_generation; -+ gen = iinfo->ii_generation.ig_generation; -+ spin_unlock(&iinfo->ii_genspin); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ if (igflags) ++ *igflags = iigen->ig_flags; ++ gen = iigen->ig_generation; ++ spin_unlock(&iigen->ig_spin); + + return gen; +} @@ -16759,11 +16758,13 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h +static inline void au_iigen_dec(struct inode *inode) +{ + struct au_iinfo *iinfo; ++ struct au_iigen *iigen; + + iinfo = au_ii(inode); -+ spin_lock(&iinfo->ii_genspin); -+ iinfo->ii_generation.ig_generation--; -+ spin_unlock(&iinfo->ii_genspin); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ iigen->ig_generation--; ++ spin_unlock(&iigen->ig_spin); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) @@ -16988,7 +16989,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h +#endif /* __AUFS_INODE_H__ */ diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c --- /usr/share/empty/fs/aufs/ioctl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/ioctl.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/ioctl.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -17211,7 +17212,7 @@ diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c +#endif diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c --- /usr/share/empty/fs/aufs/i_op_add.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op_add.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/i_op_add.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,932 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -18147,7 +18148,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c +} diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c --- /usr/share/empty/fs/aufs/i_op.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op.c 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/i_op.c 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,1449 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -19600,7 +19601,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c +}; diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c --- /usr/share/empty/fs/aufs/i_op_del.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op_del.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/i_op_del.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,510 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -20114,7 +20115,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c +} diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c --- /usr/share/empty/fs/aufs/i_op_ren.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op_ren.c 2015-12-10 17:59:16.836166410 +0100 ++++ linux/fs/aufs/i_op_ren.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,1015 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21133,7 +21134,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c +} diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig --- /usr/share/empty/fs/aufs/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/Kconfig 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/Kconfig 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,185 @@ +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" @@ -21322,7 +21323,7 @@ diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig +endif diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c --- /usr/share/empty/fs/aufs/loop.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/loop.c 2015-11-11 17:21:46.918863802 +0100 ++++ linux/fs/aufs/loop.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21472,7 +21473,7 @@ diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c +} diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h --- /usr/share/empty/fs/aufs/loop.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/loop.h 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/loop.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21528,7 +21529,7 @@ diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h +#endif /* __AUFS_LOOP_H__ */ diff -urN /usr/share/empty/fs/aufs/magic.mk linux/fs/aufs/magic.mk --- /usr/share/empty/fs/aufs/magic.mk 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/magic.mk 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/magic.mk 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,30 @@ + +# defined in ${srctree}/fs/fuse/inode.c @@ -21562,7 +21563,7 @@ diff -urN /usr/share/empty/fs/aufs/magic.mk linux/fs/aufs/magic.mk +endif diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile --- /usr/share/empty/fs/aufs/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/Makefile 2015-09-24 10:47:58.248052907 +0200 ++++ linux/fs/aufs/Makefile 2016-01-13 20:11:11.666426853 +0100 @@ -0,0 +1,44 @@ + +include ${src}/magic.mk @@ -21610,7 +21611,7 @@ diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c --- /usr/share/empty/fs/aufs/module.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/module.c 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/module.c 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,222 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21836,7 +21837,7 @@ diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c +module_exit(aufs_exit); diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h --- /usr/share/empty/fs/aufs/module.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/module.h 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/module.h 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21944,7 +21945,7 @@ diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h +#endif /* __AUFS_MODULE_H__ */ diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c --- /usr/share/empty/fs/aufs/mvdown.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/mvdown.c 2015-12-10 17:59:16.839499823 +0100 ++++ linux/fs/aufs/mvdown.c 2016-01-13 20:11:11.669760262 +0100 @@ -0,0 +1,703 @@ +/* + * Copyright (C) 2011-2015 Junjiro R. Okajima @@ -22651,7 +22652,7 @@ diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c +} diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c --- /usr/share/empty/fs/aufs/opts.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/opts.c 2015-12-10 17:59:16.839499823 +0100 ++++ linux/fs/aufs/opts.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,1859 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -24514,7 +24515,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c +} diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h --- /usr/share/empty/fs/aufs/opts.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/opts.h 2015-12-10 17:59:16.839499823 +0100 ++++ linux/fs/aufs/opts.h 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -24729,7 +24730,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h +#endif /* __AUFS_OPTS_H__ */ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c --- /usr/share/empty/fs/aufs/plink.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/plink.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/plink.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,528 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -25261,7 +25262,7 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c +} diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c --- /usr/share/empty/fs/aufs/poll.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/poll.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/poll.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -25317,7 +25318,7 @@ diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c +} diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c --- /usr/share/empty/fs/aufs/posix_acl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/posix_acl.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/posix_acl.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2014-2015 Junjiro R. Okajima @@ -25420,7 +25421,7 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c +} diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c --- /usr/share/empty/fs/aufs/procfs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/procfs.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/procfs.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -25593,7 +25594,7 @@ diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c +} diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c --- /usr/share/empty/fs/aufs/rdu.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/rdu.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/rdu.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,388 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -25985,7 +25986,7 @@ diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c +#endif diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h --- /usr/share/empty/fs/aufs/rwsem.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/rwsem.h 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/rwsem.h 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,191 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -26180,7 +26181,7 @@ diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h +#endif /* __AUFS_RWSEM_H__ */ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c --- /usr/share/empty/fs/aufs/sbinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sbinfo.c 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/sbinfo.c 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,362 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -26546,7 +26547,7 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c +} diff -urN /usr/share/empty/fs/aufs/spl.h linux/fs/aufs/spl.h --- /usr/share/empty/fs/aufs/spl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/spl.h 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/spl.h 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -26661,8 +26662,8 @@ diff -urN /usr/share/empty/fs/aufs/spl.h linux/fs/aufs/spl.h +#endif /* __AUFS_SPL_H__ */ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c --- /usr/share/empty/fs/aufs/super.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/super.c 2015-12-10 18:46:31.223310574 +0100 -@@ -0,0 +1,1046 @@ ++++ linux/fs/aufs/super.c 2016-01-31 21:55:05.416431341 +0100 +@@ -0,0 +1,1038 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -27134,16 +27135,6 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c + +/* ---------------------------------------------------------------------- */ + -+void au_array_free(void *array) -+{ -+ if (array) { -+ if (!is_vmalloc_addr(array)) -+ kfree(array); -+ else -+ vfree(array); -+ } -+} -+ +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, void *arg) +{ + void *array; @@ -27219,7 +27210,7 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c + + for (ull = 0; ull < max; ull++) + iput(a[ull]); -+ au_array_free(a); ++ kvfree(a); +} + +/* ---------------------------------------------------------------------- */ @@ -27444,7 +27435,9 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c +{ + int err, do_dx; + unsigned int mntflags; -+ struct au_opts opts; ++ struct au_opts opts = { ++ .opt = NULL ++ }; + struct dentry *root; + struct inode *inode; + struct au_sbinfo *sbinfo; @@ -27462,7 +27455,6 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c + } + + err = -ENOMEM; -+ memset(&opts, 0, sizeof(opts)); + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; @@ -27563,7 +27555,9 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c + int silent __maybe_unused) +{ + int err; -+ struct au_opts opts; ++ struct au_opts opts = { ++ .opt = NULL ++ }; + struct au_sbinfo *sbinfo; + struct dentry *root; + struct inode *inode; @@ -27576,7 +27570,6 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c + } + + err = -ENOMEM; -+ memset(&opts, 0, sizeof(opts)); + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; @@ -27711,8 +27704,8 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c +}; diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h --- /usr/share/empty/fs/aufs/super.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/super.h 2015-12-10 18:46:31.223310574 +0100 -@@ -0,0 +1,638 @@ ++++ linux/fs/aufs/super.h 2016-01-31 21:55:05.416431341 +0100 +@@ -0,0 +1,637 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -27991,7 +27984,6 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h +struct inode *au_iget_locked(struct super_block *sb, ino_t ino); +typedef unsigned long long (*au_arraycb_t)(void *array, unsigned long long max, + void *arg); -+void au_array_free(void *array); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, void *arg); +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); +void au_iarray_free(struct inode **a, unsigned long long max); @@ -28353,7 +28345,7 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h +#endif /* __AUFS_SUPER_H__ */ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c --- /usr/share/empty/fs/aufs/sysaufs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysaufs.c 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/sysaufs.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28461,7 +28453,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c +} diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h --- /usr/share/empty/fs/aufs/sysaufs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysaufs.h 2015-09-24 10:47:58.254719746 +0200 ++++ linux/fs/aufs/sysaufs.h 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28566,7 +28558,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h +#endif /* __SYSAUFS_H__ */ diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c --- /usr/share/empty/fs/aufs/sysfs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysfs.c 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/sysfs.c 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,376 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28946,7 +28938,7 @@ diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c +} diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c --- /usr/share/empty/fs/aufs/sysrq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysrq.c 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/sysrq.c 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -29107,7 +29099,7 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c +} diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c --- /usr/share/empty/fs/aufs/vdir.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vdir.c 2015-11-11 17:21:46.922197217 +0100 ++++ linux/fs/aufs/vdir.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,888 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -29999,7 +29991,7 @@ diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c +} diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c --- /usr/share/empty/fs/aufs/vfsub.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vfsub.c 2015-09-24 10:47:58.258053165 +0200 ++++ linux/fs/aufs/vfsub.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,848 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -30851,7 +30843,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c +} diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h --- /usr/share/empty/fs/aufs/vfsub.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vfsub.h 2015-12-10 18:46:31.223310574 +0100 ++++ linux/fs/aufs/vfsub.h 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,286 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -31141,7 +31133,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h +#endif /* __AUFS_VFSUB_H__ */ diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c --- /usr/share/empty/fs/aufs/wbr_policy.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/wbr_policy.c 2015-09-24 10:47:58.258053165 +0200 ++++ linux/fs/aufs/wbr_policy.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,765 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -31910,8 +31902,8 @@ diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c +}; diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c --- /usr/share/empty/fs/aufs/whout.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/whout.c 2015-09-24 10:47:58.258053165 +0200 -@@ -0,0 +1,1063 @@ ++++ linux/fs/aufs/whout.c 2016-01-13 20:11:11.673093671 +0100 +@@ -0,0 +1,1060 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -32808,15 +32800,12 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c + + SiMustAnyLock(sb); + -+ whtmp = kmalloc(sizeof(*whtmp), gfp); ++ whtmp = kzalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + -+ whtmp->dir = NULL; -+ whtmp->br = NULL; -+ whtmp->wh_dentry = NULL; + /* no estimation for dir size */ + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) @@ -32977,7 +32966,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c +} diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h --- /usr/share/empty/fs/aufs/whout.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/whout.h 2015-09-24 10:47:58.258053165 +0200 ++++ linux/fs/aufs/whout.h 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -33066,7 +33055,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h +#endif /* __AUFS_WHOUT_H__ */ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c --- /usr/share/empty/fs/aufs/wkq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/wkq.c 2015-09-24 10:47:58.258053165 +0200 ++++ linux/fs/aufs/wkq.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -33283,7 +33272,7 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c +} diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h --- /usr/share/empty/fs/aufs/wkq.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/wkq.h 2015-09-24 10:47:58.258053165 +0200 ++++ linux/fs/aufs/wkq.h 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -33378,7 +33367,7 @@ diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h +#endif /* __AUFS_WKQ_H__ */ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c --- /usr/share/empty/fs/aufs/xattr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/xattr.c 2015-09-24 10:47:58.258053165 +0200 ++++ linux/fs/aufs/xattr.c 2016-01-13 20:11:11.673093671 +0100 @@ -0,0 +1,344 @@ +/* + * Copyright (C) 2014-2015 Junjiro R. Okajima @@ -33726,8 +33715,8 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c +#endif diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c --- /usr/share/empty/fs/aufs/xino.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/xino.c 2015-11-11 17:21:46.922197217 +0100 -@@ -0,0 +1,1296 @@ ++++ linux/fs/aufs/xino.c 2016-01-13 20:11:11.673093671 +0100 +@@ -0,0 +1,1318 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -33783,6 +33772,9 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c + +/* ---------------------------------------------------------------------- */ + ++static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, ++ size_t size, loff_t *pos); ++ +static ssize_t do_xino_fwrite(vfs_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ @@ -33792,14 +33784,26 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c + void *k; + const char __user *u; + } buf; ++ int i; ++ const int prevent_endless = 10; + ++ i = 0; + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { -+ /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); -+ } while (err == -EAGAIN || err == -EINTR); ++ if (err == -EINTR ++ && !au_wkq_test() ++ && fatal_signal_pending(current)) { ++ set_fs(oldfs); ++ err = xino_fwrite_wkq(func, file, kbuf, size, pos); ++ BUG_ON(err == -EINTR); ++ oldfs = get_fs(); ++ set_fs(KERNEL_DS); ++ } ++ } while (i++ < prevent_endless ++ && (err == -EAGAIN || err == -EINTR)); + set_fs(oldfs); + +#if 0 /* reserved for future use */ @@ -33825,35 +33829,42 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + ++static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, ++ size_t size, loff_t *pos) ++{ ++ ssize_t err; ++ int wkq_err; ++ struct do_xino_fwrite_args args = { ++ .errp = &err, ++ .func = func, ++ .file = file, ++ .buf = buf, ++ .size = size, ++ .pos = pos ++ }; ++ ++ /* ++ * it breaks RLIMIT_FSIZE and normal user's limit, ++ * users should care about quota and real 'filesystem full.' ++ */ ++ wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ ++ return err; ++} ++ +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + -+ /* todo: signal block and no wkq? */ + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); -+ } else { -+ /* -+ * it breaks RLIMIT_FSIZE and normal user's limit, -+ * users should care about quota and real 'filesystem full.' -+ */ -+ int wkq_err; -+ struct do_xino_fwrite_args args = { -+ .errp = &err, -+ .func = func, -+ .file = file, -+ .buf = buf, -+ .size = size, -+ .pos = pos -+ }; -+ -+ wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); -+ if (unlikely(wkq_err)) -+ err = wkq_err; -+ } ++ } else ++ err = xino_fwrite_wkq(func, file, buf, size, pos); + + return err; +} @@ -33988,7 +33999,7 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c + struct au_xino_lock_dir ldir; + + err = -ENOMEM; -+ st = kzalloc(sizeof(*st), GFP_NOFS); ++ st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) + goto out; + @@ -35026,7 +35037,7 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c +} diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/linux/aufs_type.h --- /usr/share/empty/include/uapi/linux/aufs_type.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/include/uapi/linux/aufs_type.h 2015-12-10 18:46:31.223310574 +0100 ++++ linux/include/uapi/linux/aufs_type.h 2016-01-31 21:55:05.416431341 +0100 @@ -0,0 +1,419 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -35069,7 +35080,7 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin + +#include <linux/limits.h> + -+#define AUFS_VERSION "4.1-20151116" ++#define AUFS_VERSION "4.1.13+-20160118" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') @@ -35447,13 +35458,13 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ -aufs4.1 loopback patch +aufs4.1.13+ loopback patch diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 0160952..866f8e2 100644 +index a5b343d..d697561 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -419,7 +419,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq) +@@ -417,7 +417,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq) } struct switch_request { @@ -35462,7 +35473,7 @@ index 0160952..866f8e2 100644 struct completion wait; }; -@@ -439,6 +439,7 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) +@@ -437,6 +437,7 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) mapping = file->f_mapping; mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); lo->lo_backing_file = file; @@ -35470,7 +35481,7 @@ index 0160952..866f8e2 100644 lo->lo_blocksize = S_ISBLK(mapping->host->i_mode) ? mapping->host->i_bdev->bd_block_size : PAGE_SIZE; lo->old_gfp_mask = mapping_gfp_mask(mapping); -@@ -450,11 +451,13 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) +@@ -448,11 +449,13 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) * First it needs to flush existing IO, it does this by sending a magic * BIO down the pipe. The completion of this BIO does the actual switch. */ @@ -35485,7 +35496,7 @@ index 0160952..866f8e2 100644 /* freeze queue and wait for completion of scheduled requests */ blk_mq_freeze_queue(lo->lo_queue); -@@ -473,7 +476,16 @@ static int loop_switch(struct loop_device *lo, struct file *file) +@@ -471,7 +474,16 @@ static int loop_switch(struct loop_device *lo, struct file *file) */ static int loop_flush(struct loop_device *lo) { @@ -35503,7 +35514,7 @@ index 0160952..866f8e2 100644 } /* -@@ -488,6 +500,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -486,6 +498,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, unsigned int arg) { struct file *file, *old_file; @@ -35511,7 +35522,7 @@ index 0160952..866f8e2 100644 struct inode *inode; int error; -@@ -504,9 +517,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -502,9 +515,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, file = fget(arg); if (!file) goto out; @@ -35528,7 +35539,7 @@ index 0160952..866f8e2 100644 error = -EINVAL; -@@ -518,17 +538,21 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -516,17 +536,21 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, goto out_putf; /* and ... switch */ @@ -35551,7 +35562,7 @@ index 0160952..866f8e2 100644 out: return error; } -@@ -689,7 +713,7 @@ static void loop_config_discard(struct loop_device *lo) +@@ -687,7 +711,7 @@ static void loop_config_discard(struct loop_device *lo) static int loop_set_fd(struct loop_device *lo, fmode_t mode, struct block_device *bdev, unsigned int arg) { @@ -35560,7 +35571,7 @@ index 0160952..866f8e2 100644 struct inode *inode; struct address_space *mapping; unsigned lo_blocksize; -@@ -704,6 +728,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -702,6 +726,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, file = fget(arg); if (!file) goto out; @@ -35573,7 +35584,7 @@ index 0160952..866f8e2 100644 error = -EBUSY; if (lo->lo_state != Lo_unbound) -@@ -752,6 +782,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -756,6 +786,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, lo->lo_device = bdev; lo->lo_flags = lo_flags; lo->lo_backing_file = file; @@ -35581,7 +35592,7 @@ index 0160952..866f8e2 100644 lo->transfer = NULL; lo->ioctl = NULL; lo->lo_sizelimit = 0; -@@ -783,6 +814,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -787,6 +818,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, out_putf: fput(file); @@ -35590,7 +35601,7 @@ index 0160952..866f8e2 100644 out: /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); -@@ -829,6 +862,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer, +@@ -833,6 +866,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer, static int loop_clr_fd(struct loop_device *lo) { struct file *filp = lo->lo_backing_file; @@ -35598,7 +35609,7 @@ index 0160952..866f8e2 100644 gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; -@@ -857,6 +891,7 @@ static int loop_clr_fd(struct loop_device *lo) +@@ -861,6 +895,7 @@ static int loop_clr_fd(struct loop_device *lo) spin_lock_irq(&lo->lo_lock); lo->lo_state = Lo_rundown; lo->lo_backing_file = NULL; @@ -35606,7 +35617,7 @@ index 0160952..866f8e2 100644 spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); -@@ -898,6 +933,8 @@ static int loop_clr_fd(struct loop_device *lo) +@@ -904,6 +939,8 @@ static int loop_clr_fd(struct loop_device *lo) * bd_mutex which is usually taken before lo_ctl_mutex. */ fput(filp); @@ -35616,7 +35627,7 @@ index 0160952..866f8e2 100644 } diff --git a/drivers/block/loop.h b/drivers/block/loop.h -index 301c27f..df84aa0 100644 +index 49564ed..83a7860 100644 --- a/drivers/block/loop.h +++ b/drivers/block/loop.h @@ -46,7 +46,7 @@ struct loop_device { @@ -35691,10 +35702,10 @@ index 6d9864d..3322557 100644 #endif /* __KERNEL__ */ diff --git a/fs/aufs/super.c b/fs/aufs/super.c -index 7efab49..ed357c7 100644 +index 7ded31a..3ab5291 100644 --- a/fs/aufs/super.c +++ b/fs/aufs/super.c -@@ -840,7 +840,10 @@ static const struct super_operations aufs_sop = { +@@ -831,7 +831,10 @@ static const struct super_operations aufs_sop = { .statfs = aufs_statfs, .put_super = aufs_put_super, .sync_fs = aufs_sync_fs, @@ -35707,10 +35718,10 @@ index 7efab49..ed357c7 100644 /* ---------------------------------------------------------------------- */ diff --git a/include/linux/fs.h b/include/linux/fs.h -index 3229f97..f63cc0d 100644 +index da37e51..10ee750 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1696,6 +1696,10 @@ struct super_operations { +@@ -1710,6 +1710,10 @@ struct super_operations { struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/cf32a4801ed39d7084639e832dfc1d419726aa55 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit