commit 0033748011e72e2d9b5caec6ef08fc08bc40b938
Author: Jan RÄ™korajski <[email protected]>
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 <[email protected]>
  R:    Dave Ertman <[email protected]>
 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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to