]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- updated
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 2 Mar 2017 14:38:31 +0000 (15:38 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 2 Mar 2017 14:38:31 +0000 (15:38 +0100)
kernel-aufs4.patch
kernel-multiarch.config

index 6cc5ab96ad70162e9140d739b319df943f4fb4d0..cc61c35d09310351811d102c52c21e622f19a8b0 100644 (file)
@@ -1,10 +1,10 @@
-aufs4.9 kbuild patch
+aufs4.x-rcN kbuild patch
 
 diff --git a/fs/Kconfig b/fs/Kconfig
-index 4bd03a2..620e01b 100644
+index 83eab52..31f16c4 100644
 --- a/fs/Kconfig
 +++ b/fs/Kconfig
-@@ -249,6 +249,7 @@ source "fs/pstore/Kconfig"
+@@ -248,6 +248,7 @@ source "fs/pstore/Kconfig"
  source "fs/sysv/Kconfig"
  source "fs/ufs/Kconfig"
  source "fs/exofs/Kconfig"
@@ -13,16 +13,16 @@ index 4bd03a2..620e01b 100644
  endif # MISC_FILESYSTEMS
  
 diff --git a/fs/Makefile b/fs/Makefile
-index ed2b632..aa6d14b 100644
+index 7bbaca9..a026491 100644
 --- a/fs/Makefile
 +++ b/fs/Makefile
-@@ -129,3 +129,4 @@ obj-y                              += exofs/ # Multiple modules
+@@ -128,3 +128,4 @@ obj-y                              += exofs/ # Multiple modules
  obj-$(CONFIG_CEPH_FS)         += ceph/
  obj-$(CONFIG_PSTORE)          += pstore/
  obj-$(CONFIG_EFIVAR_FS)               += efivarfs/
 +obj-$(CONFIG_AUFS_FS)           += aufs/
 diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
-index cd2be1c..78f3c68 100644
+index f330ba4..67d88cd 100644
 --- a/include/uapi/linux/Kbuild
 +++ b/include/uapi/linux/Kbuild
 @@ -59,6 +59,7 @@ header-y += atmsvc.h
@@ -33,13 +33,13 @@ index cd2be1c..78f3c68 100644
  header-y += auto_fs4.h
  header-y += auto_fs.h
  header-y += auxvec.h
-aufs4.9 base patch
+aufs4.x-rcN base patch
 
 diff --git a/MAINTAINERS b/MAINTAINERS
-index 63cefa6..d78b954 100644
+index 107c10e..dd8df20 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -2293,6 +2293,19 @@ F:      include/linux/audit.h
+@@ -2308,6 +2308,19 @@ F:      include/linux/audit.h
  F:    include/uapi/linux/audit.h
  F:    kernel/audit*
  
@@ -60,7 +60,7 @@ index 63cefa6..d78b954 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 fa1b7a9..6ee9235 100644
+index f347285..b63f68b 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 @@ -701,6 +701,24 @@ static inline int is_loop_device(struct file *file)
@@ -89,7 +89,7 @@ index fa1b7a9..6ee9235 100644
  
  static ssize_t loop_attr_show(struct device *dev, char *page,
 diff --git a/fs/dcache.c b/fs/dcache.c
-index 5c7cc95..df0268c 100644
+index 95d71ed..8ca5f09 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
 @@ -1164,7 +1164,7 @@ enum d_walk_ret {
@@ -102,7 +102,7 @@ index 5c7cc95..df0268c 100644
                   void (*finish)(void *))
  {
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 350a2c8..6f42279 100644
+index e1c54f2..9f07008 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
 @@ -29,7 +29,7 @@
@@ -127,7 +127,7 @@ diff --git a/fs/inode.c b/fs/inode.c
 index 88110fd..9a9ba3a 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
-@@ -1642,7 +1642,7 @@ int generic_update_time(struct inode *inode, struct timespec *time, int flags)
+@@ -1642,7 +1642,7 @@ EXPORT_SYMBOL(generic_update_time);
   * This does the actual work of updating an inodes time or version.  Must have
   * had called mnt_want_write() before calling this.
   */
@@ -137,7 +137,7 @@ index 88110fd..9a9ba3a 100644
        int (*update_time)(struct inode *, struct timespec *, int);
  
 diff --git a/fs/read_write.c b/fs/read_write.c
-index 190e0d36..4052813 100644
+index 5816d4c..670b365 100644
 --- a/fs/read_write.c
 +++ b/fs/read_write.c
 @@ -515,6 +515,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
@@ -170,10 +170,10 @@ index 190e0d36..4052813 100644
  {
        mm_segment_t old_fs;
 diff --git a/fs/splice.c b/fs/splice.c
-index 5a7750b..28160a7 100644
+index 873d831..7899532 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -855,8 +855,8 @@ ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, struct file *out,
+@@ -856,8 +856,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
  /*
   * Attempt to initiate a splice from pipe to file.
   */
@@ -184,7 +184,7 @@ index 5a7750b..28160a7 100644
  {
        ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
                                loff_t *, size_t, unsigned int);
-@@ -872,9 +872,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -873,9 +873,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
  /*
   * Attempt to initiate a splice from a file to a pipe.
   */
@@ -197,23 +197,36 @@ index 5a7750b..28160a7 100644
  {
        ssize_t (*splice_read)(struct file *, loff_t *,
                               struct pipe_inode_info *, size_t, unsigned int);
+diff --git a/fs/sync.c b/fs/sync.c
+index 2a54c1f..7a5fa3f 100644
+--- a/fs/sync.c
++++ b/fs/sync.c
+@@ -27,7 +27,7 @@
+  * wait == 1 case since in that case write_inode() functions do
+  * sync_dirty_buffer() and thus effectively write one block at a time.
+  */
+-static int __sync_filesystem(struct super_block *sb, int wait)
++int __sync_filesystem(struct super_block *sb, int wait)
+ {
+       if (wait)
+               sync_inodes_sb(sb);
 diff --git a/include/linux/file.h b/include/linux/file.h
-index 7444f5f..bdac0be 100644
+index 61eb82c..e700888 100644
 --- a/include/linux/file.h
 +++ b/include/linux/file.h
-@@ -19,6 +19,7 @@
+@@ -19,6 +19,7 @@ struct dentry;
  struct path;
- extern struct file *alloc_file(struct path *, fmode_t mode,
+ extern struct file *alloc_file(const struct path *, fmode_t mode,
        const struct file_operations *fop);
 +extern struct file *get_empty_filp(void);
  
  static inline void fput_light(struct file *file, int fput_needed)
  {
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index dc0478c..27c05e7 100644
+index 2ba0743..d1c583b 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1291,6 +1291,7 @@ struct fasync_struct {
+@@ -1240,6 +1240,7 @@ extern void fasync_free(struct fasync_struct *);
  /* can be called from interrupts */
  extern void kill_fasync(struct fasync_struct **, int, int);
  
@@ -221,7 +234,7 @@ index dc0478c..27c05e7 100644
  extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
  extern void f_setown(struct file *filp, unsigned long arg, int force);
  extern void f_delown(struct file *filp);
-@@ -1715,6 +1716,7 @@ struct file_operations {
+@@ -1664,6 +1665,7 @@ struct file_operations {
        ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
        unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
        int (*check_flags)(int);
@@ -229,7 +242,7 @@ index dc0478c..27c05e7 100644
        int (*flock) (struct file *, int, struct file_lock *);
        ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
        ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
-@@ -1768,6 +1770,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
+@@ -1717,6 +1719,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
                              struct iovec *fast_pointer,
                              struct iovec **ret_pointer);
  
@@ -242,7 +255,7 @@ index dc0478c..27c05e7 100644
  extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
  extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *);
  extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
-@@ -2140,6 +2148,7 @@ extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
+@@ -2108,6 +2116,7 @@ extern int current_umask(void);
  extern void ihold(struct inode * inode);
  extern void iput(struct inode *);
  extern int generic_update_time(struct inode *, struct timespec *, int);
@@ -250,11 +263,19 @@ index dc0478c..27c05e7 100644
  
  /* /sys/fs */
  extern struct kobject *fs_kobj;
+@@ -2387,6 +2396,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
+       return false;
+ }
+ #endif
++extern int __sync_filesystem(struct super_block *, int);
+ extern int sync_filesystem(struct super_block *);
+ extern const struct file_operations def_blk_fops;
+ extern const struct file_operations def_chr_fops;
 diff --git a/include/linux/splice.h b/include/linux/splice.h
 index 00a2116..1f0a4a2 100644
 --- a/include/linux/splice.h
 +++ b/include/linux/splice.h
-@@ -86,4 +86,10 @@ extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *,
+@@ -86,4 +86,10 @@ extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
  
  extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
  extern const struct pipe_buf_operations default_pipe_buf_ops;
@@ -265,13 +286,13 @@ index 00a2116..1f0a4a2 100644
 +                       struct pipe_inode_info *pipe, size_t len,
 +                       unsigned int flags);
  #endif
-aufs4.9 mmap patch
+aufs4.x-rcN mmap patch
 
 diff --git a/fs/proc/base.c b/fs/proc/base.c
-index ca651ac..0e8551a 100644
+index 87c9a9a..a0196f0 100644
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
-@@ -1953,7 +1953,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
+@@ -1958,7 +1958,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
        down_read(&mm->mmap_sem);
        vma = find_exact_vma(mm, vm_start, vm_end);
        if (vma && vma->vm_file) {
@@ -281,7 +302,7 @@ index ca651ac..0e8551a 100644
                rc = 0;
        }
 diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
-index f8595e8..cb8eda0 100644
+index 7563437..7c0dc0f 100644
 --- a/fs/proc/nommu.c
 +++ b/fs/proc/nommu.c
 @@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
@@ -297,10 +318,10 @@ index f8595e8..cb8eda0 100644
                ino = inode->i_ino;
        }
 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index 35b92d8..5b981db 100644
+index 8f96a49..0d10404 100644
 --- a/fs/proc/task_mmu.c
 +++ b/fs/proc/task_mmu.c
-@@ -291,7 +291,10 @@ static int is_stack(struct proc_maps_private *priv,
+@@ -291,7 +291,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
        const char *name = NULL;
  
        if (file) {
@@ -312,7 +333,7 @@ index 35b92d8..5b981db 100644
                dev = inode->i_sb->s_dev;
                ino = inode->i_ino;
                pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1627,7 +1630,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
+@@ -1628,7 +1631,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
        struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
        struct vm_area_struct *vma = v;
        struct numa_maps *md = &numa_priv->md;
@@ -338,10 +359,10 @@ index 3717562..6a328f1 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 a92c8d7..1d83a2a 100644
+index b84615b..3978a35 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1266,6 +1266,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
+@@ -1257,6 +1257,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
  }
  #endif
  
@@ -371,7 +392,7 @@ index a92c8d7..1d83a2a 100644
                unsigned int gup_flags);
  extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 4a8aced..badd16b 100644
+index 808751d..66fc765 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
 @@ -275,6 +275,7 @@ struct vm_region {
@@ -391,10 +412,10 @@ index 4a8aced..badd16b 100644
  
  #ifndef CONFIG_MMU
 diff --git a/kernel/fork.c b/kernel/fork.c
-index 997ac1d..4d0131b 100644
+index 11c5c8a..48e7ef7 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
-@@ -624,7 +624,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
+@@ -626,7 +626,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
                        struct inode *inode = file_inode(file);
                        struct address_space *mapping = file->f_mapping;
  
@@ -417,10 +438,10 @@ index 295bd7a..14fa1c8 100644
  obj-y += init-mm.o
  
 diff --git a/mm/filemap.c b/mm/filemap.c
-index 50b52fe..9e607f9 100644
+index 3f9afde..bb050b0 100644
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
-@@ -2304,7 +2304,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -2397,7 +2397,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
        int ret = VM_FAULT_LOCKED;
  
        sb_start_pagefault(inode->i_sb);
@@ -429,21 +450,8 @@ index 50b52fe..9e607f9 100644
        lock_page(page);
        if (page->mapping != inode->i_mapping) {
                unlock_page(page);
-diff --git a/mm/memory.c b/mm/memory.c
-index e18c57b..7be4a39 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -2117,7 +2117,7 @@ static inline int wp_page_reuse(struct fault_env *fe, pte_t orig_pte,
-       }
-       if (!page_mkwrite)
--              file_update_time(vma->vm_file);
-+              vma_file_update_time(vma);
- }
- /*
 diff --git a/mm/mmap.c b/mm/mmap.c
-index 1af87c1..95b0ff4 100644
+index dc4291d..4b3a2aa 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -170,7 +170,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
@@ -492,7 +500,7 @@ index 1af87c1..95b0ff4 100644
        unlink_anon_vmas(new);
   out_free_mpol:
        mpol_put(vma_policy(new));
-@@ -2703,7 +2703,7 @@ int vm_munmap(unsigned long start, size_t len)
+@@ -2703,7 +2703,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
        struct vm_area_struct *vma;
        unsigned long populate = 0;
        unsigned long ret = -EINVAL;
@@ -501,7 +509,7 @@ index 1af87c1..95b0ff4 100644
  
        pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
                     current->comm, current->pid);
-@@ -2778,10 +2778,27 @@ int vm_munmap(unsigned long start, size_t len)
+@@ -2778,10 +2778,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
                }
        }
  
@@ -540,7 +548,7 @@ index 1af87c1..95b0ff4 100644
                        new_vma->vm_ops->open(new_vma);
                vma_link(mm, new_vma, prev, rb_link, rb_parent);
 diff --git a/mm/nommu.c b/mm/nommu.c
-index 8b8faaf..5d26ed94 100644
+index 24f9f5f..ac0d37a 100644
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
 @@ -636,7 +636,7 @@ static void __put_nommu_region(struct vm_region *region)
@@ -675,10 +683,10 @@ index 0000000..b323b8a
 +              fput(pr);
 +}
 +#endif /* !CONFIG_MMU */
-aufs4.9 standalone patch
+aufs4.x-rcN standalone patch
 
 diff --git a/fs/dcache.c b/fs/dcache.c
-index df0268c..755fea1 100644
+index 8ca5f09..b1ff5be 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
 @@ -1272,6 +1272,7 @@ void d_walk(struct dentry *parent, void *data,
@@ -687,9 +695,9 @@ index df0268c..755fea1 100644
  }
 +EXPORT_SYMBOL_GPL(d_walk);
  
- /*
-  * Search for at least 1 mount point in the dentry's subdirs.
-@@ -2855,6 +2856,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
+ struct check_mount {
+       struct vfsmount *mnt;
+@@ -2864,6 +2865,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
  
        write_sequnlock(&rename_lock);
  }
@@ -698,7 +706,7 @@ index df0268c..755fea1 100644
  /**
   * d_ancestor - search for an ancestor
 diff --git a/fs/exec.c b/fs/exec.c
-index 4e497b9..e27d323 100644
+index e579466..2566b16 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
 @@ -104,6 +104,7 @@ bool path_noexec(const struct path *path)
@@ -710,7 +718,7 @@ index 4e497b9..e27d323 100644
  #ifdef CONFIG_USELIB
  /*
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 6f42279..04fd33c 100644
+index 9f07008..d60b682 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
 @@ -82,6 +82,7 @@ int setfl(int fd, struct file * filp, unsigned long arg)
@@ -722,7 +730,7 @@ index 6f42279..04fd33c 100644
  static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
                       int force)
 diff --git a/fs/file_table.c b/fs/file_table.c
-index ad17e05..ae9f267 100644
+index 6d982b5..9a3c6c8 100644
 --- a/fs/file_table.c
 +++ b/fs/file_table.c
 @@ -147,6 +147,7 @@ struct file *get_empty_filp(void)
@@ -770,10 +778,10 @@ index 9a9ba3a..a3a18d8 100644
  /**
   *    touch_atime     -       update the access time
 diff --git a/fs/namespace.c b/fs/namespace.c
-index e6c234b..8d13f7b 100644
+index 487ba30..642069d 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
-@@ -466,6 +466,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
+@@ -462,6 +462,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
        mnt_dec_writers(real_mount(mnt));
        preempt_enable();
  }
@@ -781,7 +789,7 @@ index e6c234b..8d13f7b 100644
  
  /**
   * mnt_drop_write - give up write access to a mount
-@@ -1823,6 +1824,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
+@@ -1872,6 +1873,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
        }
        return 0;
  }
@@ -826,7 +834,7 @@ index fbe3cbe..bdfc61e 100644
  int fsnotify_fasync(int fd, struct file *file, int on)
  {
 diff --git a/fs/notify/mark.c b/fs/notify/mark.c
-index d3fea0b..5fc06ad 100644
+index 6043306..fdb50e4 100644
 --- a/fs/notify/mark.c
 +++ b/fs/notify/mark.c
 @@ -113,6 +113,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
@@ -853,7 +861,7 @@ index d3fea0b..5fc06ad 100644
  
  int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
                      struct inode *inode, struct vfsmount *mnt, int allow_dups)
-@@ -533,6 +536,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
+@@ -521,6 +524,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
        atomic_set(&mark->refcnt, 1);
        mark->free_mark = free_mark;
  }
@@ -862,7 +870,7 @@ index d3fea0b..5fc06ad 100644
  /*
   * Destroy all marks in destroy_list, waits for SRCU period to finish before
 diff --git a/fs/open.c b/fs/open.c
-index d3ed817..20d2494 100644
+index 9921f70..80d94c0 100644
 --- a/fs/open.c
 +++ b/fs/open.c
 @@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
@@ -882,7 +890,7 @@ index d3ed817..20d2494 100644
  static int do_dentry_open(struct file *f,
                          struct inode *inode,
 diff --git a/fs/read_write.c b/fs/read_write.c
-index 4052813..7dfd732 100644
+index 670b365..f9f8bb1 100644
 --- a/fs/read_write.c
 +++ b/fs/read_write.c
 @@ -525,6 +525,7 @@ vfs_readf_t vfs_readf(struct file *file)
@@ -902,10 +910,10 @@ index 4052813..7dfd732 100644
  ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
  {
 diff --git a/fs/splice.c b/fs/splice.c
-index 28160a7..98c1902 100644
+index 7899532..c0df111 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -868,6 +868,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -869,6 +869,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
  
        return splice_write(pipe, out, ppos, len, flags);
  }
@@ -913,7 +921,7 @@ index 28160a7..98c1902 100644
  
  /*
   * Attempt to initiate a splice from a file to a pipe.
-@@ -897,6 +898,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+@@ -898,6 +899,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
  
        return splice_read(in, ppos, pipe, len, flags);
  }
@@ -921,11 +929,23 @@ index 28160a7..98c1902 100644
  
  /**
   * splice_direct_to_actor - splices data directly between two non-pipes
+diff --git a/fs/sync.c b/fs/sync.c
+index 7a5fa3f..c9b9d46 100644
+--- a/fs/sync.c
++++ b/fs/sync.c
+@@ -38,6 +38,7 @@ int __sync_filesystem(struct super_block *sb, int wait)
+               sb->s_op->sync_fs(sb, wait);
+       return __sync_blockdev(sb->s_bdev, wait);
+ }
++EXPORT_SYMBOL_GPL(__sync_filesystem);
+ /*
+  * Write out and wait upon all dirty data associated with this
 diff --git a/fs/xattr.c b/fs/xattr.c
-index 2d13b4e..41c2bcd 100644
+index 7e3317c..88910fe 100644
 --- a/fs/xattr.c
 +++ b/fs/xattr.c
-@@ -296,6 +296,7 @@ int __vfs_setxattr_noperm(struct dentry *dentry, const char *name,
+@@ -296,6 +296,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
        *xattr_value = value;
        return error;
  }
@@ -1156,10 +1176,10 @@ 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    2016-10-09 16:55:36.479367956 +0200
++++ linux/Documentation/filesystems/aufs/design/01intro.txt    2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,170 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -1330,10 +1350,10 @@ 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   2016-10-09 16:55:36.479367956 +0200
++++ linux/Documentation/filesystems/aufs/design/02struct.txt   2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,258 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -1592,10 +1612,10 @@ 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      2016-10-09 16:55:36.479367956 +0200
++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt      2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,85 @@
 +
-+# Copyright (C) 2015-2016 Junjiro R. Okajima
++# Copyright (C) 2015-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -1681,10 +1701,10 @@ 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   2016-10-09 16:55:36.479367956 +0200
++++ linux/Documentation/filesystems/aufs/design/03lookup.txt   2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,113 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -1798,10 +1818,10 @@ 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   2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/04branch.txt   2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,74 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -1876,10 +1896,10 @@ 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       2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt       2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,64 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -1944,10 +1964,10 @@ 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     2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt     2017-03-02 14:24:13.850255360 +0100
 @@ -0,0 +1,120 @@
 +
-+# Copyright (C) 2011-2016 Junjiro R. Okajima
++# Copyright (C) 2011-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -2068,10 +2088,10 @@ 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     2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/06mmap.txt     2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,72 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -2144,10 +2164,10 @@ 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    2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/06xattr.txt    2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,96 @@
 +
-+# Copyright (C) 2014-2016 Junjiro R. Okajima
++# Copyright (C) 2014-2017 Junjiro R. Okajima
 +#
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -2244,10 +2264,10 @@ 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   2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/07export.txt   2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,58 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -2306,10 +2326,10 @@ 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     2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/08shwh.txt     2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,52 @@
 +
-+# Copyright (C) 2005-2016 Junjiro R. Okajima
++# Copyright (C) 2005-2017 Junjiro R. Okajima
 +# 
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -2362,10 +2382,10 @@ 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    2016-10-09 16:55:36.482701377 +0200
++++ linux/Documentation/filesystems/aufs/design/10dynop.txt    2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,47 @@
 +
-+# Copyright (C) 2010-2016 Junjiro R. Okajima
++# Copyright (C) 2010-2017 Junjiro R. Okajima
 +#
 +# This program is free software; you can redistribute it and/or modify
 +# it under the terms of the GNU General Public License as published by
@@ -2810,10 +2830,10 @@ 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       2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/aufs.h       2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,59 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -2873,10 +2893,10 @@ 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     2016-10-09 16:55:38.886097714 +0200
++++ linux/fs/aufs/branch.c     2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,1412 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -4289,10 +4309,10 @@ 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     2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/branch.h     2017-03-02 14:24:13.853588785 +0100
 @@ -0,0 +1,309 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -4644,10 +4664,10 @@ 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       2016-12-17 12:28:17.595211562 +0100
-@@ -0,0 +1,1394 @@
++++ linux/fs/aufs/cpup.c       2017-03-02 14:24:13.856922210 +0100
+@@ -0,0 +1,1388 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -5152,12 +5172,6 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +              char *k;
 +              char __user *u;
 +      } sym;
-+      struct inode *h_inode = d_inode(h_src);
-+      const struct inode_operations *h_iop = h_inode->i_op;
-+
-+      err = -ENOSYS;
-+      if (unlikely(!h_iop->readlink))
-+              goto out;
 +
 +      err = -ENOMEM;
 +      sym.k = (void *)__get_free_page(GFP_NOFS);
@@ -5167,7 +5181,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +      /* unnecessary to support mmap_sem since symlink is not mmap-able */
 +      old_fs = get_fs();
 +      set_fs(KERNEL_DS);
-+      symlen = h_iop->readlink(h_src, sym.u, PATH_MAX);
++      symlen = vfs_readlink(h_src, sym.u, PATH_MAX);
 +      err = symlen;
 +      set_fs(old_fs);
 +
@@ -6042,10 +6056,10 @@ 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       2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/cpup.h       2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,94 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -6140,10 +6154,10 @@ 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    2016-10-09 16:55:38.886097714 +0200
++++ linux/fs/aufs/dbgaufs.c    2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,438 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -6582,10 +6596,10 @@ 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    2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/dbgaufs.h    2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,48 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -6634,10 +6648,10 @@ 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      2016-10-09 16:55:38.886097714 +0200
++++ linux/fs/aufs/dcsub.c      2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,225 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -6863,10 +6877,10 @@ 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      2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/dcsub.h      2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,136 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -7003,10 +7017,10 @@ 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      2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/debug.c      2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,440 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -7447,10 +7461,10 @@ 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      2016-10-09 16:55:36.486034798 +0200
++++ linux/fs/aufs/debug.h      2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,225 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -7676,10 +7690,10 @@ 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     2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/dentry.c     2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,1130 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -8810,10 +8824,10 @@ 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     2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/dentry.h     2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,255 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -9069,10 +9083,10 @@ 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      2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/dinfo.c      2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,553 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -9626,10 +9640,10 @@ 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        2016-10-09 16:55:36.489368218 +0200
++++ linux/fs/aufs/dir.c        2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,762 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -10392,10 +10406,10 @@ 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        2016-10-09 16:55:36.489368218 +0200
++++ linux/fs/aufs/dir.h        2017-03-02 14:24:13.856922210 +0100
 @@ -0,0 +1,137 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -10533,10 +10547,10 @@ 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      2016-10-09 16:55:36.489368218 +0200
++++ linux/fs/aufs/dynop.c      2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,371 @@
 +/*
-+ * Copyright (C) 2010-2016 Junjiro R. Okajima
++ * Copyright (C) 2010-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -10908,10 +10922,10 @@ 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      2016-10-09 16:55:36.489368218 +0200
++++ linux/fs/aufs/dynop.h      2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,74 @@
 +/*
-+ * Copyright (C) 2010-2016 Junjiro R. Okajima
++ * Copyright (C) 2010-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -10986,10 +11000,10 @@ 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     2016-12-17 12:28:17.595211562 +0100
++++ linux/fs/aufs/export.c     2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,836 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -11826,10 +11840,10 @@ 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       2016-10-09 16:55:36.489368218 +0200
++++ linux/fs/aufs/fhsm.c       2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,426 @@
 +/*
-+ * Copyright (C) 2011-2016 Junjiro R. Okajima
++ * Copyright (C) 2011-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -12256,10 +12270,10 @@ 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       2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/file.c       2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,857 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -13117,10 +13131,10 @@ 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       2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/file.h       2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,294 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -13415,10 +13429,10 @@ 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      2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/finfo.c      2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,151 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -13570,10 +13584,10 @@ 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       2016-12-17 12:28:17.595211562 +0100
++++ linux/fs/aufs/f_op.c       2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,723 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -14297,10 +14311,10 @@ 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     2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/fstype.h     2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,400 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -14701,10 +14715,10 @@ 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  2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/hfsnotify.c  2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,287 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -14868,7 +14882,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c
 +                              struct inode *inode,
 +                              struct fsnotify_mark *inode_mark,
 +                              struct fsnotify_mark *vfsmount_mark,
-+                              u32 mask, void *data, int data_type,
++                              u32 mask, const void *data, int data_type,
 +                              const unsigned char *file_name, u32 cookie)
 +{
 +      int err;
@@ -14992,10 +15006,10 @@ 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    2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/hfsplus.c    2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,56 @@
 +/*
-+ * Copyright (C) 2010-2016 Junjiro R. Okajima
++ * Copyright (C) 2010-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -15052,10 +15066,10 @@ 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    2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/hnotify.c    2017-03-02 14:24:13.860255635 +0100
 @@ -0,0 +1,723 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -15779,10 +15793,10 @@ 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      2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/iinfo.c      2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,285 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -16068,10 +16082,10 @@ 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      2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/inode.c      2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,519 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -16591,10 +16605,10 @@ 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      2016-12-17 12:28:17.595211562 +0100
-@@ -0,0 +1,691 @@
++++ linux/fs/aufs/inode.h      2017-03-02 14:24:13.863589061 +0100
+@@ -0,0 +1,692 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -16805,7 +16819,8 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
 +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia,
 +                   struct au_icpup_args *a);
 +
-+int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path);
++int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path,
++                    int locked);
 +
 +/* i_op_add.c */
 +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex,
@@ -17286,10 +17301,10 @@ 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      2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/ioctl.c      2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,219 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -17509,10 +17524,10 @@ 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   2016-12-17 12:28:17.595211562 +0100
++++ linux/fs/aufs/i_op_add.c   2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,928 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -18441,10 +18456,10 @@ 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       2016-12-17 12:28:17.595211562 +0100
-@@ -0,0 +1,1444 @@
++++ linux/fs/aufs/i_op.c       2017-03-02 14:24:13.860255635 +0100
+@@ -0,0 +1,1448 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -19577,7 +19592,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 + * returns zero or negative (an error).
 + * @dentry will be read-locked in success.
 + */
-+int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path)
++int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path,
++                    int locked)
 +{
 +      int err;
 +      unsigned int mnt_flags, sigen;
@@ -19594,6 +19610,9 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +      mnt_flags = au_mntflags(sb);
 +      udba_none = !!au_opt_test(mnt_flags, UDBA_NONE);
 +
++      if (unlikely(locked))
++              goto body; /* skip locking dinfo */
++
 +      /* support fstat(2) */
 +      if (!d_unlinked(dentry) && !udba_none) {
 +              sigen = au_sigen(sb);
@@ -19621,6 +19640,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +      } else
 +              di_read_lock_child(dentry, AuLock_IR);
 +
++body:
 +      inode = d_inode(dentry);
 +      bindex = au_ibtop(inode);
 +      h_path->mnt = au_sbr_mnt(sb, bindex);
@@ -19659,7 +19679,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +      err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
 +      if (unlikely(err))
 +              goto out;
-+      err = au_h_path_getattr(dentry, /*force*/0, &h_path);
++      err = au_h_path_getattr(dentry, /*force*/0, &h_path, /*locked*/0);
 +      if (unlikely(err))
 +              goto out_si;
 +      if (unlikely(!h_path.dentry))
@@ -19837,7 +19857,6 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +              .listxattr      = aufs_listxattr,
 +#endif
 +
-+              .readlink       = generic_readlink,
 +              .get_link       = aufs_get_link,
 +
 +              /* .update_time = aufs_update_time */
@@ -19889,10 +19908,10 @@ 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   2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/i_op_del.c   2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,511 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -20404,10 +20423,10 @@ 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   2016-12-17 12:28:17.595211562 +0100
++++ linux/fs/aufs/i_op_ren.c   2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,1165 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -21762,10 +21781,10 @@ 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       2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/loop.c       2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,147 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -21913,10 +21932,10 @@ 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       2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/loop.h       2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,52 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -22051,10 +22070,10 @@ 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     2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/module.c     2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,333 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -22388,10 +22407,10 @@ 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     2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/module.h     2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,156 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -22548,10 +22567,10 @@ 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     2016-10-09 16:55:36.492701639 +0200
++++ linux/fs/aufs/mvdown.c     2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,704 @@
 +/*
-+ * Copyright (C) 2011-2016 Junjiro R. Okajima
++ * Copyright (C) 2011-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -23256,10 +23275,10 @@ 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       2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,1870 @@
++++ linux/fs/aufs/opts.c       2017-03-02 14:24:13.863589061 +0100
+@@ -0,0 +1,1848 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -23698,28 +23717,6 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c
 +      {-1, NULL}
 +};
 +
-+/*
-+ * cf. linux/lib/parser.c and cmdline.c
-+ * gave up calling memparse() since it uses simple_strtoull() instead of
-+ * kstrto...().
-+ */
-+static int noinline_for_stack
-+au_match_ull(substring_t *s, unsigned long long *result)
-+{
-+      int err;
-+      unsigned int len;
-+      char a[32];
-+
-+      err = -ERANGE;
-+      len = s->to - s->from;
-+      if (len + 1 <= sizeof(a)) {
-+              memcpy(a, s->from, len);
-+              a[len] = '\0';
-+              err = kstrtoull(a, 0, result);
-+      }
-+      return err;
-+}
-+
 +static int au_wbr_mfs_wmark(substring_t *arg, char *str,
 +                          struct au_opt_wbr_create *create)
 +{
@@ -23727,7 +23724,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c
 +      unsigned long long ull;
 +
 +      err = 0;
-+      if (!au_match_ull(arg, &ull))
++      if (!match_u64(arg, &ull))
 +              create->mfsrr_watermark = ull;
 +      else {
 +              pr_err("bad integer in %s\n", str);
@@ -25130,10 +25127,10 @@ 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       2016-12-17 12:28:17.598545045 +0100
++++ linux/fs/aufs/opts.h       2017-03-02 14:24:13.863589061 +0100
 @@ -0,0 +1,213 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -25347,10 +25344,10 @@ 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      2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/plink.c      2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,514 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -25865,10 +25862,10 @@ 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       2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/poll.c       2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,52 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -25921,10 +25918,10 @@ 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  2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,98 @@
++++ linux/fs/aufs/posix_acl.c  2017-03-02 14:24:13.866922487 +0100
+@@ -0,0 +1,102 @@
 +/*
-+ * Copyright (C) 2014-2016 Junjiro R. Okajima
++ * Copyright (C) 2014-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -25974,6 +25971,8 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
 +
 +      /* always topmost only */
 +      acl = get_acl(h_inode, type);
++      if (!IS_ERR_OR_NULL(acl))
++              set_cached_acl(inode, type, acl);
 +
 +out:
 +      ii_read_unlock(inode);
@@ -26015,18 +26014,20 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
 +      ssz = au_sxattr(dentry, inode, &arg);
 +      dput(dentry);
 +      err = ssz;
-+      if (ssz >= 0)
++      if (ssz >= 0) {
 +              err = 0;
++              set_cached_acl(inode, type, acl);
++      }
 +
 +out:
 +      return err;
 +}
 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     2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/procfs.c     2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,169 @@
 +/*
-+ * Copyright (C) 2010-2016 Junjiro R. Okajima
++ * Copyright (C) 2010-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -26196,10 +26197,10 @@ 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        2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/rdu.c        2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,381 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -26581,10 +26582,10 @@ 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      2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/rwsem.h      2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,198 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -26783,10 +26784,10 @@ 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     2016-10-09 16:55:38.889431135 +0200
-@@ -0,0 +1,355 @@
++++ linux/fs/aufs/sbinfo.c     2017-03-02 14:24:13.866922487 +0100
+@@ -0,0 +1,304 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -26832,10 +26833,6 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
 +      au_rw_write_unlock(&sbinfo->si_rwsem);
 +
 +      au_delayed_kfree(sbinfo->si_branch);
-+      for (i = 0; i < AU_NPIDMAP; i++)
-+              if (sbinfo->au_si_pid.pid_bitmap[i])
-+                      au_delayed_kfree(sbinfo->au_si_pid.pid_bitmap[i]);
-+      mutex_destroy(&sbinfo->au_si_pid.pid_mtx);
 +      mutex_destroy(&sbinfo->si_xib_mtx);
 +      AuRwDestroy(&sbinfo->si_rwsem);
 +
@@ -26863,7 +26860,6 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
 +
 +      au_nwt_init(&sbinfo->si_nowait);
 +      au_rw_init_wlock(&sbinfo->si_rwsem);
-+      mutex_init(&sbinfo->au_si_pid.pid_mtx);
 +
 +      percpu_counter_init(&sbinfo->si_ninodes, 0, GFP_NOFS);
 +      percpu_counter_init(&sbinfo->si_nfiles, 0, GFP_NOFS);
@@ -27094,58 +27090,12 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
 +      di_write_unlock2(d1, d2);
 +      si_read_unlock(d1->d_sb);
 +}
-+
-+/* ---------------------------------------------------------------------- */
-+
-+static void si_pid_alloc(struct au_si_pid *au_si_pid, int idx)
-+{
-+      unsigned long *p;
-+
-+      BUILD_BUG_ON(sizeof(unsigned long) !=
-+                   sizeof(*au_si_pid->pid_bitmap));
-+
-+      mutex_lock(&au_si_pid->pid_mtx);
-+      p = au_si_pid->pid_bitmap[idx];
-+      while (!p) {
-+              /*
-+               * bad approach.
-+               * but keeping 'si_pid_set()' void is more important.
-+               */
-+              p = kcalloc(BITS_TO_LONGS(AU_PIDSTEP),
-+                          sizeof(*au_si_pid->pid_bitmap),
-+                          GFP_NOFS);
-+              if (p)
-+                      break;
-+              cond_resched();
-+      }
-+      au_si_pid->pid_bitmap[idx] = p;
-+      mutex_unlock(&au_si_pid->pid_mtx);
-+}
-+
-+void si_pid_set(struct super_block *sb)
-+{
-+      pid_t bit;
-+      int idx;
-+      unsigned long *bitmap;
-+      struct au_si_pid *au_si_pid;
-+
-+      si_pid_idx_bit(&idx, &bit);
-+      au_si_pid = &au_sbi(sb)->au_si_pid;
-+      bitmap = au_si_pid->pid_bitmap[idx];
-+      if (!bitmap) {
-+              si_pid_alloc(au_si_pid, idx);
-+              bitmap = au_si_pid->pid_bitmap[idx];
-+      }
-+      AuDebugOn(test_bit(bit, bitmap));
-+      set_bit(bit, bitmap);
-+      /* smp_mb(); */
-+}
 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        2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/spl.h        2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,113 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -27259,10 +27209,10 @@ 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      2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,1046 @@
++++ linux/fs/aufs/super.c      2017-03-02 14:24:13.866922487 +0100
+@@ -0,0 +1,1044 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -27710,12 +27660,10 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c
 +                      continue;
 +
 +              h_sb = au_sbr_sb(sb, bindex);
-+              if (h_sb->s_op->sync_fs) {
-+                      e = h_sb->s_op->sync_fs(h_sb, wait);
-+                      if (unlikely(e && !err))
-+                              err = e;
-+                      /* go on even if an error happens */
-+              }
++              e = vfsub_sync_filesystem(h_sb, wait);
++              if (unlikely(e && !err))
++                      err = e;
++              /* go on even if an error happens */
 +      }
 +      si_read_unlock(sb);
 +
@@ -28309,10 +28257,10 @@ 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      2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,639 @@
++++ linux/fs/aufs/super.h      2017-03-02 14:24:13.866922487 +0100
+@@ -0,0 +1,617 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -28392,13 +28340,6 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h
 +#endif
 +};
 +
-+#define AU_PIDSTEP    (int)(BITS_TO_LONGS(PID_MAX_DEFAULT) * BITS_PER_LONG)
-+#define AU_NPIDMAP    (int)DIV_ROUND_UP(PID_MAX_LIMIT, AU_PIDSTEP)
-+struct au_si_pid {
-+      unsigned long   *pid_bitmap[AU_NPIDMAP];
-+      struct mutex    pid_mtx;
-+};
-+
 +struct au_branch;
 +struct au_sbinfo {
 +      /* nowait tasks in the system-wide workqueue */
@@ -28410,9 +28351,6 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h
 +       */
 +      struct au_rwsem         si_rwsem;
 +
-+      /* prevent recursive locking in deleting inode */
-+      struct au_si_pid        au_si_pid;
-+
 +      /*
 +       * dirty approach to protect sb->sb_inodes and ->s_files (gone) from
 +       * remount.
@@ -28754,42 +28692,30 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h
 +
 +/* ---------------------------------------------------------------------- */
 +
-+static inline void si_pid_idx_bit(int *idx, pid_t *bit)
-+{
-+      /* the origin of pid is 1, but the bitmap's is 0 */
-+      *bit = current->pid - 1;
-+      *idx = *bit / AU_PIDSTEP;
-+      *bit %= AU_PIDSTEP;
-+}
++/* current->atomic_flags */
++/* this value should never corrupt the ones defined in linux/sched.h */
++#define PFA_AUFS      7
++
++TASK_PFA_TEST(AUFS, test_aufs)        /* task_test_aufs */
++TASK_PFA_SET(AUFS, aufs)      /* task_set_aufs */
++TASK_PFA_CLEAR(AUFS, aufs)    /* task_clear_aufs */
 +
 +static inline int si_pid_test(struct super_block *sb)
 +{
-+      pid_t bit;
-+      int idx;
-+      unsigned long *bitmap;
-+
-+      si_pid_idx_bit(&idx, &bit);
-+      bitmap = au_sbi(sb)->au_si_pid.pid_bitmap[idx];
-+      if (bitmap)
-+              return test_bit(bit, bitmap);
-+      return 0;
++      return !!task_test_aufs(current);
 +}
 +
 +static inline void si_pid_clr(struct super_block *sb)
 +{
-+      pid_t bit;
-+      int idx;
-+      unsigned long *bitmap;
-+
-+      si_pid_idx_bit(&idx, &bit);
-+      bitmap = au_sbi(sb)->au_si_pid.pid_bitmap[idx];
-+      BUG_ON(!bitmap);
-+      AuDebugOn(!test_bit(bit, bitmap));
-+      clear_bit(bit, bitmap);
-+      /* smp_mb(); */
++      AuDebugOn(!task_test_aufs(current));
++      task_clear_aufs(current);
 +}
 +
-+void si_pid_set(struct super_block *sb);
++static inline void si_pid_set(struct super_block *sb)
++{
++      AuDebugOn(task_test_aufs(current));
++      task_set_aufs(current);
++}
 +
 +/* ---------------------------------------------------------------------- */
 +
@@ -28952,10 +28878,10 @@ 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    2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/sysaufs.c    2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,104 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -29060,10 +28986,10 @@ 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    2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/sysaufs.h    2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,101 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -29165,10 +29091,10 @@ 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      2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/sysfs.c      2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,376 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -29545,10 +29471,10 @@ 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      2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/sysrq.c      2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,157 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -29706,10 +29632,10 @@ 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       2016-10-09 16:55:38.889431135 +0200
++++ linux/fs/aufs/vdir.c       2017-03-02 14:24:13.866922487 +0100
 @@ -0,0 +1,900 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -30610,10 +30536,10 @@ 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      2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,886 @@
++++ linux/fs/aufs/vfsub.c      2017-03-02 14:24:13.870255912 +0100
+@@ -0,0 +1,899 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -30656,6 +30582,19 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +}
 +#endif
 +
++int vfsub_sync_filesystem(struct super_block *h_sb, int wait)
++{
++      int err;
++
++      lockdep_off();
++      down_read(&h_sb->s_umount);
++      err = __sync_filesystem(h_sb, wait);
++      up_read(&h_sb->s_umount);
++      lockdep_on();
++
++      return err;
++}
++
 +/* ---------------------------------------------------------------------- */
 +
 +int vfsub_update_h_iattr(struct path *h_path, int *did)
@@ -31500,10 +31439,10 @@ 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      2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,316 @@
++++ linux/fs/aufs/vfsub.h      2017-03-02 14:24:13.870255912 +0100
+@@ -0,0 +1,318 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -31587,6 +31526,8 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
 +AuStubInt0(vfsub_test_mntns, struct vfsmount *mnt, struct super_block *h_sb);
 +#endif
 +
++int vfsub_sync_filesystem(struct super_block *h_sb, int wait);
++
 +/* ---------------------------------------------------------------------- */
 +
 +int vfsub_update_h_iattr(struct path *h_path, int *did);
@@ -31820,10 +31761,10 @@ 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 2016-12-17 12:28:17.598545045 +0100
++++ linux/fs/aufs/wbr_policy.c 2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,830 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -32654,10 +32595,10 @@ 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      2016-12-17 12:28:17.598545045 +0100
++++ linux/fs/aufs/whout.c      2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,1061 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -33719,10 +33660,10 @@ 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      2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/whout.h      2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,85 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -33808,10 +33749,10 @@ 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        2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/wkq.c        2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,213 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -34025,10 +33966,10 @@ 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        2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/wkq.h        2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,93 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -34122,10 +34063,10 @@ 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      2016-12-17 12:28:17.598545045 +0100
-@@ -0,0 +1,332 @@
++++ linux/fs/aufs/xattr.c      2017-03-02 14:24:13.870255912 +0100
+@@ -0,0 +1,357 @@
 +/*
-+ * Copyright (C) 2014-2016 Junjiro R. Okajima
++ * Copyright (C) 2014-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -34145,6 +34086,8 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 + * handling xattr functions
 + */
 +
++#include <linux/fs.h>
++#include <linux/posix_acl_xattr.h>
 +#include <linux/xattr.h>
 +#include "aufs.h"
 +
@@ -34317,6 +34260,19 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +
 +/* ---------------------------------------------------------------------- */
 +
++static int au_smack_reentering(struct super_block *sb)
++{
++#if IS_ENABLED(CONFIG_SECURITY_SMACK)
++      /*
++       * as a part of lookup, smack_d_instantiate() is called, and it calls
++       * i_op->getxattr(). ouch.
++       */
++      return si_pid_test(sb);
++#else
++      return 0;
++#endif
++}
++
 +enum {
 +      AU_XATTR_LIST,
 +      AU_XATTR_GET
@@ -34340,14 +34296,18 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +static ssize_t au_lgxattr(struct dentry *dentry, struct au_lgxattr *arg)
 +{
 +      ssize_t err;
++      int reenter;
 +      struct path h_path;
 +      struct super_block *sb;
 +
 +      sb = dentry->d_sb;
-+      err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
-+      if (unlikely(err))
-+              goto out;
-+      err = au_h_path_getattr(dentry, /*force*/1, &h_path);
++      reenter = au_smack_reentering(sb);
++      if (!reenter) {
++              err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
++              if (unlikely(err))
++                      goto out;
++      }
++      err = au_h_path_getattr(dentry, /*force*/1, &h_path, reenter);
 +      if (unlikely(err))
 +              goto out_si;
 +      if (unlikely(!h_path.dentry))
@@ -34369,9 +34329,11 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +      }
 +
 +out_di:
-+      di_read_unlock(dentry, AuLock_IR);
++      if (!reenter)
++              di_read_unlock(dentry, AuLock_IR);
 +out_si:
-+      si_read_unlock(sb);
++      if (!reenter)
++              si_read_unlock(sb);
 +out:
 +      AuTraceErr(err);
 +      return err;
@@ -34448,7 +34410,11 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +};
 +
 +static const struct xattr_handler *au_xattr_handlers[] = {
-+      &au_xattr_handler,
++#ifdef CONFIG_FS_POSIX_ACL
++      &posix_acl_access_xattr_handler,
++      &posix_acl_default_xattr_handler,
++#endif
++      &au_xattr_handler, /* must be last */
 +      NULL
 +};
 +
@@ -34458,10 +34424,10 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +}
 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       2016-10-09 16:55:36.496035060 +0200
++++ linux/fs/aufs/xino.c       2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,1318 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -35780,10 +35746,10 @@ 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       2016-12-17 12:28:38.769494865 +0100
++++ linux/include/uapi/linux/aufs_type.h       2017-03-02 14:24:13.870255912 +0100
 @@ -0,0 +1,419 @@
 +/*
-+ * Copyright (C) 2005-2016 Junjiro R. Okajima
++ * Copyright (C) 2005-2017 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -35823,7 +35789,7 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin
 +
 +#include <linux/limits.h>
 +
-+#define AUFS_VERSION  "4.9-20161219"
++#define AUFS_VERSION  "4.x-rcN-20170220"
 +
 +/* todo? move this to linux-2.6.19/include/magic.h */
 +#define AUFS_SUPER_MAGIC      ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
@@ -36201,10 +36167,10 @@ 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.9 loopback patch
+aufs4.x-rcN loopback patch
 
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 6ee9235..f64161f 100644
+index b63f68b..c0f4b8c 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 @@ -551,7 +551,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq)
@@ -36344,7 +36310,7 @@ index 6ee9235..f64161f 100644
   out:
        /* This is safe: open() is still holding a reference. */
        module_put(THIS_MODULE);
-@@ -1021,6 +1054,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
+@@ -1021,6 +1054,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;
@@ -36383,7 +36349,7 @@ index fb2237c..c3888c5 100644
        unsigned        lo_blocksize;
        void            *key_data; 
 diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
-index d2a9a1d..d7519d0 100644
+index 6da0f10..d211f9e 100644
 --- a/fs/aufs/f_op.c
 +++ b/fs/aufs/f_op.c
 @@ -351,7 +351,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
@@ -36396,7 +36362,7 @@ index d2a9a1d..d7519d0 100644
                if (file->f_mapping != h_file->f_mapping) {
                        file->f_mapping = h_file->f_mapping;
 diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c
-index c3ca50f..a3dbdaf 100644
+index 61e9197..9910bea 100644
 --- a/fs/aufs/loop.c
 +++ b/fs/aufs/loop.c
 @@ -132,3 +132,19 @@ void au_loopback_fin(void)
@@ -36420,10 +36386,10 @@ index c3ca50f..a3dbdaf 100644
 +      return f;
 +}
 diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h
-index 48bf070..66afec7 100644
+index e2df495..36e5052 100644
 --- a/fs/aufs/loop.h
 +++ b/fs/aufs/loop.h
-@@ -25,7 +25,11 @@
+@@ -25,7 +25,11 @@ void au_warn_loopback(struct super_block *h_sb);
  
  int au_loopback_init(void);
  void au_loopback_fin(void);
@@ -36435,7 +36401,7 @@ index 48bf070..66afec7 100644
  AuStubInt0(au_test_loopback_overlap, struct super_block *sb,
           struct dentry *h_adding)
  AuStubInt0(au_test_loopback_kthread, void)
-@@ -33,6 +37,8 @@
+@@ -33,6 +37,8 @@ AuStubVoid(au_warn_loopback, struct super_block *h_sb)
  
  AuStubInt0(au_loopback_init, void)
  AuStubVoid(au_loopback_fin, void)
@@ -36445,10 +36411,10 @@ index 48bf070..66afec7 100644
  
  #endif /* __KERNEL__ */
 diff --git a/fs/aufs/super.c b/fs/aufs/super.c
-index 0082ce4..5085378 100644
+index 0e9bbc3..b90d52f 100644
 --- a/fs/aufs/super.c
 +++ b/fs/aufs/super.c
-@@ -839,7 +839,10 @@ static int aufs_remount_fs(struct super_block *sb, int *flags, char *data)
+@@ -837,7 +837,10 @@ static const struct super_operations aufs_sop = {
        .statfs         = aufs_statfs,
        .put_super      = aufs_put_super,
        .sync_fs        = aufs_sync_fs,
@@ -36461,10 +36427,10 @@ index 0082ce4..5085378 100644
  
  /* ---------------------------------------------------------------------- */
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index a903bc3..db820e3 100644
+index a808c7c..214b51f 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1823,6 +1823,10 @@ struct super_operations {
+@@ -1791,6 +1791,10 @@ struct super_operations {
                                  struct shrink_control *);
        long (*free_cached_objects)(struct super_block *,
                                    struct shrink_control *);
index e0ec68bf59eedfc19e73fe0cce5ac4c30eb5e3a2..dbf671e30b040d3187c7603ae4aa7e6cee0b12d1 100644 (file)
@@ -19,6 +19,7 @@ GCC_PLUGIN_CYC_COMPLEXITY all=n
 GCC_PLUGIN_LATENT_ENTROPY all=n
 GEN_RTC all=n
 HAVE_STACK_VALIDATION all=y
+INTEL_RDT_A all=y
 IOSF_MBI all=m
 IOSF_MBI_DEBUG all=y
 KEXEC_FILE all=y
@@ -26,13 +27,13 @@ KEXEC_VERIFY_SIG all=n
 KVM_DEBUG_FS all=n
 KVM_DEVICE_ASSIGNMENT all=y
 MCE_AMD_INJ all=m
-MLX_PLATFORM all=m
 PERF_EVENTS_AMD_POWER all=m
 PERF_EVENTS_INTEL_CSTATE all=m
 PERF_EVENTS_INTEL_RAPL all=m
 PERF_EVENTS_INTEL_UNCORE all=m
 PUNIT_ATOM_DEBUG all=m
 RANDOMIZE_MEMORY all=y
+SCHED_MC_PRIO all=y
 STATIC_KEYS_SELFTEST all=y
 VMAP_STACK all=y
 X86_AMD_PLATFORM_DEVICE all=y
@@ -49,8 +50,12 @@ LBDAF i386=y ppc=y sparc=y sparc64=
 BLK_DEV_BSG all=y
 BLK_DEV_BSGLIB all=y
 BLK_DEV_INTEGRITY all=y
+BLK_DEV_ZONED all=y
 BLK_DEV_THROTTLING all=y
 BLK_CMDLINE_PARSER all=y
+BLK_WBT all=y
+BLK_WBT_SQ all=y
+BLK_WBT_MQ all=y
 #- file block/partitions/Kconfig goes here
 #- file block/Kconfig.iosched goes here
 
@@ -480,8 +485,9 @@ DEV_COREDUMP all=y
 DEBUG_DRIVER all=n
 DEBUG_DEVRES all=n
 DEBUG_TEST_DRIVER_REMOVE all=n
+#- file drivers/base/test/Kconfig goes here
 #- file drivers/base/regmap/Kconfig goes here
-FENCE_TRACE all=n
+DMA_FENCE_TRACE all=n
 DMA_CMA all=y
 #- Default contiguous memory area size:
 CMA_SIZE_MBYTES all=16
@@ -496,6 +502,11 @@ CMA_ALIGNMENT all=8
 #-
 REGMAP_SPMI all=m
 
+#-
+#- *** FILE: drivers/base/test/Kconfig ***
+#-
+TEST_ASYNC_DRIVER_PROBE all=m
+
 #-
 #- *** FILE: drivers/bcma/Kconfig ***
 #-
@@ -728,6 +739,7 @@ IPMI_POWEROFF all=m
 SYNCLINK_CS all=m
 CARDMAN_4000 all=m
 CARDMAN_4040 all=m
+SCR24X all=m
 IPWIRELESS all=m
 
 #-
@@ -786,6 +798,17 @@ COMMON_CLK_OXNAS all=n
 #- file drivers/clk/ti/Kconfig goes here
 #- file drivers/clk/uniphier/Kconfig goes here
 
+#-
+#- *** FILE: drivers/clk/mediatek/Kconfig ***
+#-
+COMMON_CLK_MT2701 all=y
+COMMON_CLK_MT2701_MMSYS all=y
+COMMON_CLK_MT2701_IMGSYS all=y
+COMMON_CLK_MT2701_VDECSYS all=y
+COMMON_CLK_MT2701_HIFSYS all=y
+COMMON_CLK_MT2701_ETHSYS all=y
+COMMON_CLK_MT2701_BDPSYS all=y
+
 #-
 #- *** FILE: drivers/clk/sunxi-ng/Kconfig ***
 #-
@@ -856,6 +879,7 @@ CRYPTO_DEV_CCP all=y
 #- file drivers/crypto/qat/Kconfig goes here
 #- file drivers/crypto/vmx/Kconfig goes here
 #- file drivers/crypto/chelsio/Kconfig goes here
+#- file drivers/crypto/virtio/Kconfig goes here
 
 #-
 #- *** FILE: drivers/crypto/ccp/Kconfig ***
@@ -878,6 +902,11 @@ CRYPTO_DEV_QAT_DH895xCCVF all=m
 CRYPTO_DEV_QAT_C3XXXVF all=m
 CRYPTO_DEV_QAT_C62XVF all=m
 
+#-
+#- *** FILE: drivers/crypto/virtio/Kconfig ***
+#-
+CRYPTO_DEV_VIRTIO all=m
+
 #-
 #- *** FILE: drivers/dax/Kconfig ***
 #-
@@ -1037,6 +1066,7 @@ FW_CFG_SYSFS_CMDLINE all=y
 #- file drivers/firmware/google/Kconfig goes here
 #- file drivers/firmware/efi/Kconfig goes here
 #- file drivers/firmware/meson/Kconfig goes here
+#- file drivers/firmware/tegra/Kconfig goes here
 
 #-
 #- *** FILE: drivers/firmware/efi/Kconfig ***
@@ -1182,6 +1212,9 @@ DRM_VGEM all=m
 #- file drivers/gpu/drm/arc/Kconfig goes here
 #- file drivers/gpu/drm/hisilicon/Kconfig goes here
 #- file drivers/gpu/drm/mediatek/Kconfig goes here
+#- file drivers/gpu/drm/zte/Kconfig goes here
+#- file drivers/gpu/drm/mxsfb/Kconfig goes here
+#- file drivers/gpu/drm/meson/Kconfig goes here
 DRM_LEGACY all=n
 DRM_TDFX all=m
 DRM_R128 all=m
@@ -1244,6 +1277,11 @@ DRM_GMA500 all=m
 DRM_GMA600 all=y
 DRM_GMA3600 all=y
 
+#-
+#- *** FILE: drivers/gpu/drm/hisilicon/hibmc/Kconfig ***
+#-
+DRM_HISI_HIBMC all=m
+
 #-
 #- *** FILE: drivers/gpu/drm/i2c/Kconfig ***
 #-
@@ -1255,9 +1293,12 @@ DRM_I2C_NXP_TDA998X all=m
 #- *** FILE: drivers/gpu/drm/i915/Kconfig ***
 #-
 DRM_I915 i386=m x86_64=m
-DRM_I915_PRELIMINARY_HW_SUPPORT all=y
+DRM_I915_ALPHA_SUPPORT all=n
+DRM_I915_CAPTURE_ERROR all=y
+DRM_I915_COMPRESS_ERROR all=y
 DRM_I915_USERPTR all=y
 DRM_I915_GVT all=y
+DRM_I915_GVT_KVMGT all=m
 #- file drivers/gpu/drm/i915/Kconfig.debug goes here
 
 #-
@@ -1359,6 +1400,7 @@ LOGIRUMBLEPAD2_FF all=y
 LOGIG940_FF all=y
 LOGIWHEELS_FF all=y
 HID_MAGICMOUSE all=m
+HID_MAYFLASH all=m
 HID_MICROSOFT all=m
 HID_MONTEREY all=m
 HID_MULTITOUCH all=m
@@ -1394,6 +1436,7 @@ HID_TOPSEED all=m
 HID_THINGM all=m
 HID_THRUSTMASTER all=m
 THRUSTMASTER_FF all=y
+HID_UDRAW_PS3 all=m
 HID_WACOM all=m
 HID_WIIMOTE all=m
 HID_XINMO all=m
@@ -1524,6 +1567,7 @@ SENSORS_MAX6650 all=m
 SENSORS_MAX6697 all=m
 SENSORS_MAX31790 all=m
 SENSORS_MCP3021 all=m
+SENSORS_TC654 all=m
 SENSORS_MENF21BMC_HWMON all=m
 SENSORS_ADCXX all=m
 SENSORS_LM63 all=m
@@ -1578,6 +1622,7 @@ SENSORS_TC74 all=m
 SENSORS_THMC50 all=m
 SENSORS_TMP102 all=m
 SENSORS_TMP103 all=m
+SENSORS_TMP108 all=m
 SENSORS_TMP401 all=m
 SENSORS_TMP421 all=m
 SENSORS_VIA_CPUTEMP all=m
@@ -1639,6 +1684,7 @@ STM all=m
 STM_DUMMY all=n
 STM_SOURCE_CONSOLE all=m
 STM_SOURCE_HEARTBEAT all=m
+STM_SOURCE_FTRACE all=m
 
 #-
 #- *** FILE: drivers/i2c/Kconfig ***
@@ -1720,6 +1766,7 @@ I2C_TINY_USB all=m
 I2C_VIPERBOARD all=m
 #- Other I2C/SMBus bus drivers
 I2C_ELEKTOR i386=m
+I2C_MLXCPLD all=m
 I2C_PCA_ISA all=m
 I2C_CROS_EC_TUNNEL all=m
 SCx200_ACB i386=m
@@ -1732,6 +1779,7 @@ I2C_MUX_PCA9541 all=m
 I2C_MUX_PCA954x all=m
 I2C_MUX_PINCTRL all=m
 I2C_MUX_REG all=m
+I2C_MUX_MLXCPLD all=m
 
 #-
 #- *** FILE: drivers/ide/Kconfig ***
@@ -1810,7 +1858,6 @@ BLK_DEV_UMC8672 alpha=m i386=m
 #- *** FILE: drivers/idle/Kconfig ***
 #-
 INTEL_IDLE all=n i386=y x86_64=y
-I7300_IDLE x86_64=m
 
 #-
 #- *** FILE: drivers/iio/Kconfig ***
@@ -1827,6 +1874,7 @@ IIO_SW_TRIGGER all=m
 #- file drivers/iio/amplifiers/Kconfig goes here
 #- file drivers/iio/chemical/Kconfig goes here
 #- file drivers/iio/common/Kconfig goes here
+#- file drivers/iio/counter/Kconfig goes here
 #- file drivers/iio/dac/Kconfig goes here
 #- file drivers/iio/dummy/Kconfig goes here
 #- file drivers/iio/frequency/Kconfig goes here
@@ -1839,6 +1887,7 @@ IIO_SW_TRIGGER all=m
 #- file drivers/iio/orientation/Kconfig goes here
 #- file drivers/iio/trigger/Kconfig goes here
 #- file drivers/iio/potentiometer/Kconfig goes here
+#- file drivers/iio/potentiostat/Kconfig goes here
 #- file drivers/iio/pressure/Kconfig goes here
 #- file drivers/iio/proximity/Kconfig goes here
 #- file drivers/iio/temperature/Kconfig goes here
@@ -1849,7 +1898,10 @@ IIO_SW_TRIGGER all=m
 BMA180 all=m
 BMA220 all=m
 BMC150_ACCEL all=m
+DA280 all=m
+DA311 all=m
 DMARD09 all=m
+DMARD10 all=m
 HID_SENSOR_ACCEL_3D all=m
 IIO_ST_ACCEL_3AXIS all=m
 KXSD9 all=m
@@ -1865,6 +1917,7 @@ MMA9551 all=m
 MMA9553 all=m
 MXC4005 all=m
 MXC6255 all=m
+SCA3000 all=m
 STK8312 all=m
 STK8BA50 all=m
 
@@ -1875,6 +1928,7 @@ AD7266 all=m
 AD7291 all=m
 AD7298 all=m
 AD7476 all=m
+AD7766 all=m
 AD7791 all=m
 AD7793 all=m
 AD7887 all=m
@@ -1921,6 +1975,12 @@ ATLAS_PH_SENSOR all=m
 IAQCORE all=m
 VZ89X all=m
 
+#-
+#- *** FILE: drivers/iio/common/cros_ec_sensors/Kconfig ***
+#-
+IIO_CROS_EC_SENSORS_CORE all=m
+IIO_CROS_EC_SENSORS all=m
+
 #-
 #- *** FILE: drivers/iio/common/ssp_sensors/Kconfig ***
 #-
@@ -1991,6 +2051,7 @@ MAX30100 all=m
 AM2315 all=m
 DHT11 all=m
 HDC100X all=m
+HTS221 all=m
 HTU21 all=m
 SI7005 all=m
 SI7020 all=m
@@ -2032,6 +2093,7 @@ CM3232 all=m
 CM3323 all=m
 CM36651 all=m
 GP2AP020A00F all=m
+SENSORS_ISL29018 all=m
 ISL29125 all=m
 HID_SENSOR_ALS all=m
 HID_SENSOR_PROX all=m
@@ -2047,6 +2109,7 @@ STK3310 all=m
 TCS3414 all=m
 TCS3472 all=m
 SENSORS_TSL2563 all=m
+TSL2583 all=m
 TSL4531 all=m
 US5182D all=m
 VCNL4000 all=m
@@ -2083,9 +2146,15 @@ MCP4131 all=m
 MCP4531 all=m
 TPL0102 all=m
 
+#-
+#- *** FILE: drivers/iio/potentiostat/Kconfig ***
+#-
+LMP91000 all=m
+
 #-
 #- *** FILE: drivers/iio/pressure/Kconfig ***
 #-
+ABP060MG all=m
 BMP280 all=m
 HID_SENSOR_PRESS all=m
 HP03 all=m
@@ -2144,6 +2213,7 @@ INFINIBAND_ADDR_TRANS all=y sparc=
 #- file drivers/infiniband/hw/mlx5/Kconfig goes here
 #- file drivers/infiniband/hw/nes/Kconfig goes here
 #- file drivers/infiniband/hw/ocrdma/Kconfig goes here
+#- file drivers/infiniband/hw/vmw_pvrdma/Kconfig goes here
 #- file drivers/infiniband/hw/usnic/Kconfig goes here
 #- file drivers/infiniband/hw/hns/Kconfig goes here
 #- file drivers/infiniband/ulp/ipoib/Kconfig goes here
@@ -2222,6 +2292,11 @@ INFINIBAND_QIB_DCA all=y
 #-
 INFINIBAND_USNIC all=m
 
+#-
+#- *** FILE: drivers/infiniband/hw/vmw_pvrdma/Kconfig ***
+#-
+INFINIBAND_VMWARE_PVRDMA all=m
+
 #-
 #- *** FILE: drivers/infiniband/sw/rdmavt/Kconfig ***
 #-
@@ -2466,10 +2541,13 @@ MOUSE_SYNAPTICS_USB all=m
 RMI4_CORE all=m
 RMI4_I2C all=m
 RMI4_SPI all=m
+RMI4_SMB all=m
+RMI4_F03 all=y
 RMI4_2D_SENSOR all=y
 RMI4_F11 all=y
 RMI4_F12 all=y
 RMI4_F30 all=y
+RMI4_F34 all=y
 RMI4_F54 all=y
 
 #-
@@ -2784,6 +2862,8 @@ LEDS_MENF21BMC all=m
 #- LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
 LEDS_BLINKM all=m
 LEDS_MLXCPLD all=m
+LEDS_USER all=m
+LEDS_NIC78BX all=m
 #- LED Triggers
 #- file drivers/leds/trigger/Kconfig goes here
 
@@ -2874,6 +2954,7 @@ MD_CLUSTER all=m
 BLK_DEV_DM all=m
 DM_MQ_DEFAULT all=n
 DM_DEBUG all=n
+DM_DEBUG_BLOCK_MANAGER_LOCKING all=n
 DM_DEBUG_BLOCK_STACK_TRACING all=n
 #- file drivers/md/persistent-data/Kconfig goes here
 DM_CRYPT all=m
@@ -2916,6 +2997,8 @@ MEDIA_DIGITAL_TV_SUPPORT all=y
 MEDIA_RADIO_SUPPORT all=y
 MEDIA_SDR_SUPPORT all=y
 MEDIA_RC_SUPPORT all=y
+MEDIA_CEC_SUPPORT all=y
+MEDIA_CEC_DEBUG all=n
 MEDIA_CONTROLLER all=y
 MEDIA_CONTROLLER_DVB all=y
 VIDEO_DEV all=m
@@ -2977,6 +3060,7 @@ SMS_SIANO_DEBUGFS all=y
 #-
 DVB_MAX_ADAPTERS all=8
 DVB_DYNAMIC_MINORS all=y
+DVB_DEMUX_SECTION_LOSS_LOG all=n
 
 #-
 #- *** FILE: drivers/media/dvb-frontends/Kconfig ***
@@ -3469,6 +3553,8 @@ IR_TTUSBIR all=m
 #- file drivers/media/rc/img-ir/Kconfig goes here
 RC_LOOPBACK all=m
 IR_GPIO_CIR all=m
+IR_SERIAL all=m
+IR_SERIAL_TRANSMITTER all=y
 
 #-
 #- *** FILE: drivers/media/rc/img-ir/Kconfig ***
@@ -3530,6 +3616,8 @@ MEDIA_USB_SUPPORT all=y
 #- file drivers/media/usb/airspy/Kconfig goes here
 #- file drivers/media/usb/hackrf/Kconfig goes here
 #- file drivers/media/usb/msi2500/Kconfig goes here
+#- USB HDMI CEC adapters
+#- file drivers/media/usb/pulse8-cec/Kconfig goes here
 
 #-
 #- *** FILE: drivers/media/usb/airspy/Kconfig ***
@@ -3716,6 +3804,11 @@ VIDEO_HDPVR all=m
 #-
 USB_MSI2500 all=m
 
+#-
+#- *** FILE: drivers/media/usb/pulse8-cec/Kconfig ***
+#-
+USB_PULSE8_CEC all=m
+
 #-
 #- *** FILE: drivers/media/usb/pvrusb2/Kconfig ***
 #-
@@ -4080,13 +4173,11 @@ VMWARE_VMCI all=m
 MMC all=m
 MMC_DEBUG all=n
 #- file drivers/mmc/core/Kconfig goes here
-#- file drivers/mmc/card/Kconfig goes here
 #- file drivers/mmc/host/Kconfig goes here
 
 #-
-#- *** FILE: drivers/mmc/card/Kconfig ***
+#- *** FILE: drivers/mmc/core/Kconfig ***
 #-
-#- MMC/SD/SDIO Card Drivers
 MMC_BLOCK all=m
 MMC_BLOCK_MINORS all=8
 MMC_BLOCK_BOUNCE all=y
@@ -4264,6 +4355,7 @@ MTD_NAND_CS553X i386=m
 MTD_NAND_PASEMI ppc64=m
 MTD_NAND_NANDSIM all=m ppc=n ppc64=n sparc=n
 MTD_NAND_PLATFORM all=m sparc=n
+MTD_NAND_OXNAS all=m
 MTD_NAND_FSL_ELBC ppc=m ppc64=m
 MTD_NAND_HISI504 all=m
 MTD_NAND_MTK all=m
@@ -4523,6 +4615,7 @@ WD80x3 alpha=m i386=m
 #- file drivers/net/ethernet/adaptec/Kconfig goes here
 #- file drivers/net/ethernet/aeroflex/Kconfig goes here
 #- file drivers/net/ethernet/agere/Kconfig goes here
+#- file drivers/net/ethernet/alacritech/Kconfig goes here
 #- file drivers/net/ethernet/allwinner/Kconfig goes here
 #- file drivers/net/ethernet/alteon/Kconfig goes here
 #- file drivers/net/ethernet/altera/Kconfig goes here
@@ -4616,6 +4709,12 @@ ADAPTEC_STARFIRE all=m
 NET_VENDOR_AGERE all=y
 ET131X all=m
 
+#-
+#- *** FILE: drivers/net/ethernet/alacritech/Kconfig ***
+#-
+NET_VENDOR_ALACRITECH all=y
+SLICOSS all=m
+
 #-
 #- *** FILE: drivers/net/ethernet/alteon/Kconfig ***
 #-
@@ -4692,6 +4791,7 @@ BNX2X all=m
 BNX2X_SRIOV all=y
 BNXT all=m
 BNXT_SRIOV all=y
+BNXT_DCB all=y
 
 #-
 #- *** FILE: drivers/net/ethernet/brocade/Kconfig ***
@@ -4709,6 +4809,7 @@ BNA all=m
 #-
 NET_CADENCE all=y
 MACB all=m
+MACB_PCI all=m
 
 #-
 #- *** FILE: drivers/net/ethernet/calxeda/Kconfig ***
@@ -4724,6 +4825,7 @@ THUNDER_NIC_VF all=m
 THUNDER_NIC_BGX all=m
 THUNDER_NIC_RGX all=m
 LIQUIDIO all=m
+LIQUIDIO_VF all=m
 
 #-
 #- *** FILE: drivers/net/ethernet/chelsio/Kconfig ***
@@ -4808,6 +4910,7 @@ FEC_MPC52xx_MDIO ppc=y
 #- file drivers/net/ethernet/freescale/fs_enet/Kconfig goes here
 #- file drivers/net/ethernet/freescale/fman/Kconfig goes here
 GIANFAR ppc=m
+#- file drivers/net/ethernet/freescale/dpaa/Kconfig goes here
 
 #-
 #- *** FILE: drivers/net/ethernet/fujitsu/Kconfig ***
@@ -4888,10 +4991,14 @@ MLX5_CORE_EN_DCB all=y
 #-
 MLXSW_CORE all=m
 MLXSW_CORE_HWMON all=y
+MLXSW_CORE_THERMAL all=y
 MLXSW_PCI all=m
+MLXSW_I2C all=m
+MLXSW_SWITCHIB all=m
 MLXSW_SWITCHX2 all=m
 MLXSW_SPECTRUM all=m
 MLXSW_SPECTRUM_DCB all=y
+MLXSW_MINIMAL all=m
 
 #-
 #- *** FILE: drivers/net/ethernet/micrel/Kconfig ***
@@ -5034,11 +5141,19 @@ NET_VENDOR_SEEQ all=y
 #-
 #- *** FILE: drivers/net/ethernet/sfc/Kconfig ***
 #-
+NET_VENDOR_SOLARFLARE all=y
 SFC all=m sparc=n
 SFC_MTD all=y
 SFC_MCDI_MON all=y
 SFC_SRIOV all=y
 SFC_MCDI_LOGGING all=y
+#- file drivers/net/ethernet/sfc/falcon/Kconfig goes here
+
+#-
+#- *** FILE: drivers/net/ethernet/sfc/falcon/Kconfig ***
+#-
+SFC_FALCON all=m
+SFC_FALCON_MTD all=y
 
 #-
 #- *** FILE: drivers/net/ethernet/silan/Kconfig ***
@@ -5227,6 +5342,7 @@ MCS_FIR all=m
 #- *** FILE: drivers/net/phy/Kconfig ***
 #-
 PHYLIB all=y
+LED_TRIGGER_PHY all=y
 #- MDIO bus device drivers
 MDIO_BCM_UNIMAC all=m
 MDIO_BITBANG all=m
@@ -5952,6 +6068,7 @@ NVME_CORE all=m
 BLK_DEV_NVME all=m
 BLK_DEV_NVME_SCSI all=y
 NVME_RDMA all=m
+NVME_FC all=m
 
 #-
 #- *** FILE: drivers/nvme/target/Kconfig ***
@@ -5959,6 +6076,8 @@ NVME_RDMA all=m
 NVME_TARGET all=m
 NVME_TARGET_LOOP all=m
 NVME_TARGET_RDMA all=m
+NVME_TARGET_FC all=m
+NVME_TARGET_FCLOOP all=m
 
 #-
 #- *** FILE: drivers/nvmem/Kconfig ***
@@ -6176,6 +6295,7 @@ COMPAL_LAPTOP all=m
 SONY_LAPTOP i386=m x86_64=m
 SONYPI_COMPAT i386=y x86_64=y
 IDEAPAD_LAPTOP all=m
+SURFACE3_WMI all=m
 THINKPAD_ACPI i386=m x86_64=m
 THINKPAD_ACPI_ALSA_SUPPORT all=y
 THINKPAD_ACPI_DEBUGFACILITIES all=n
@@ -6216,8 +6336,11 @@ INTEL_SMARTCONNECT all=m
 PVPANIC all=m
 INTEL_PMC_IPC all=m
 SURFACE_PRO3_BUTTON all=m
+SURFACE_3_BUTTON all=m
 INTEL_PUNIT_IPC all=m
 INTEL_TELEMETRY all=m
+MLX_PLATFORM all=m
+MLX_CPLD_PLATFORM all=m
 
 #-
 #- *** FILE: drivers/pnp/Kconfig ***
@@ -6452,7 +6575,7 @@ REGULATOR_WM8994 all=m
 #-
 #- *** FILE: drivers/remoteproc/Kconfig ***
 #-
-STE_MODEM_RPROC all=m
+REMOTEPROC all=m
 
 #-
 #- *** FILE: drivers/reset/Kconfig ***
@@ -6461,6 +6584,7 @@ RESET_CONTROLLER all=y
 TI_SYSCON_RESET all=m
 #- file drivers/reset/sti/Kconfig goes here
 #- file drivers/reset/hisilicon/Kconfig goes here
+#- file drivers/reset/tegra/Kconfig goes here
 
 #-
 #- *** FILE: drivers/rtc/Kconfig ***
@@ -6662,7 +6786,6 @@ SCSI_FUTURE_DOMAIN all=m
 SCSI_GDTH all=m
 SCSI_ISCI all=m
 SCSI_GENERIC_NCR5380 alpha=m i386=m
-SCSI_GENERIC_NCR5380_MMIO alpha=m i386=m
 SCSI_IPS all=m sparc=n sparc64=n
 SCSI_IBMVSCSI ppc64=n
 SCSI_IBMVFC ppc64=m
@@ -6693,6 +6816,7 @@ SCSI_QLOGIC_1280 all=m
 SCSI_QLOGICPTI sparc=m sparc64=m
 #- file drivers/scsi/qla2xxx/Kconfig goes here
 #- file drivers/scsi/qla4xxx/Kconfig goes here
+#- file drivers/scsi/qedi/Kconfig goes here
 SCSI_LPFC all=m sparc=n
 SCSI_LPFC_DEBUG_FS all=n
 SCSI_SIM710 alpha=m i386=m
@@ -6836,6 +6960,11 @@ PCMCIA_NINJA_SCSI i386=m ppc=n x86_64=m
 PCMCIA_QLOGIC all=m
 PCMCIA_SYM53C500 all=m
 
+#-
+#- *** FILE: drivers/scsi/qedi/Kconfig ***
+#-
+QEDI all=m
+
 #-
 #- *** FILE: drivers/scsi/qla2xxx/Kconfig ***
 #-
@@ -6931,7 +7060,6 @@ SSB_DRIVER_GPIO all=y
 #- *** FILE: drivers/staging/Kconfig ***
 #-
 STAGING all=y
-#- file drivers/staging/slicoss/Kconfig goes here
 #- file drivers/staging/wlan-ng/Kconfig goes here
 #- file drivers/staging/comedi/Kconfig goes here
 #- file drivers/staging/olpc_dcon/Kconfig goes here
@@ -7216,7 +7344,6 @@ ADIS16201 all=m
 ADIS16203 all=m
 ADIS16209 all=m
 ADIS16240 all=m
-SCA3000 all=m
 
 #-
 #- *** FILE: drivers/staging/iio/adc/Kconfig ***
@@ -7262,9 +7389,7 @@ AD5933 all=m
 #-
 #- *** FILE: drivers/staging/iio/light/Kconfig ***
 #-
-SENSORS_ISL29018 all=m
 SENSORS_ISL29028 all=m
-TSL2583 all=m
 TSL2x7x all=m
 
 #-
@@ -7310,11 +7435,9 @@ LUSTRE_DEBUG_EXPENSIVE_CHECK all=n
 #-
 STAGING_MEDIA all=y
 #- file drivers/staging/media/bcm2048/Kconfig goes here
-#- file drivers/staging/media/cec/Kconfig goes here
 #- file drivers/staging/media/cxd2099/Kconfig goes here
 #- file drivers/staging/media/davinci_vpfe/Kconfig goes here
 #- file drivers/staging/media/omap4iss/Kconfig goes here
-#- file drivers/staging/media/pulse8-cec/Kconfig goes here
 #- file drivers/staging/media/s5p-cec/Kconfig goes here
 #- file drivers/staging/media/lirc/Kconfig goes here
 #- file drivers/staging/media/st-cec/Kconfig goes here
@@ -7324,12 +7447,6 @@ STAGING_MEDIA all=y
 #-
 I2C_BCM2048 all=m
 
-#-
-#- *** FILE: drivers/staging/media/cec/Kconfig ***
-#-
-MEDIA_CEC all=y
-MEDIA_CEC_DEBUG all=n
-
 #-
 #- *** FILE: drivers/staging/media/cxd2099/Kconfig ***
 #-
@@ -7343,16 +7460,9 @@ LIRC_BT829 all=m
 LIRC_IMON all=m
 LIRC_PARALLEL all=m
 LIRC_SASEM all=m
-LIRC_SERIAL all=m
-LIRC_SERIAL_TRANSMITTER all=y
 LIRC_SIR all=m
 LIRC_ZILOG all=m
 
-#-
-#- *** FILE: drivers/staging/media/pulse8-cec/Kconfig ***
-#-
-USB_PULSE8_CEC all=m
-
 #-
 #- *** FILE: drivers/staging/most/Kconfig ***
 #-
@@ -7447,11 +7557,6 @@ RTS5208 all=m
 #-
 CRYPTO_SKEIN all=y
 
-#-
-#- *** FILE: drivers/staging/slicoss/Kconfig ***
-#-
-SLICOSS all=m
-
 #-
 #- *** FILE: drivers/staging/sm750fb/Kconfig ***
 #-
@@ -7751,6 +7856,7 @@ UIO_PCI_GENERIC all=m
 UIO_NETX all=m
 UIO_PRUSS all=m
 UIO_MF624 all=m
+UIO_HV_GENERIC all=m
 
 #-
 #- *** FILE: drivers/usb/Kconfig ***
@@ -7771,6 +7877,7 @@ USB all=m sparc=n
 #- file drivers/usb/storage/Kconfig goes here
 #- file drivers/usb/image/Kconfig goes here
 #- file drivers/usb/usbip/Kconfig goes here
+#- file drivers/usb/mtu3/Kconfig goes here
 #- file drivers/usb/musb/Kconfig goes here
 #- file drivers/usb/dwc3/Kconfig goes here
 #- file drivers/usb/dwc2/Kconfig goes here
@@ -8084,6 +8191,7 @@ USB_SERIAL_IR all=m
 USB_SERIAL_EDGEPORT all=m
 USB_SERIAL_EDGEPORT_TI all=m
 USB_SERIAL_F81232 all=m
+USB_SERIAL_F8153X all=m
 USB_SERIAL_GARMIN all=m
 USB_SERIAL_IPW all=m
 USB_SERIAL_IUU all=m
@@ -8186,8 +8294,15 @@ VFIO all=m
 VFIO_NOIOMMU all=y
 #- file drivers/vfio/pci/Kconfig goes here
 #- file drivers/vfio/platform/Kconfig goes here
+#- file drivers/vfio/mdev/Kconfig goes here
 #- file virt/lib/Kconfig goes here
 
+#-
+#- *** FILE: drivers/vfio/mdev/Kconfig ***
+#-
+VFIO_MDEV all=m
+VFIO_MDEV_DEVICE all=m
+
 #-
 #- *** FILE: drivers/vfio/pci/Kconfig ***
 #-
@@ -8670,7 +8785,6 @@ MISC_FILESYSTEMS all=y
 #- file fs/efs/Kconfig goes here
 #- file fs/jffs2/Kconfig goes here
 #- file fs/ubifs/Kconfig goes here
-#- file fs/logfs/Kconfig goes here
 #- file fs/cramfs/Kconfig goes here
 #- file fs/squashfs/Kconfig goes here
 #- file fs/freevxfs/Kconfig goes here
@@ -8971,11 +9085,6 @@ JFS_SECURITY all=y
 JFS_DEBUG all=n
 JFS_STATISTICS all=y
 
-#-
-#- *** FILE: fs/logfs/Kconfig ***
-#-
-LOGFS all=m
-
 #-
 #- *** FILE: fs/minix/Kconfig ***
 #-
@@ -9129,6 +9238,7 @@ ORANGEFS_FS all=m
 #- *** FILE: fs/overlayfs/Kconfig ***
 #-
 OVERLAY_FS all=m
+OVERLAY_FS_REDIRECT_DIR all=y
 
 #-
 #- *** FILE: fs/proc/Kconfig ***
@@ -9223,6 +9333,7 @@ UBIFS_FS_ADVANCED_COMPR all=y
 UBIFS_FS_LZO all=y
 UBIFS_FS_ZLIB all=y
 UBIFS_ATIME_SUPPORT all=y
+UBIFS_FS_ENCRYPTION all=y
 
 #-
 #- *** FILE: fs/udf/Kconfig ***
@@ -9322,6 +9433,7 @@ PROC_PID_CPUSET all=n
 CGROUP_DEVICE all=y
 CGROUP_CPUACCT all=y
 CGROUP_PERF all=y
+CGROUP_BPF all=y
 CGROUP_DEBUG all=n
 NAMESPACES all=y
 UTS_NS all=y
@@ -9533,6 +9645,7 @@ DDR all=y
 #- *** FILE: lib/Kconfig.debug ***
 #-
 PRINTK_TIME all=y
+CONSOLE_LOGLEVEL_DEFAULT all=7
 MESSAGE_LOGLEVEL_DEFAULT all=4
 BOOT_PRINTK_DELAY all=y
 DYNAMIC_DEBUG all=n
@@ -9620,7 +9733,6 @@ DEBUG_WQ_FORCE_RR_CPU all=n
 DEBUG_BLOCK_EXT_DEVT all=n
 CPU_HOTPLUG_STATE_CONTROL all=n
 NOTIFIER_ERROR_INJECTION all=m
-CPU_NOTIFIER_ERROR_INJECT all=m
 PM_NOTIFIER_ERROR_INJECT all=m
 NETDEV_NOTIFIER_ERROR_INJECT all=m
 FAULT_INJECTION all=n
@@ -9651,6 +9763,7 @@ TEST_BPF all=n
 TEST_FIRMWARE all=m
 TEST_UDELAY all=m
 TEST_STATIC_KEYS all=m
+BUG_ON_DATA_CORRUPTION all=n
 #- file samples/Kconfig goes here
 #- file lib/Kconfig.kgdb goes here
 #- file lib/Kconfig.ubsan goes here
@@ -9871,6 +9984,7 @@ WIRELESS all=y
 #- file net/caif/Kconfig goes here
 #- file net/ceph/Kconfig goes here
 #- file net/nfc/Kconfig goes here
+LWTUNNEL_BPF all=y
 DST_CACHE all=y
 NET_DEVLINK all=m
 MAY_USE_DEVLINK all=m
@@ -10107,6 +10221,7 @@ INET_XFRM_MODE_BEET all=m
 INET_DIAG all=m
 INET_TCP_DIAG all=m
 INET_UDP_DIAG all=m
+INET_RAW_DIAG all=m
 INET_DIAG_DESTROY all=y
 TCP_CONG_ADVANCED all=y
 TCP_CONG_BIC all=m
@@ -10126,11 +10241,11 @@ TCP_CONG_DCTCP all=m
 TCP_CONG_CDG all=m
 TCP_CONG_BBR all=y
 DEFAULT_BIC all=n
-DEFAULT_BBR all=y
 DEFAULT_CUBIC all=n
 DEFAULT_HTCP all=n
 DEFAULT_VEGAS all=n
 DEFAULT_WESTWOOD all=n
+DEFAULT_BBR all=y
 DEFAULT_RENO all=n
 TCP_MD5SIG all=y
 
@@ -10138,10 +10253,12 @@ TCP_MD5SIG all=y
 #- *** FILE: net/ipv4/netfilter/Kconfig ***
 #-
 NF_CONNTRACK_IPV4 all=m
+NF_SOCKET_IPV4 all=m
 NF_TABLES_IPV4 all=m
 NFT_CHAIN_ROUTE_IPV4 all=m
 NFT_REJECT_IPV4 all=m
 NFT_DUP_IPV4 all=m
+NFT_FIB_IPV4 all=m
 NF_TABLES_ARP all=m
 NF_LOG_ARP all=m
 NF_LOG_IPV4 all=m
@@ -10201,14 +10318,19 @@ IPV6_SUBTREES all=y
 IPV6_MROUTE all=y
 IPV6_MROUTE_MULTIPLE_TABLES all=y
 IPV6_PIMSM_V2 all=y
+IPV6_SEG6_LWTUNNEL all=y
+IPV6_SEG6_INLINE all=y
+IPV6_SEG6_HMAC all=y
 
 #-
 #- *** FILE: net/ipv6/netfilter/Kconfig ***
 #-
 NF_CONNTRACK_IPV6 all=m
+NF_SOCKET_IPV6 all=m
 NF_TABLES_IPV6 all=m
 NFT_CHAIN_ROUTE_IPV6 all=m
 NFT_DUP_IPV6 all=m
+NFT_FIB_IPV6 all=m
 NF_REJECT_IPV6 all=m
 NF_LOG_IPV6 all=m
 NF_NAT_IPV6 all=m
@@ -10342,6 +10464,7 @@ NETFILTER_NETLINK_ACCT all=m
 NETFILTER_NETLINK_QUEUE all=m
 NETFILTER_NETLINK_LOG all=m
 NF_CONNTRACK all=m
+NF_LOG_NETDEV all=m
 NF_CONNTRACK_MARK all=y
 NF_CONNTRACK_SECMARK all=y
 NF_CONNTRACK_ZONES all=y
@@ -10349,9 +10472,9 @@ NF_CONNTRACK_PROCFS all=n
 NF_CONNTRACK_EVENTS all=y
 NF_CONNTRACK_TIMEOUT all=y
 NF_CONNTRACK_TIMESTAMP all=y
-NF_CT_PROTO_DCCP=m
-NF_CT_PROTO_SCTP all=m
-NF_CT_PROTO_UDPLITE all=m
+NF_CT_PROTO_DCCP all=y
+NF_CT_PROTO_SCTP all=y
+NF_CT_PROTO_UDPLITE all=y
 NF_CONNTRACK_AMANDA all=m
 NF_CONNTRACK_FTP all=m
 NF_CONNTRACK_H323 all=m
@@ -10374,6 +10497,7 @@ NF_TABLES_INET all=m
 NF_TABLES_NETDEV all=m
 NFT_EXTHDR all=m
 NFT_META all=m
+NFT_RT all=m
 NFT_NUMGEN all=m
 NFT_CT all=m
 NFT_SET_RBTREE all=m
@@ -10384,11 +10508,13 @@ NFT_LIMIT all=m
 NFT_MASQ all=m
 NFT_REDIR all=m
 NFT_NAT all=m
+NFT_OBJREF all=m
 NFT_QUEUE all=m
 NFT_QUOTA all=m
 NFT_REJECT all=m
 NFT_COMPAT all=m
 NFT_HASH all=m
+NFT_FIB_INET all=m
 NF_DUP_NETDEV all=m
 NFT_DUP_NETDEV all=m
 NFT_FWD_NETDEV all=m
@@ -10486,6 +10612,7 @@ IP_SET_HASH_IPMARK all=m
 IP_SET_HASH_IPPORT all=m
 IP_SET_HASH_IPPORTIP all=m
 IP_SET_HASH_IPPORTNET all=m
+IP_SET_HASH_IPMAC all=m
 IP_SET_HASH_MAC all=m
 IP_SET_HASH_NETPORTNET all=m
 IP_SET_HASH_NET all=m
@@ -11263,6 +11390,8 @@ SND_SOC_ALC5623 all=m
 SND_SOC_BT_SCO all=m
 SND_SOC_CS35L32 all=m
 SND_SOC_CS35L33 all=m
+SND_SOC_CS35L34 all=m
+SND_SOC_CS42L42 all=m
 SND_SOC_CS42L51 all=m
 SND_SOC_CS42L51_I2C all=m
 SND_SOC_CS42L52 all=m
@@ -11284,6 +11413,8 @@ SND_SOC_MAX98095 all=m
 SND_SOC_MAX98504 all=m
 SND_SOC_MAX9850 all=m
 SND_SOC_MAX9860 all=m
+SND_SOC_MSM8916_WCD_ANALOG all=m
+SND_SOC_MSM8916_WCD_DIGITAL all=m
 SND_SOC_PCM1681 all=m
 SND_SOC_PCM179X all=m
 SND_SOC_PCM179X_I2C all=m
@@ -11488,21 +11619,29 @@ BNX2X_GENEVE all=y
 BNX2X_VXLAN all=y
 BUILD_DOCSRC all=n
 CHELSIO_T4_UWIRE all=y
+CPU_NOTIFIER_ERROR_INJECT all=m
 DEVPTS_MULTIPLE_INSTANCES all=y
 DRM_AMD_POWERPLAY all=y
+DRM_I915_PRELIMINARY_HW_SUPPORT all=y
 EXYNOS_VIDEO all=n
+FENCE_TRACE all=n
 FM10K_VXLAN all=y
 GEN_RTC_X all=n
 HAVE_BPF_JIT all=y
 I40E_GENEVE all=y
 I40E_VXLAN all=y
+I7300_IDLE x86_64=m
 IPMI_SI_PROBE_DEFAULTS all=n
 IWLWIFI_DEBUG_EXPERIMENTAL_UCODE all=y
 IWLWIFI_UAPSD all=y
 IXGBE_VXLAN all=y
 LEDS_TRIGGER_IDE_DISK all=y
+LIRC_SERIAL all=m
+LIRC_SERIAL_TRANSMITTER all=y
 LIS3L02DQ all=m
+LOGFS all=m
 LUSTRE_LLITE_LLOOP all=m
+MEDIA_CEC all=y
 MLX4_EN_VXLAN all=y
 MLX5_CORE_EN_VXLAN all=y
 NET_DSA_MV88E6123 all=m
@@ -11518,6 +11657,7 @@ R8723AU all=m
 RTC_DRV_ISL12057 all=m
 SCSI_7000FASST alpha=m i386=m
 SCSI_DTC3280 alpha=m i386=m
+SCSI_GENERIC_NCR5380_MMIO alpha=m i386=m
 SCSI_GENERIC_NCR53C400 alpha=y i386=y
 SCSI_IN2000 alpha=m i386=m
 SCSI_PAS16 alpha=m i386=m
@@ -11532,6 +11672,7 @@ SENSORS_BH1780 all=m
 SND_RTCTIMER alpha=m i386=m ia64=m x86_64=m
 SND_SEQ_RTCTIMER_DEFAULT alpha=y i386=y ia64=y x86_64=y
 STAGING_RDMA all=y
+STE_MODEM_RPROC all=m
 TOUCHSCREEN_FT6236 all=m
 USB_LED all=m
 VIDEO_SH_MOBILE_CSI2 all=m
This page took 0.392237 seconds and 4 git commands to generate.