[packages/kernel] - updated aufs patch to upstream for 6.10

baggins baggins at pld-linux.org
Mon Jul 22 19:36:07 CEST 2024


commit 0033748011e72e2d9b5caec6ef08fc08bc40b938
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Mon Jul 22 19:15:07 2024 +0200

    - updated aufs patch to upstream for 6.10

 kernel-aufs.patch | 419 ++++++++++++++++++++++++++++--------------------------
 update-source.sh  |   2 +-
 2 files changed, 221 insertions(+), 200 deletions(-)
---
diff --git a/kernel-aufs.patch b/kernel-aufs.patch
index 21fac800..fccf5479 100644
--- a/kernel-aufs.patch
+++ b/kernel-aufs.patch
@@ -1,5 +1,5 @@
 SPDX-License-Identifier: GPL-2.0
-aufs6.x-rcN kbuild patch
+aufs6.10 kbuild patch
 
 diff --git a/fs/Kconfig b/fs/Kconfig
 index a46b0cbc4d8f..d90a3b0dbc53 100644
@@ -23,13 +23,13 @@ index 6ecc9b0a53f2..255420c2676e 100644
  obj-$(CONFIG_ZONEFS_FS)		+= zonefs/
 +obj-$(CONFIG_AUFS_FS)           += aufs/
 SPDX-License-Identifier: GPL-2.0
-aufs6.x-rcN base patch
+aufs6.10 base patch
 
 diff --git a/MAINTAINERS b/MAINTAINERS
-index aa3b947fb080..fb7020b24f7c 100644
+index 958e935449e5..07f4a5756abf 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -3396,6 +3396,19 @@ F:	kernel/audit*
+@@ -3479,6 +3479,19 @@ F:	kernel/audit*
  F:	lib/*audit.c
  K:	\baudit_[a-z_0-9]\+\b
  
@@ -50,10 +50,10 @@ index aa3b947fb080..fb7020b24f7c 100644
  M:	Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  R:	Dave Ertman <david.m.ertman at intel.com>
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 28a95fd366fe..6bd18fb1e53a 100644
+index 1153721bc7c2..bfe45a940de8 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
-@@ -641,6 +641,26 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -664,6 +664,26 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  	goto done;
  }
  
@@ -81,10 +81,10 @@ index 28a95fd366fe..6bd18fb1e53a 100644
  
  static ssize_t loop_attr_show(struct device *dev, char *page,
 diff --git a/fs/dcache.c b/fs/dcache.c
-index 71a8e943a0fa..13afe5474f86 100644
+index 4c144519aa70..608e61e3d697 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
-@@ -1211,6 +1211,9 @@ enum d_walk_ret {
+@@ -1215,6 +1215,9 @@ enum d_walk_ret {
  	D_WALK_SKIP,
  };
  
@@ -94,7 +94,7 @@ index 71a8e943a0fa..13afe5474f86 100644
  /**
   * d_walk - walk the dentry tree
   * @parent:	start of walk
-@@ -1219,7 +1222,7 @@ enum d_walk_ret {
+@@ -1223,7 +1226,7 @@ enum d_walk_ret {
   *
   * The @enter() callbacks are called with d_lock held.
   */
