]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- up to 4.1.17; updated aufs patch from upstream auto/th/kernel-4.1-4.1.17-1 auto/th/kernel-4.1-nopae-4.1.17-1
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Sun, 31 Jan 2016 21:17:05 +0000 (22:17 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Sun, 31 Jan 2016 21:17:05 +0000 (22:17 +0100)
kernel-aufs4.patch
kernel.spec

index 9ebd5fcb32d343e69d4adcf6c40f09218caf5303..3eb634b020c4904399a9dce3a05ffd3753125707 100644 (file)
@@ -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.sandonis@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 *);
index ae0a6801998c71ba96fff29a2c4d32ed4db5bd0e..b9457fdcdeade26c80891462b2cb51cb3442cb22 100644 (file)
@@ -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
 
This page took 0.186579 seconds and 4 git commands to generate.