[packages/kernel] - updated

arekm arekm at pld-linux.org
Thu Mar 2 15:38:40 CET 2017


commit a2654f7884b5e0aca54cf9f5def4b2d62195fa19
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Thu Mar 2 15:38:31 2017 +0100

    - updated

 kernel-aufs4.patch      | 762 +++++++++++++++++++++++-------------------------
 kernel-multiarch.config | 229 ++++++++++++---
 2 files changed, 549 insertions(+), 442 deletions(-)
---
diff --git a/kernel-aufs4.patch b/kernel-aufs4.patch
index 6cc5ab9..cc61c35 100644
--- a/kernel-aufs4.patch
+++ b/kernel-aufs4.patch
@@ -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 at 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 *);
diff --git a/kernel-multiarch.config b/kernel-multiarch.config
index e0ec68b..dbf671e 100644
--- a/kernel-multiarch.config
+++ b/kernel-multiarch.config
@@ -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
@@ -497,6 +503,11 @@ CMA_ALIGNMENT all=8
 REGMAP_SPMI all=m
 
 #-
+#- *** FILE: drivers/base/test/Kconfig ***
+#-
+TEST_ASYNC_DRIVER_PROBE all=m
+
+#-
 #- *** FILE: drivers/bcma/Kconfig ***
 #-
 BCMA_POSSIBLE all=y
@@ -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
 
 #-
@@ -787,6 +799,17 @@ COMMON_CLK_OXNAS all=n
 #- 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 ***
 #-
 SUNXI_CCU all=y
@@ -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 ***
@@ -879,6 +903,11 @@ 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 ***
 #-
 DEV_DAX all=m
@@ -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
@@ -1245,6 +1278,11 @@ 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 ***
 #-
 DRM_I2C_CH7006 all=m
@@ -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
@@ -1922,6 +1976,12 @@ 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 ***
 #-
 IIO_SSP_SENSORS_COMMONS all=m
@@ -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
@@ -2084,8 +2147,14 @@ 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
@@ -2223,6 +2293,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 ***
 #-
 INFINIBAND_RDMAVT all=m
@@ -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 ***
@@ -3717,6 +3805,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 ***
 #-
 VIDEO_PVRUSB2 all=m sparc=n
@@ -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
@@ -4617,6 +4710,12 @@ 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 ***
 #-
 NET_VENDOR_ALTEON all=y
@@ -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
@@ -6837,6 +6961,11 @@ PCMCIA_QLOGIC all=m
 PCMCIA_SYM53C500 all=m
 
 #-
+#- *** FILE: drivers/scsi/qedi/Kconfig ***
+#-
+QEDI all=m
+
+#-
 #- *** FILE: drivers/scsi/qla2xxx/Kconfig ***
 #-
 SCSI_QLA_FC all=m sparc=n
@@ -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
@@ -7325,12 +7448,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 ***
 #-
 DVB_CXD2099 all=m
@@ -7343,17 +7460,10 @@ 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 ***
 #-
 MOST all=m
@@ -7448,11 +7558,6 @@ RTS5208 all=m
 CRYPTO_SKEIN all=y
 
 #-
-#- *** FILE: drivers/staging/slicoss/Kconfig ***
-#-
-SLICOSS all=m
-
-#-
 #- *** FILE: drivers/staging/sm750fb/Kconfig ***
 #-
 FB_SM750 all=m
@@ -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,9 +8294,16 @@ 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 ***
 #-
 VFIO_PCI all=m
@@ -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
@@ -8972,11 +9086,6 @@ JFS_DEBUG all=n
 JFS_STATISTICS all=y
 
 #-
-#- *** FILE: fs/logfs/Kconfig ***
-#-
-LOGFS all=m
-
-#-
 #- *** FILE: fs/minix/Kconfig ***
 #-
 MINIX_FS all=m
@@ -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
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/a2654f7884b5e0aca54cf9f5def4b2d62195fa19



More information about the pld-cvs-commit mailing list