@@ -104,7 +104,7 @@ index 71a8e943a0fa..13afe5474f86 100644
  {
  	struct dentry *this_parent, *dentry;
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 54cc85d3338e..5dcfe97a5ba5 100644
+index 300e5d9ad913..3f927cbf63b3 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
 @@ -35,7 +35,7 @@
@@ -143,7 +143,7 @@ index 5a51315c6678..a4b6ce51848e 100644
   * vfsmount lock must be held for write
   */
 diff --git a/fs/splice.c b/fs/splice.c
-index 218e24b1ac40..7210ddc5aa81 100644
+index 60aed8de21f8..04af758d332c 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
 @@ -933,7 +933,7 @@ static int warn_unsupported(struct file *file, const char *op)
@@ -156,10 +156,10 @@ index 218e24b1ac40..7210ddc5aa81 100644
  {
  	if (unlikely(!out->f_op->splice_write))
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 00fc429b0af0..b3a73aed62b8 100644
+index 0283cf366c2a..d36e42c7406d 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1113,6 +1113,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1112,6 +1112,7 @@ extern void fasync_free(struct fasync_struct *);
  /* can be called from interrupts */
  extern void kill_fasync(struct fasync_struct **, int, int);
  
@@ -167,7 +167,7 @@ index 00fc429b0af0..b3a73aed62b8 100644
  extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
  extern int f_setown(struct file *filp, int who, int force);
  extern void f_delown(struct file *filp);
-@@ -2024,6 +2025,7 @@ struct file_operations {
+@@ -2019,6 +2020,7 @@ struct file_operations {
  	int (*lock) (struct file *, int, struct file_lock *);
  	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
  	int (*check_flags)(int);
@@ -242,10 +242,10 @@ index 151bd3de5936..2223ee909c10 100644
  #ifdef CONFIG_LOCK_STAT
  static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats);
 SPDX-License-Identifier: GPL-2.0
-aufs6.x-rcN mmap patch
+aufs6.10 mmap patch
 
 diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 18550c071d71..560be8fb4fca 100644
+index 72a1acd03675..7970af6dde6b 100644
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
 @@ -2213,7 +2213,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
@@ -274,7 +274,7 @@ index c6e7ebc63756..d7ccfd909764 100644
  		ino = inode->i_ino;
  	}
 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index 23fbab954c20..6faced8ef8fe 100644
+index 71e5039d940d..c664cbc8bf27 100644
 --- a/fs/proc/task_mmu.c
 +++ b/fs/proc/task_mmu.c
 @@ -273,7 +273,8 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
@@ -287,7 +287,7 @@ index 23fbab954c20..6faced8ef8fe 100644
  
  		dev = inode->i_sb->s_dev;
  		ino = inode->i_ino;
-@@ -2700,7 +2701,7 @@ static int show_numa_map(struct seq_file *m, void *v)
+@@ -2719,7 +2720,7 @@ static int show_numa_map(struct seq_file *m, void *v)
  	struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
  	struct vm_area_struct *vma = v;
  	struct numa_maps *md = &numa_priv->md;
@@ -313,10 +313,10 @@ index bce674533000..b12b5a75c799 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 0436b919f1c7..a04c7dde4bc2 100644
+index eb7c96d24ac0..94be7829c0de 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -2452,6 +2452,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
+@@ -2498,6 +2498,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
  static inline struct vm_area_struct *vma_lookup(struct mm_struct *mm,
  						unsigned long addr);
  
@@ -361,10 +361,10 @@ index 0436b919f1c7..a04c7dde4bc2 100644
  		void *buf, int len, 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 5240bd7bca33..f91323e92ef9 100644
+index af3a0256fa93..652ba2c8e82e 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
-@@ -555,6 +555,9 @@ struct vm_region {
+@@ -556,6 +556,9 @@ struct vm_region {
  	unsigned long	vm_top;		/* region allocated to here */
  	unsigned long	vm_pgoff;	/* the offset in vm_file corresponding to vm_start */
  	struct file	*vm_file;	/* the backing file or NULL */
@@ -374,7 +374,7 @@ index 5240bd7bca33..f91323e92ef9 100644
  
  	int		vm_usage;	/* region usage count (access under nommu_region_sem) */
  	bool		vm_icache_flushed : 1; /* true if the icache has been flushed for
-@@ -719,6 +722,9 @@ struct vm_area_struct {
+@@ -720,6 +723,9 @@ struct vm_area_struct {
  	unsigned long vm_pgoff;		/* Offset (within vm_file) in PAGE_SIZE
  					   units */
  	struct file * vm_file;		/* File we map to (can be NULL). */
@@ -385,10 +385,10 @@ index 5240bd7bca33..f91323e92ef9 100644
  
  #ifdef CONFIG_ANON_VMA_NAME
 diff --git a/kernel/fork.c b/kernel/fork.c
-index 39a5046c2f0b..478a22f5f367 100644
+index 99076dbe27d8..0531693791f6 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
-@@ -718,7 +718,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
+@@ -735,7 +735,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
  		if (file) {
  			struct address_space *mapping = file->f_mapping;
  
@@ -398,19 +398,19 @@ index 39a5046c2f0b..478a22f5f367 100644
  			if (vma_is_shared_maywrite(tmp))
  				mapping_allow_writable(mapping);
 diff --git a/mm/Makefile b/mm/Makefile
-index e4b5b75aaec9..2ec2544009fb 100644
+index 8fb85acda1b1..05a7645fe2e8 100644
 --- a/mm/Makefile
 +++ b/mm/Makefile
-@@ -134,3 +134,4 @@ obj-$(CONFIG_IO_MAPPING) += io-mapping.o
+@@ -139,3 +139,4 @@ obj-$(CONFIG_HAVE_BOOTMEM_INFO_NODE) += bootmem_info.o
  obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o
  obj-$(CONFIG_SHRINKER_DEBUG) += shrinker_debug.o
  obj-$(CONFIG_EXECMEM) += execmem.o
 +obj-y += prfile.o
 diff --git a/mm/filemap.c b/mm/filemap.c
-index 7437b2bd75c1..cecf1956f7a9 100644
+index 657bcd887fdb..b58773966026 100644
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
-@@ -3631,7 +3631,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
+@@ -3673,7 +3673,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
  	vm_fault_t ret = VM_FAULT_LOCKED;
  
  	sb_start_pagefault(mapping->host->i_sb);
@@ -420,7 +420,7 @@ index 7437b2bd75c1..cecf1956f7a9 100644
  	if (folio->mapping != mapping) {
  		folio_unlock(folio);
 diff --git a/mm/mmap.c b/mm/mmap.c
-index 6dbda99a47da..8610432aa357 100644
+index 83b4682ec85c..76c16b311d8c 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -140,7 +140,7 @@ static void remove_vma(struct vm_area_struct *vma, bool unreachable)
@@ -441,7 +441,7 @@ index 6dbda99a47da..8610432aa357 100644
  		}
  		if (vp->remove->anon_vma)
  			anon_vma_merge(vp->vma, vp->remove);
-@@ -2361,7 +2361,7 @@ static int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
+@@ -2416,7 +2416,7 @@ static int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
  		goto out_free_mpol;
  
  	if (new->vm_file)
@@ -450,7 +450,7 @@ index 6dbda99a47da..8610432aa357 100644
  
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
-@@ -2854,7 +2854,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -2920,7 +2920,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
  				 * and cause general protection fault
  				 * ultimately.
  				 */
@@ -459,7 +459,7 @@ index 6dbda99a47da..8610432aa357 100644
  				vm_area_free(vma);
  				vma = merge;
  				/* Update vm_flags to pick up the change. */
-@@ -2940,7 +2940,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -3006,7 +3006,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
  
  	if (file || vma->vm_file) {
  unmap_and_free_vma:
@@ -468,7 +468,7 @@ index 6dbda99a47da..8610432aa357 100644
  		vma->vm_file = NULL;
  
  		vma_iter_set(&vmi, vma->vm_end);
-@@ -3002,6 +3002,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -3068,6 +3068,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
  	unsigned long populate = 0;
  	unsigned long ret = -EINVAL;
  	struct file *file;
@@ -478,7 +478,7 @@ index 6dbda99a47da..8610432aa357 100644
  
  	pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/mm/remap_file_pages.rst.\n",
  		     current->comm, current->pid);
-@@ -3060,10 +3063,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -3126,10 +3129,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
  	if (vma->vm_flags & VM_LOCKED)
  		flags |= MAP_LOCKED;
  
@@ -513,7 +513,7 @@ index 6dbda99a47da..8610432aa357 100644
  out:
  	mmap_write_unlock(mm);
  	if (populate)
-@@ -3406,7 +3433,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3480,7 +3507,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
  		if (anon_vma_clone(new_vma, vma))
  			goto out_free_mempol;
  		if (new_vma->vm_file)
@@ -522,7 +522,7 @@ index 6dbda99a47da..8610432aa357 100644
  		if (new_vma->vm_ops && new_vma->vm_ops->open)
  			new_vma->vm_ops->open(new_vma);
  		if (vma_link(mm, new_vma))
-@@ -3420,7 +3447,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3494,7 +3521,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
  		new_vma->vm_ops->close(new_vma);
  
  	if (new_vma->vm_file)
@@ -532,10 +532,10 @@ index 6dbda99a47da..8610432aa357 100644
  	unlink_anon_vmas(new_vma);
  out_free_mempol:
 diff --git a/mm/nommu.c b/mm/nommu.c
-index 5ec8f44e7ce9..efda87a7f99a 100644
+index 7296e775e04e..8d0180a7b370 100644
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
-@@ -521,7 +521,7 @@ static void __put_nommu_region(struct vm_region *region)
+@@ -507,7 +507,7 @@ static void __put_nommu_region(struct vm_region *region)
  		up_write(&nommu_region_sem);
  
  		if (region->vm_file)
@@ -544,7 +544,7 @@ index 5ec8f44e7ce9..efda87a7f99a 100644
  
  		/* IO memory and memory shared directly out of the pagecache
  		 * from ramfs/tmpfs mustn't be released here */
-@@ -601,7 +601,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -587,7 +587,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
  	if (vma->vm_ops && vma->vm_ops->close)
  		vma->vm_ops->close(vma);
  	if (vma->vm_file)
@@ -553,7 +553,7 @@ index 5ec8f44e7ce9..efda87a7f99a 100644
  	put_nommu_region(vma->vm_region);
  	vm_area_free(vma);
  }
-@@ -1133,7 +1133,7 @@ unsigned long do_mmap(struct file *file,
+@@ -1119,7 +1119,7 @@ unsigned long do_mmap(struct file *file,
  					goto error_just_free;
  				}
  			}
@@ -562,7 +562,7 @@ index 5ec8f44e7ce9..efda87a7f99a 100644
  			kmem_cache_free(vm_region_jar, region);
  			region = pregion;
  			result = start;
-@@ -1219,10 +1219,10 @@ unsigned long do_mmap(struct file *file,
+@@ -1205,10 +1205,10 @@ unsigned long do_mmap(struct file *file,
  error:
  	vma_iter_free(&vmi);
  	if (region->vm_file)
@@ -668,13 +668,13 @@ index 000000000000..8f820a235364
 +}
 +#endif /* !CONFIG_MMU */
 SPDX-License-Identifier: GPL-2.0
-aufs6.x-rcN standalone patch
+aufs6.10 standalone patch
 
 diff --git a/fs/dcache.c b/fs/dcache.c
-index 13afe5474f86..05d9dab666bb 100644
+index 608e61e3d697..de38d1afc074 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
-@@ -1321,6 +1321,7 @@ void d_walk(struct dentry *parent, void *data,
+@@ -1325,6 +1325,7 @@ void d_walk(struct dentry *parent, void *data,
  	seq = 1;
  	goto again;
  }
@@ -682,7 +682,7 @@ index 13afe5474f86..05d9dab666bb 100644
  
  struct check_mount {
  	struct vfsmount *mnt;
-@@ -2883,6 +2884,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
+@@ -2889,6 +2890,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
  
  	write_sequnlock(&rename_lock);
  }
@@ -691,10 +691,10 @@ index 13afe5474f86..05d9dab666bb 100644
  /**
   * d_ancestor - search for an ancestor
 diff --git a/fs/exec.c b/fs/exec.c
-index ff6f26671cfc..ea7aa14a730e 100644
+index 40073142288f..df83c144ece0 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
-@@ -113,6 +113,7 @@ bool path_noexec(const struct path *path)
+@@ -114,6 +114,7 @@ bool path_noexec(const struct path *path)
  	return (path->mnt->mnt_flags & MNT_NOEXEC) ||
  	       (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
  }
@@ -703,7 +703,7 @@ index ff6f26671cfc..ea7aa14a730e 100644
  #ifdef CONFIG_USELIB
  /*
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 5dcfe97a5ba5..48adde670824 100644
+index 3f927cbf63b3..9a6faf9fb36d 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
 @@ -88,6 +88,7 @@ int setfl(int fd, struct file * filp, unsigned int arg)
@@ -775,7 +775,7 @@ index 1de6631a3925..3008eb37a18d 100644
  /*
   * Drop a reference to a group.  Free it if it's through.
 diff --git a/fs/open.c b/fs/open.c
-index ee8460c83c77..cb296bf7770f 100644
+index 278b3edcda44..15dd127a2296 100644
 --- a/fs/open.c
 +++ b/fs/open.c
 @@ -66,6 +66,7 @@ int do_truncate(struct mnt_idmap *idmap, struct dentry *dentry,
@@ -787,7 +787,7 @@ index ee8460c83c77..cb296bf7770f 100644
  long vfs_truncate(const struct path *path, loff_t length)
  {
 diff --git a/fs/read_write.c b/fs/read_write.c
-index d4c036e82b6c..c61361ff5e67 100644
+index ef6339391351..5e37f9aeb841 100644
 --- a/fs/read_write.c
 +++ b/fs/read_write.c
 @@ -483,6 +483,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
@@ -807,7 +807,7 @@ index d4c036e82b6c..c61361ff5e67 100644
  /* file_ppos returns &file->f_pos or NULL if file is stream */
  static inline loff_t *file_ppos(struct file *file)
 diff --git a/fs/splice.c b/fs/splice.c
-index 7210ddc5aa81..9e83f46eacc8 100644
+index 04af758d332c..06836fe2d101 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
 @@ -940,6 +940,7 @@ ssize_t do_splice_from(struct pipe_inode_info *pipe, struct file *out,
@@ -852,7 +852,7 @@ index 95a7e1b7f1da..5053670775d3 100644
  }
 +EXPORT_SYMBOL_GPL(task_work_run);
 diff --git a/security/security.c b/security/security.c
-index 7e118858b545..4b5bbe8c6889 100644
+index e5ca08789f74..24596516c66f 100644
 --- a/security/security.c
 +++ b/security/security.c
 @@ -1840,6 +1840,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
@@ -903,7 +903,7 @@ index 7e118858b545..4b5bbe8c6889 100644
  
  /**
   * security_inode_setattr() - Check if setting file attributes is allowed
-@@ -2694,6 +2700,7 @@ int security_file_permission(struct file *file, int mask)
+@@ -2695,6 +2701,7 @@ int security_file_permission(struct file *file, int mask)
  {
  	return call_int_hook(file_permission, file, mask);
  }
@@ -911,7 +911,7 @@ index 7e118858b545..4b5bbe8c6889 100644
  
  /**
   * security_file_alloc() - Allocate and init a file's LSM blob
-@@ -2996,6 +3003,7 @@ int security_file_truncate(struct file *file)
+@@ -2997,6 +3004,7 @@ int security_file_truncate(struct file *file)
  {
  	return call_int_hook(file_truncate, file);
  }
@@ -921,7 +921,7 @@ index 7e118858b545..4b5bbe8c6889 100644
   * security_task_alloc() - Allocate a task's LSM blob
 diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Documentation/ABI/testing/debugfs-aufs
 --- /usr/share/empty/Documentation/ABI/testing/debugfs-aufs	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/ABI/testing/debugfs-aufs	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/ABI/testing/debugfs-aufs	2024-07-22 19:12:26.815976155 +0200
 @@ -0,0 +1,55 @@
 +What:		/debug/aufs/si_<id>/
 +Date:		March 2009
@@ -980,7 +980,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Document
 +		will be empty. About XINO files, see the aufs manual.
 diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentation/ABI/testing/sysfs-aufs
 --- /usr/share/empty/Documentation/ABI/testing/sysfs-aufs	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/ABI/testing/sysfs-aufs	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/ABI/testing/sysfs-aufs	2024-07-22 19:12:26.815976155 +0200
 @@ -0,0 +1,31 @@
 +What:		/sys/fs/aufs/si_<id>/
 +Date:		March 2009
@@ -1015,7 +1015,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentat
 +		will be empty. About XINO files, see the aufs manual.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt linux/Documentation/filesystems/aufs/design/01intro.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/01intro.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/01intro.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,171 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -1190,7 +1190,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt lin
 +about it. But currently I have implemented it in kernel space.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt linux/Documentation/filesystems/aufs/design/02struct.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/02struct.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/02struct.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,258 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -1452,7 +1452,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt li
 +For this purpose, use "aumvdown" command in aufs-util.git.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt linux/Documentation/filesystems/aufs/design/03atomic_open.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,85 @@
 +
 +# Copyright (C) 2015-2022 Junjiro R. Okajima
@@ -1541,7 +1541,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.t
 +       be implemented in aufs, but not all I am afraid.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt linux/Documentation/filesystems/aufs/design/03lookup.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/03lookup.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/03lookup.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,113 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -1658,7 +1658,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt li
 +   by over-mounting something (or another method).
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt linux/Documentation/filesystems/aufs/design/04branch.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/04branch.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/04branch.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,74 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -1736,7 +1736,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt li
 +    same named entry on the upper branch.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt linux/Documentation/filesystems/aufs/design/05wbr_policy.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,64 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -1804,7 +1804,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.tx
 +  copyup policy.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot linux/Documentation/filesystems/aufs/design/06dirren.dot
 --- /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06dirren.dot	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/06dirren.dot	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,44 @@
 +
 +// to view this graph, run dot(1) command in GRAPHVIZ.
@@ -1852,7 +1852,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot li
 +}
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt linux/Documentation/filesystems/aufs/design/06dirren.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06dirren.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/06dirren.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,102 @@
 +
 +# Copyright (C) 2017-2022 Junjiro R. Okajima
@@ -1958,7 +1958,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt li
 +equivalen to udba=reval case.
 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	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,118 @@
 +
 +# Copyright (C) 2011-2022 Junjiro R. Okajima
@@ -2080,7 +2080,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linu
 +should restore the original file state after an error happens.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linux/Documentation/filesystems/aufs/design/06mmap.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06mmap.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/06mmap.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,72 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -2156,7 +2156,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linu
 +I have to give up this "looks-smater" approach.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt linux/Documentation/filesystems/aufs/design/06xattr.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06xattr.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/06xattr.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,94 @@
 +
 +# Copyright (C) 2014-2022 Junjiro R. Okajima
@@ -2254,7 +2254,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt lin
 +now, aufs implements the branch attributes to ignore the error.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt linux/Documentation/filesystems/aufs/design/07export.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/07export.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/07export.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,58 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -2316,7 +2316,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt li
 +  lookup_one_len(), vfs_getattr(), encode_fh() and others.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linux/Documentation/filesystems/aufs/design/08shwh.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/08shwh.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/08shwh.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,52 @@
 +
 +# Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -2372,7 +2372,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linu
 +initramfs will use it to replace the old one at the next boot.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt linux/Documentation/filesystems/aufs/design/10dynop.txt
 --- /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/10dynop.txt	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/design/10dynop.txt	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,47 @@
 +
 +# Copyright (C) 2010-2022 Junjiro R. Okajima
@@ -2423,7 +2423,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt lin
 +regular files only.
 diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documentation/filesystems/aufs/README
 --- /usr/share/empty/Documentation/filesystems/aufs/README	1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/README	2024-05-13 17:13:00.614737564 +0200
++++ linux/Documentation/filesystems/aufs/README	2024-07-22 19:12:26.815976155 +0200
 @@ -0,0 +1,409 @@
 +
 +Aufs6 -- advanced multi layered unification filesystem version 6.x
@@ -2816,7 +2816,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta
 +Carsten Rose made a donation (2018/9).
 +Porteus Kiosk made a donation (2018/10).
 +huronOS team: Enya Quetzalli made donations (2022/5, 2023/5 and 8).
-+Vasily Mikhaylichenko made a donation (2023/5).
++Vasily Mikhaylichenko made a donation (2023/5 and 2024/5).
 +
 +Thank you very much.
 +Donations are always, including future donations, very important and
@@ -2836,7 +2836,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta
 +# End: ;
 diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h
 --- /usr/share/empty/fs/aufs/aufs.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/aufs.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/aufs.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,62 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -2902,7 +2902,7 @@ 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	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/branch.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,1427 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -4333,7 +4333,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c
 +}
 diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h
 --- /usr/share/empty/fs/aufs/branch.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/branch.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/branch.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,375 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -4712,7 +4712,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h
 +#endif /* __AUFS_BRANCH_H__ */
 diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk
 --- /usr/share/empty/fs/aufs/conf.mk	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/conf.mk	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/conf.mk	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,40 @@
 +# SPDX-License-Identifier: GPL-2.0
 +
@@ -4756,7 +4756,7 @@ diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk
 +-include ${srctree}/${src}/conf_priv.mk
 diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 --- /usr/share/empty/fs/aufs/cpup.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/cpup.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/cpup.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,1459 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -6219,8 +6219,8 @@ 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	2024-05-13 17:13:00.618070924 +0200
-@@ -0,0 +1,100 @@
++++ linux/fs/aufs/cpup.h	2024-07-22 19:12:26.819309532 +0200
+@@ -0,0 +1,101 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -6249,6 +6249,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h
 +#ifdef __KERNEL__
 +
 +#include <linux/path.h>
++#include <linux/time.h>
 +
 +struct inode;
 +struct file;
@@ -6323,7 +6324,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h
 +#endif /* __AUFS_CPUP_H__ */
 diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c
 --- /usr/share/empty/fs/aufs/dbgaufs.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dbgaufs.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dbgaufs.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,526 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -6853,7 +6854,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c
 +}
 diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h
 --- /usr/share/empty/fs/aufs/dbgaufs.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dbgaufs.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dbgaufs.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,53 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -6910,7 +6911,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h
 +#endif /* __DBGAUFS_H__ */
 diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c
 --- /usr/share/empty/fs/aufs/dcsub.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dcsub.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dcsub.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,225 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -7139,7 +7140,7 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c
 +}
 diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h
 --- /usr/share/empty/fs/aufs/dcsub.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dcsub.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dcsub.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,137 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -7280,7 +7281,7 @@ 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	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/debug.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,448 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -7732,7 +7733,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
 +}
 diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h
 --- /usr/share/empty/fs/aufs/debug.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/debug.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/debug.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,226 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -7927,14 +7928,14 @@ diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h
 +AuStubVoid(au_dbg_verify_kthread, void)
 +AuStubInt0(__init au_debug_init, void)
 +
-+#define AuDbgWhlist(w)		do {} while (0)
-+#define AuDbgVdir(v)		do {} while (0)
-+#define AuDbgInode(i)		do {} while (0)
-+#define AuDbgDAlias(i)		do {} while (0)
-+#define AuDbgDentry(d)		do {} while (0)
-+#define AuDbgFile(f)		do {} while (0)
-+#define AuDbgSb(sb)		do {} while (0)
-+#define AuDbgSym(addr)		do {} while (0)
++AuStubVoid(AuDbgWhlist, struct au_nhash *whlist)
++AuStubVoid(AuDbgVdir, struct au_vdir *vdir)
++AuStubVoid(AuDbgInode, struct inode *inode)
++AuStubVoid(AuDbgDAlias, struct inode *inode)
++AuStubVoid(AuDbgDentry, struct dentry *dentry)
++AuStubVoid(AuDbgFile, struct file *filp)
++AuStubVoid(AuDbgSb, struct super_block *sb)
++AuStubVoid(AuDbgSym, void *addr)
 +#endif /* CONFIG_AUFS_DEBUG */
 +
 +/* ---------------------------------------------------------------------- */
@@ -7962,8 +7963,8 @@ 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	2024-05-13 17:13:00.618070924 +0200
-@@ -0,0 +1,1168 @@
++++ linux/fs/aufs/dentry.c	2024-07-22 19:12:26.819309532 +0200
+@@ -0,0 +1,1175 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -8830,7 +8831,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +{
 +	int err;
 +	umode_t mode, h_mode;
-+	aufs_bindex_t bindex, btail, btop, ibs, ibe;
++	aufs_bindex_t bindex, btail, btop, ibs, ibe, bwh;
 +	unsigned char plus, unhashed, is_root, h_plus, h_nfs, tmpfile;
 +	struct inode *h_inode, *h_cached_inode;
 +	struct dentry *h_dentry;
@@ -8861,11 +8862,17 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +	}
 +
 +	btop = au_dbtop(dentry);
++	bwh = au_dbwh(dentry);
++	if (0 <= bwh && bwh < btop)
++		btop = bwh;
 +	btail = btop;
 +	if (inode && S_ISDIR(inode->i_mode))
 +		btail = au_dbtaildir(dentry);
 +	for (bindex = btop; bindex <= btail; bindex++) {
 +		h_dentry = au_h_dptr(dentry, bindex);
++		if (!h_dentry
++		    && (bindex == bwh && inode))
++			h_dentry = au_hi_wh(inode, bindex);
 +		if (!h_dentry)
 +			continue;
 +
@@ -8874,6 +8881,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +		spin_lock(&h_dentry->d_lock);
 +		h_name = &h_dentry->d_name;
 +		if (unlikely(do_udba
++			     && bindex != bwh
 +			     && !is_root
 +			     && ((!h_nfs
 +				  && (unhashed != !!d_unhashed(h_dentry)
@@ -8914,7 +8922,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +		h_plus = plus;
 +		h_mode = mode;
 +		h_cached_inode = h_inode;
-+		if (h_inode) {
++		if (h_inode && bindex != bwh) {
 +			h_mode = (h_inode->i_mode & S_IFMT);
 +			h_plus = (h_inode->i_nlink > 0);
 +		}
@@ -9134,7 +9142,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +};
 diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h
 --- /usr/share/empty/fs/aufs/dentry.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dentry.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dentry.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,270 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -9408,7 +9416,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h
 +#endif /* __AUFS_DENTRY_H__ */
 diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c
 --- /usr/share/empty/fs/aufs/dinfo.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dinfo.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dinfo.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,555 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -9967,7 +9975,7 @@ diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c
 +}
 diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c
 --- /usr/share/empty/fs/aufs/dir.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dir.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dir.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,766 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -10737,7 +10745,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c
 +};
 diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h
 --- /usr/share/empty/fs/aufs/dir.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dir.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dir.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,134 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -10875,7 +10883,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h
 +#endif /* __AUFS_DIR_H__ */
 diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
 --- /usr/share/empty/fs/aufs/dirren.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dirren.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dirren.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,1315 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -12194,7 +12202,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
 +}
 diff -urN /usr/share/empty/fs/aufs/dirren.h linux/fs/aufs/dirren.h
 --- /usr/share/empty/fs/aufs/dirren.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dirren.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dirren.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,140 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -12338,7 +12346,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.h linux/fs/aufs/dirren.h
 +#endif /* __AUFS_DIRREN_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	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dynop.c	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,366 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -12708,7 +12716,7 @@ diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c
 +}
 diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h
 --- /usr/share/empty/fs/aufs/dynop.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dynop.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/dynop.h	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,77 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -12789,7 +12797,7 @@ diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h
 +#endif /* __AUFS_DYNOP_H__ */
 diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c
 --- /usr/share/empty/fs/aufs/export.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/export.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/export.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,846 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -13639,7 +13647,7 @@ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c
 +}
 diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c
 --- /usr/share/empty/fs/aufs/fhsm.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/fhsm.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/fhsm.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,426 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -14069,8 +14077,8 @@ 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	2024-05-13 17:13:00.618070924 +0200
-@@ -0,0 +1,865 @@
++++ linux/fs/aufs/file.c	2024-07-22 19:12:26.822642909 +0200
+@@ -0,0 +1,866 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -14410,6 +14418,7 @@ diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c
 +	au_set_fbtop(file, btop);
 +	au_set_h_fptr(file, btop, h_file);
 +	au_update_figen(file);
++	file->f_mode |= h_file->f_mode & FMODE_CAN_ODIRECT;
 +	/* todo: necessary? */
 +	/* file->f_ra = h_file->f_ra; */
 +
@@ -14938,7 +14947,7 @@ diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c
 +};
 diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h
 --- /usr/share/empty/fs/aufs/file.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/file.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/file.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,342 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -15244,7 +15253,7 @@ diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h
 +}
 +
 +#ifdef CONFIG_MMU
-+#define AuDbgVmRegion(file, vma) do {} while (0)
++AuStubVoid(AuDbgVmRegion, struct file *file, struct vm_area_struct *vma)
 +
 +static inline void au_vm_file_reset(struct vm_area_struct *vma,
 +				    struct file *file)
@@ -15284,7 +15293,7 @@ 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	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/finfo.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,149 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -15437,8 +15446,8 @@ 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	2024-05-13 17:13:00.618070924 +0200
-@@ -0,0 +1,771 @@
++++ linux/fs/aufs/f_op.c	2024-07-22 19:12:26.822642909 +0200
+@@ -0,0 +1,782 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -15517,6 +15526,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
 +	au_set_fbtop(file, bindex);
 +	au_set_h_fptr(file, bindex, h_file);
 +	au_update_figen(file);
++	file->f_mode |= h_file->f_mode & FMODE_CAN_ODIRECT;
 +	/* todo: necessary? */
 +	/* file->f_ra = h_file->f_ra; */
 +
@@ -15739,7 +15749,12 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
 +	} else
 +		/* currently there is no such fs */
 +		WARN_ON_ONCE(1);
-+	kio->ki_filp = file;
++	if (!is_sync_kiocb(kio)) {
++		/* do not restore ki_filp */
++		fput(file);
++		get_file(h_file);
++	} else
++		kio->ki_filp = file;
 +
 +out:
 +	return err;
@@ -15797,7 +15812,12 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
 +	err = PTR_ERR(h_file);
 +	if (IS_ERR(h_file))
 +		goto out;
-+
++	if (!is_sync_kiocb(kio)) {
++		/* .vs. sb_start_write() in aio_write() */
++		if (S_ISREG(inode->i_mode))
++			__sb_writers_acquired(inode->i_sb, SB_FREEZE_WRITE);
++		file_end_write(file);
++	}
 +	err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter);
 +	au_write_post(inode, h_file, &wpre, err);
 +
