[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