@@ -16212,8 +16232,8 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
 +};
 diff -urN /usr/share/empty/fs/aufs/fsctx.c linux/fs/aufs/fsctx.c
 --- /usr/share/empty/fs/aufs/fsctx.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/fsctx.c	2024-05-13 17:13:00.618070924 +0200
-@@ -0,0 +1,1242 @@
++++ linux/fs/aufs/fsctx.c	2024-07-22 19:12:26.822642909 +0200
+@@ -0,0 +1,1244 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2022 Junjiro R. Okajima
@@ -16276,6 +16296,8 @@ diff -urN /usr/share/empty/fs/aufs/fsctx.c linux/fs/aufs/fsctx.c
 +
 +	root = fc->root;
 +	sb = root->d_sb;
++	root = sb->s_root; /* "bind"-mount may give us non-root */
++	AuDebugOn(!IS_ROOT(root));
 +	err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
 +	if (!err) {
 +		di_write_lock_child(root);
@@ -17458,7 +17480,7 @@ diff -urN /usr/share/empty/fs/aufs/fsctx.c linux/fs/aufs/fsctx.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	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/fstype.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,401 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -17863,7 +17885,7 @@ diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h
 +#endif /* __AUFS_FSTYPE_H__ */
 diff -urN /usr/share/empty/fs/aufs/hbl.h linux/fs/aufs/hbl.h
 --- /usr/share/empty/fs/aufs/hbl.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hbl.h	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/hbl.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,65 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -17932,7 +17954,7 @@ diff -urN /usr/share/empty/fs/aufs/hbl.h linux/fs/aufs/hbl.h
 +#endif /* __AUFS_HBL_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	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/hfsnotify.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,290 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -18226,7 +18248,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c
 +};
 diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c
 --- /usr/share/empty/fs/aufs/hfsplus.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hfsplus.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/hfsplus.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,60 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -18290,7 +18312,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c
 +}
 diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c
 --- /usr/share/empty/fs/aufs/hnotify.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hnotify.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/hnotify.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,715 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -19009,7 +19031,7 @@ diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c
 +}
 diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c
 --- /usr/share/empty/fs/aufs/iinfo.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/iinfo.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/iinfo.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,286 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -19299,7 +19321,7 @@ 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	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/inode.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,531 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -19834,7 +19856,7 @@ 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	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/inode.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,707 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -20545,7 +20567,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
 +#endif /* __AUFS_INODE_H__ */
 diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c
 --- /usr/share/empty/fs/aufs/ioctl.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/ioctl.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/ioctl.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,220 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -20769,7 +20791,7 @@ diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c
 +#endif
 diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 --- /usr/share/empty/fs/aufs/i_op_add.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op_add.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/i_op_add.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,972 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -21745,7 +21767,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +}
 diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 --- /usr/share/empty/fs/aufs/i_op.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/i_op.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,1520 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -23269,7 +23291,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +};
 diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
 --- /usr/share/empty/fs/aufs/i_op_del.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op_del.c	2024-05-13 17:13:00.618070924 +0200
++++ linux/fs/aufs/i_op_del.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,523 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -23796,7 +23818,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
 +}
 diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
 --- /usr/share/empty/fs/aufs/i_op_ren.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op_ren.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/i_op_ren.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,1264 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -25064,7 +25086,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
 +}
 diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig
 --- /usr/share/empty/fs/aufs/Kconfig	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/Kconfig	2024-05-13 17:13:00.614737564 +0200
++++ linux/fs/aufs/Kconfig	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,199 @@
 +# SPDX-License-Identifier: GPL-2.0
 +config AUFS_FS
@@ -25267,7 +25289,7 @@ diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig
 +endif
 diff -urN /usr/share/empty/fs/aufs/lcnt.h linux/fs/aufs/lcnt.h
 --- /usr/share/empty/fs/aufs/lcnt.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/lcnt.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/lcnt.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,186 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -25457,7 +25479,7 @@ diff -urN /usr/share/empty/fs/aufs/lcnt.h linux/fs/aufs/lcnt.h
 +#endif /* __AUFS_LCNT_H__ */
 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	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/loop.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,148 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -25609,7 +25631,7 @@ diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c
 +}
 diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h
 --- /usr/share/empty/fs/aufs/loop.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/loop.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/loop.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,55 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -25668,7 +25690,7 @@ diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h
 +#endif /* __AUFS_LOOP_H__ */
 diff -urN /usr/share/empty/fs/aufs/magic.mk linux/fs/aufs/magic.mk
 --- /usr/share/empty/fs/aufs/magic.mk	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/magic.mk	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/magic.mk	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,31 @@
 +# SPDX-License-Identifier: GPL-2.0
 +
@@ -25703,7 +25725,7 @@ diff -urN /usr/share/empty/fs/aufs/magic.mk linux/fs/aufs/magic.mk
 +endif
 diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile
 --- /usr/share/empty/fs/aufs/Makefile	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/Makefile	2024-05-13 17:13:00.614737564 +0200
++++ linux/fs/aufs/Makefile	2024-07-22 19:12:26.819309532 +0200
 @@ -0,0 +1,46 @@
 +# SPDX-License-Identifier: GPL-2.0
 +
@@ -25753,7 +25775,7 @@ diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile
 +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o
 diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c
 --- /usr/share/empty/fs/aufs/module.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/module.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/module.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,273 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -26030,7 +26052,7 @@ diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c
 +module_exit(aufs_exit);
 diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h
 --- /usr/share/empty/fs/aufs/module.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/module.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/module.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,180 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -26214,7 +26236,7 @@ diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h
 +#endif /* __AUFS_MODULE_H__ */
 diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c
 --- /usr/share/empty/fs/aufs/mvdown.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/mvdown.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/mvdown.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,713 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -26931,8 +26953,8 @@ 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	2024-05-13 17:13:00.621404284 +0200
-@@ -0,0 +1,1032 @@
++++ linux/fs/aufs/opts.c	2024-07-22 19:12:26.822642909 +0200
+@@ -0,0 +1,1030 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -27444,10 +27466,8 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c
 +		if (opt->tf) {
 +			au_opt_set(sbinfo->si_mntflags, DIO);
 +			au_fset_opts(opts->flags, REFRESH_DYAOP);
-+		} else {
-+			au_opt_clr(sbinfo->si_mntflags, DIO);
-+			au_fset_opts(opts->flags, REFRESH_DYAOP);
-+		}
++		} else
++			pr_warn_once("ignored nodio\n");
 +		break;
 +
 +	case Opt_fhsm_sec:
@@ -27967,8 +27987,8 @@ 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	2024-05-13 17:13:00.621404284 +0200
-@@ -0,0 +1,263 @@
++++ linux/fs/aufs/opts.h	2024-07-22 19:12:26.822642909 +0200
+@@ -0,0 +1,264 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -28063,7 +28083,8 @@ diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h
 +			 | AuOpt_UDBA_REVAL \
 +			 | AuOpt_PLINK \
 +			 /* | AuOpt_DIRPERM1 */ \
-+			 | AuOpt_WARN_PERM)
++			 | AuOpt_WARN_PERM \
++			 | AuOpt_DIO)
 +#define AuOptMask_UDBA	(AuOpt_UDBA_NONE \
 +			 | AuOpt_UDBA_REVAL \
 +			 | AuOpt_UDBA_HNOTIFY)
@@ -28234,7 +28255,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h
 +#endif /* __AUFS_OPTS_H__ */
 diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
 --- /usr/share/empty/fs/aufs/plink.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/plink.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/plink.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,516 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28754,7 +28775,7 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
 +}
 diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c
 --- /usr/share/empty/fs/aufs/poll.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/poll.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/poll.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,51 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28809,7 +28830,7 @@ diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c
 +}
 diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
 --- /usr/share/empty/fs/aufs/posix_acl.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/posix_acl.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/posix_acl.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,108 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28921,7 +28942,7 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
 +}
 diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c
 --- /usr/share/empty/fs/aufs/procfs.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/procfs.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/procfs.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,170 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -29095,7 +29116,7 @@ diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c
 +}
 diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c
 --- /usr/share/empty/fs/aufs/rdu.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/rdu.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/rdu.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,384 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -29483,7 +29504,7 @@ diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c
 +#endif
 diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h
 --- /usr/share/empty/fs/aufs/rwsem.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/rwsem.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/rwsem.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,85 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -29539,10 +29560,10 @@ diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h
 +					  && debug_locks		\
 +					  && lockdep_is_held(rw))
 +#else
-+#define AuRwMustReadLock(rw)	do {} while (0)
-+#define AuRwMustWriteLock(rw)	do {} while (0)
-+#define AuRwMustAnyLock(rw)	do {} while (0)
-+#define AuRwDestroy(rw)		do {} while (0)
++AuStubVoid(AuRwMustReadLock, struct rw_semaphore *rw)
++AuStubVoid(AuRwMustWriteLock, struct rw_semaphore *rw)
++AuStubVoid(AuRwMustAnyLock, struct rw_semaphore *rw)
++AuStubVoid(AuRwDestroy, struct rw_semaphore *rw)
 +#endif
 +
 +#define au_rw_init(rw)	init_rwsem(rw)
@@ -29572,7 +29593,7 @@ diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h
 +#endif /* __AUFS_RWSEM_H__ */
 diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
 --- /usr/share/empty/fs/aufs/sbinfo.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sbinfo.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/sbinfo.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,316 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -29892,7 +29913,7 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
 +}
 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	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/super.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,871 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -30767,7 +30788,7 @@ 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	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/super.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,592 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -31363,7 +31384,7 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h
 +#endif /* __AUFS_SUPER_H__ */
 diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c
 --- /usr/share/empty/fs/aufs/sysaufs.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysaufs.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/sysaufs.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,94 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -31461,7 +31482,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c
 +}
 diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h
 --- /usr/share/empty/fs/aufs/sysaufs.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysaufs.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/sysaufs.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,102 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -31567,7 +31588,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h
 +#endif /* __SYSAUFS_H__ */
 diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c
 --- /usr/share/empty/fs/aufs/sysfs.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysfs.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/sysfs.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,374 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -31945,7 +31966,7 @@ diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c
 +}
 diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c
 --- /usr/share/empty/fs/aufs/sysrq.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysrq.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/sysrq.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,149 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -32098,7 +32119,7 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c
 +}
 diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c
 --- /usr/share/empty/fs/aufs/vdir.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vdir.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/vdir.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,896 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -32998,7 +33019,7 @@ diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c
 +}
 diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 --- /usr/share/empty/fs/aufs/vfsub.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vfsub.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/vfsub.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,921 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -33923,7 +33944,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +}
 diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
 --- /usr/share/empty/fs/aufs/vfsub.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vfsub.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/vfsub.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,402 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -34329,7 +34350,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
 +#endif /* __AUFS_VFSUB_H__ */
 diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c
 --- /usr/share/empty/fs/aufs/wbr_policy.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/wbr_policy.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/wbr_policy.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,830 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -35163,7 +35184,7 @@ 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	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/whout.c	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,1072 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -36239,7 +36260,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 +}
 diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h
 --- /usr/share/empty/fs/aufs/whout.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/whout.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/whout.h	2024-07-22 19:12:26.822642909 +0200
 @@ -0,0 +1,87 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -36330,7 +36351,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h
 +#endif /* __AUFS_WHOUT_H__ */
 diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c
 --- /usr/share/empty/fs/aufs/wkq.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/wkq.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/wkq.c	2024-07-22 19:12:26.825976287 +0200
 @@ -0,0 +1,372 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -36706,7 +36727,7 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c
 +}
 diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h
 --- /usr/share/empty/fs/aufs/wkq.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/wkq.h	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/wkq.h	2024-07-22 19:12:26.825976287 +0200
 @@ -0,0 +1,89 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -36799,7 +36820,7 @@ diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h
 +#endif /* __AUFS_WKQ_H__ */
 diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 --- /usr/share/empty/fs/aufs/xattr.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/xattr.c	2024-05-13 17:13:00.621404284 +0200
++++ linux/fs/aufs/xattr.c	2024-07-22 19:12:26.825976287 +0200
 @@ -0,0 +1,360 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -36903,7 +36924,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +				err = 0;
 +			else if (err == -EOPNOTSUPP
 +				 && (ignore_flags & au_xattr_out_of_list))
-+				 err = 0;
++				err = 0;
 +			else if (err && (verbose || au_debug_test()))
 +				pr_err("%s, err %d\n", name, err);
 +			goto out;
@@ -37163,7 +37184,7 @@ 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	2024-05-13 17:13:00.624737645 +0200
++++ linux/fs/aufs/xino.c	2024-07-22 19:12:26.825976287 +0200
 @@ -0,0 +1,1926 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -39093,7 +39114,7 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c
 +}
 diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/linux/aufs_type.h
 --- /usr/share/empty/include/uapi/linux/aufs_type.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/include/uapi/linux/aufs_type.h	2024-05-13 17:13:00.624737645 +0200
++++ linux/include/uapi/linux/aufs_type.h	2024-07-22 19:12:26.825976287 +0200
 @@ -0,0 +1,452 @@
 +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 +/*
@@ -39137,7 +39158,7 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin
 +#include <limits.h>
 +#endif /* __KERNEL__ */
 +
-+#define AUFS_VERSION	"6.x-rcN-20240401"
++#define AUFS_VERSION	"6.10-20240722"
 +
 +/* todo? move this to linux-2.6.19/include/magic.h */
 +#define AUFS_SUPER_MAGIC	('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
@@ -39548,10 +39569,10 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin
 +
 +#endif /* __AUFS_TYPE_H__ */
 SPDX-License-Identifier: GPL-2.0
-aufs6.x-rcN loopback patch
+aufs6.10 loopback patch
 
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 6bd18fb1e53a..a93fab1797e2 100644
+index bfe45a940de8..f802e623b2fd 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 @@ -54,7 +54,7 @@ struct loop_device {
@@ -39563,7 +39584,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	struct block_device *lo_device;
  
  	gfp_t		old_gfp_mask;
-@@ -506,6 +506,15 @@ static inline void loop_update_dio(struct loop_device *lo)
+@@ -529,6 +529,15 @@ static inline void loop_update_dio(struct loop_device *lo)
  				lo->use_dio);
  }
  
@@ -39579,7 +39600,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  static void loop_reread_partitions(struct loop_device *lo)
  {
  	int rc;
-@@ -563,6 +572,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -586,6 +595,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  {
  	struct file *file = fget(arg);
  	struct file *old_file;
@@ -39587,7 +39608,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	int error;
  	bool partscan;
  	bool is_loop;
-@@ -586,11 +596,19 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -609,11 +619,19 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  	if (!(lo->lo_flags & LO_FLAGS_READ_ONLY))
  		goto out_err;
  
@@ -39607,7 +39628,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  
  	error = -EINVAL;
  
-@@ -603,6 +621,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -626,6 +644,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  	blk_mq_freeze_queue(lo->lo_queue);
  	mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
  	lo->lo_backing_file = file;
@@ -39615,7 +39636,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
  	mapping_set_gfp_mask(file->f_mapping,
  			     lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
-@@ -625,6 +644,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -648,6 +667,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  	 * dependency.
  	 */
  	fput(old_file);
@@ -39624,7 +39645,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	if (partscan)
  		loop_reread_partitions(lo);
  
-@@ -638,6 +659,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -661,6 +682,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  	loop_global_unlock(lo, is_loop);
  out_putf:
  	fput(file);
@@ -39633,7 +39654,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	goto done;
  }
  
-@@ -1014,6 +1037,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
+@@ -1037,6 +1060,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
  			  const struct loop_config *config)
  {
  	struct file *file = fget(config->fd);
@@ -39641,7 +39662,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	struct inode *inode;
  	struct address_space *mapping;
  	int error;
-@@ -1029,6 +1053,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
+@@ -1052,6 +1076,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
  	/* This is safe, since we have a reference from open(). */
  	__module_get(THIS_MODULE);
  
@@ -39655,7 +39676,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	/*
  	 * If we don't hold exclusive handle for the device, upgrade to it
  	 * here to avoid changing device under exclusive owner.
-@@ -1092,6 +1123,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
+@@ -1115,6 +1146,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
  	lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
  	lo->lo_device = bdev;
  	lo->lo_backing_file = file;
@@ -39663,7 +39684,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	lo->old_gfp_mask = mapping_gfp_mask(mapping);
  	mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
  
-@@ -1146,6 +1178,8 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
+@@ -1169,6 +1201,8 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
  		bd_abort_claiming(bdev, loop_configure);
  out_putf:
  	fput(file);
@@ -39672,7 +39693,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	/* This is safe: open() is still holding a reference. */
  	module_put(THIS_MODULE);
  	return error;
-@@ -1154,6 +1188,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
+@@ -1177,6 +1211,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
  static void __loop_clr_fd(struct loop_device *lo, bool release)
  {
  	struct file *filp;
@@ -39680,7 +39701,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	gfp_t gfp = lo->old_gfp_mask;
  
  	if (test_bit(QUEUE_FLAG_WC, &lo->lo_queue->queue_flags))
-@@ -1170,6 +1205,7 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)
+@@ -1193,6 +1228,7 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)
  	spin_lock_irq(&lo->lo_lock);
  	filp = lo->lo_backing_file;
  	lo->lo_backing_file = NULL;
@@ -39688,7 +39709,7 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  	spin_unlock_irq(&lo->lo_lock);
  
  	lo->lo_device = NULL;
-@@ -1230,6 +1266,8 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)
+@@ -1253,6 +1289,8 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)
  	 * fput can take open_mutex which is usually taken before lo_mutex.
  	 */
  	fput(filp);
@@ -39698,10 +39719,10 @@ index 6bd18fb1e53a..a93fab1797e2 100644
  
  static int loop_clr_fd(struct loop_device *lo)
 diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
-index fa8a517ffd0c..c18f7bcef81b 100644
+index d109c1392d60..dfe82d9c6292 100644
 --- a/fs/aufs/f_op.c
 +++ b/fs/aufs/f_op.c
-@@ -311,7 +311,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
+@@ -317,7 +317,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
  	if (IS_ERR(h_file))
  		goto out;
  
@@ -39773,10 +39794,10 @@ index 07d3412e950f..c4a00f620e57 100644
  
  /* ---------------------------------------------------------------------- */
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index b3a73aed62b8..97aa5e94fa31 100644
+index d36e42c7406d..8e3589a30a8a 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -2188,6 +2188,11 @@ struct super_operations {
+@@ -2183,6 +2183,11 @@ struct super_operations {
  	long (*free_cached_objects)(struct super_block *,
  				    struct shrink_control *);
  	void (*shutdown)(struct super_block *sb);
diff --git a/update-source.sh b/update-source.sh
index 3fa1e7bb..f6314b7d 100755
--- a/update-source.sh
+++ b/update-source.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 set -xe
 
-#BRANCH=aufs6.6
+#BRANCH=aufs6.10
 BRANCH=aufs6.x-rcN
 
 # aufs6
================================================================

---- gitweb:

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



More information about the pld-cvs-commit mailing list