From a0a9a20c09e8fd88a41bb34a6c082fca79858ed5 Mon Sep 17 00:00:00 2001 From: Rmys Date: Sun, 22 May 2022 18:57:17 +0300 Subject: [PATCH] kernel-5.15.41 --- .../perf/files/patches/aufs5/aufs5-base.patch | 241 + .../files/patches/aufs5/aufs5-kbuild.patch | 24 + .../files/patches/aufs5/aufs5-loopback.patch | 244 + .../perf/files/patches/aufs5/aufs5-mmap.patch | 419 + .../patches/aufs5/aufs5-standalone.patch | 251 + .../patches/aufs5/aufs5.15.36-20220509.patch | 38475 ++++++++++++ .../perf/files/patches/aufs5/tmpfs-idr.patch | 221 + .../perf/files/patches/aufs5/vfs-ino.patch | 24 + .../perf/files/patches/linux/patch-5.10.15.xz | Bin 486748 -> 0 bytes .../perf/files/patches/linux/patch-5.10.19.xz | Bin 535612 -> 0 bytes .../perf/files/patches/linux/patch-5.10.41.xz | Bin 1386280 -> 0 bytes .../perf/files/patches/linux/patch-5.10.45.xz | Bin 1500484 -> 0 bytes .../perf/files/patches/linux/patch-5.15.41.xz | Bin 0 -> 1725572 bytes .../patches/mageia/3rd-3rdparty-merge.patch | 64 +- .../patches/mageia/3rd-fix-kconfig.patch | 11 - .../mageia/3rd-rtl8812au-kernel-5.12.patch | 12 + .../mageia/3rd-rtl8812au-kernel-5.15.patch | 66 + .../patches/mageia/3rd-rtl8812au-rename.patch | 42 +- .../files/patches/mageia/3rd-rtl8812au.patch | 50186 ++++++++-------- .../mageia/3rd-rtl8821ce-kernel-5.12.patch | 12 + .../mageia/3rd-rtl8821ce-kernel-5.15.patch | 66 + .../mageia/fs-aufs5.15-symbol-exports.patch | 260 + .../patches/mageia/fs-aufs5.15-tristate.patch | 24 + .../files/patches/mageia/fs-aufs5.15.patch | 38061 ++++++++++++ ...s-do-not-list-TID-0-in-proc-pid-task.patch | 36 + .../platform-x86-add-shuttle-wmi-driver.patch | 1439 + ...atform-x86-shuttle-wmi-4.13-buildfix.patch | 30 + ...latform-x86-shuttle-wmi-4.2-buildfix.patch | 19 + ...rm-x86-shuttle-wmi-drop-devinit-exit.patch | 38 + .../platform-x86-shuttle-wmi-kernel-5.5.patch | 35 + kernel/tools/perf/pspec.xml | 52 +- 31 files changed, 104550 insertions(+), 25802 deletions(-) create mode 100644 kernel/tools/perf/files/patches/aufs5/aufs5-base.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/aufs5-kbuild.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/aufs5-loopback.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/aufs5-mmap.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/aufs5-standalone.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/aufs5.15.36-20220509.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/tmpfs-idr.patch create mode 100644 kernel/tools/perf/files/patches/aufs5/vfs-ino.patch delete mode 100644 kernel/tools/perf/files/patches/linux/patch-5.10.15.xz delete mode 100644 kernel/tools/perf/files/patches/linux/patch-5.10.19.xz delete mode 100644 kernel/tools/perf/files/patches/linux/patch-5.10.41.xz delete mode 100644 kernel/tools/perf/files/patches/linux/patch-5.10.45.xz create mode 100644 kernel/tools/perf/files/patches/linux/patch-5.15.41.xz create mode 100644 kernel/tools/perf/files/patches/mageia/3rd-rtl8812au-kernel-5.12.patch create mode 100644 kernel/tools/perf/files/patches/mageia/3rd-rtl8812au-kernel-5.15.patch create mode 100644 kernel/tools/perf/files/patches/mageia/3rd-rtl8821ce-kernel-5.12.patch create mode 100644 kernel/tools/perf/files/patches/mageia/3rd-rtl8821ce-kernel-5.15.patch create mode 100644 kernel/tools/perf/files/patches/mageia/fs-aufs5.15-symbol-exports.patch create mode 100644 kernel/tools/perf/files/patches/mageia/fs-aufs5.15-tristate.patch create mode 100644 kernel/tools/perf/files/patches/mageia/fs-aufs5.15.patch create mode 100644 kernel/tools/perf/files/patches/mageia/fs-procfs-do-not-list-TID-0-in-proc-pid-task.patch create mode 100644 kernel/tools/perf/files/patches/mageia/platform-x86-add-shuttle-wmi-driver.patch create mode 100644 kernel/tools/perf/files/patches/mageia/platform-x86-shuttle-wmi-4.13-buildfix.patch create mode 100644 kernel/tools/perf/files/patches/mageia/platform-x86-shuttle-wmi-4.2-buildfix.patch create mode 100644 kernel/tools/perf/files/patches/mageia/platform-x86-shuttle-wmi-drop-devinit-exit.patch create mode 100644 kernel/tools/perf/files/patches/mageia/platform-x86-shuttle-wmi-kernel-5.5.patch diff --git a/kernel/tools/perf/files/patches/aufs5/aufs5-base.patch b/kernel/tools/perf/files/patches/aufs5/aufs5-base.patch new file mode 100644 index 0000000000..42ebd27110 --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/aufs5-base.patch @@ -0,0 +1,241 @@ +SPDX-License-Identifier: GPL-2.0 +aufs5.15.36 base patch + +diff --git a/MAINTAINERS b/MAINTAINERS +index c8103e57a70b..e1b9eaca78fd 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -3122,6 +3122,19 @@ F: include/uapi/linux/audit.h + F: kernel/audit* + F: lib/*audit.c + ++AUFS (advanced multi layered unification filesystem) FILESYSTEM ++M: "J. R. Okajima" ++L: aufs-users@lists.sourceforge.net (members only) ++L: linux-unionfs@vger.kernel.org ++S: Supported ++W: http://aufs.sourceforge.net ++T: git://github.com/sfjro/aufs4-linux.git ++F: Documentation/ABI/testing/debugfs-aufs ++F: Documentation/ABI/testing/sysfs-aufs ++F: Documentation/filesystems/aufs/ ++F: fs/aufs/ ++F: include/uapi/linux/aufs_type.h ++ + AUXILIARY DISPLAY DRIVERS + M: Miguel Ojeda + S: Maintained +diff --git a/drivers/block/loop.c b/drivers/block/loop.c +index 8cba10aafadb..7a9e40b97831 100644 +--- a/drivers/block/loop.c ++++ b/drivers/block/loop.c +@@ -799,6 +799,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + return error; + } + ++/* ++ * for AUFS ++ * no get/put for file. ++ */ ++struct file *loop_backing_file(struct super_block *sb) ++{ ++ struct file *ret; ++ struct loop_device *l; ++ ++ ret = NULL; ++ if (MAJOR(sb->s_dev) == LOOP_MAJOR) { ++ l = sb->s_bdev->bd_disk->private_data; ++ ret = l->lo_backing_file; ++ } ++ return ret; ++} ++EXPORT_SYMBOL_GPL(loop_backing_file); ++ + /* loop sysfs attributes */ + + static ssize_t loop_attr_show(struct device *dev, char *page, +diff --git a/fs/dcache.c b/fs/dcache.c +index cf871a81f4fd..bc5095b734f5 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -1320,7 +1320,7 @@ enum d_walk_ret { + * + * The @enter() callbacks are called with d_lock held. + */ +-static void d_walk(struct dentry *parent, void *data, ++void d_walk(struct dentry *parent, void *data, + enum d_walk_ret (*enter)(void *, struct dentry *)) + { + struct dentry *this_parent; +diff --git a/fs/fcntl.c b/fs/fcntl.c +index 9c6c6a3e2de5..02382fa9bd34 100644 +--- a/fs/fcntl.c ++++ b/fs/fcntl.c +@@ -33,7 +33,7 @@ + + #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) + +-static int setfl(int fd, struct file * filp, unsigned long arg) ++int setfl(int fd, struct file *filp, unsigned long arg) + { + struct inode * inode = file_inode(filp); + int error = 0; +@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg) + + if (filp->f_op->check_flags) + error = filp->f_op->check_flags(arg); ++ if (!error && filp->f_op->setfl) ++ error = filp->f_op->setfl(filp, arg); + if (error) + return error; + +diff --git a/fs/namespace.c b/fs/namespace.c +index b696543adab8..c45740054bc7 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -808,6 +808,12 @@ static inline int check_mnt(struct mount *mnt) + return mnt->mnt_ns == current->nsproxy->mnt_ns; + } + ++/* for aufs, CONFIG_AUFS_BR_FUSE */ ++int is_current_mnt_ns(struct vfsmount *mnt) ++{ ++ return check_mnt(real_mount(mnt)); ++} ++ + /* + * vfsmount lock must be held for write + */ +diff --git a/fs/splice.c b/fs/splice.c +index 5dbce4dcc1a7..3e6ba363b777 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -759,8 +759,8 @@ static int warn_unsupported(struct file *file, const char *op) + /* + * Attempt to initiate a splice from pipe to file. + */ +-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +- loff_t *ppos, size_t len, unsigned int flags) ++long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags) + { + if (unlikely(!out->f_op->splice_write)) + return warn_unsupported(out, "write"); +@@ -770,9 +770,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + /* + * Attempt to initiate a splice from a file to a pipe. + */ +-static long do_splice_to(struct file *in, loff_t *ppos, +- struct pipe_inode_info *pipe, size_t len, +- unsigned int flags) ++long do_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags) + { + unsigned int p_space; + int ret; +diff --git a/include/linux/fs.h b/include/linux/fs.h +index 56eba723477e..e60d8ad85400 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -1381,6 +1381,7 @@ extern void fasync_free(struct fasync_struct *); + /* can be called from interrupts */ + extern void kill_fasync(struct fasync_struct **, int, int); + ++extern int setfl(int fd, struct file *filp, unsigned long arg); + extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); + extern int f_setown(struct file *filp, unsigned long arg, int force); + extern void f_delown(struct file *filp); +@@ -2092,6 +2093,7 @@ struct file_operations { + ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); + unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); + int (*check_flags)(int); ++ int (*setfl)(struct file *, unsigned long); + int (*flock) (struct file *, int, struct file_lock *); + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); + ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); +@@ -2615,6 +2617,7 @@ extern int current_umask(void); + extern void ihold(struct inode * inode); + extern void iput(struct inode *); + extern int generic_update_time(struct inode *, struct timespec64 *, int); ++extern int update_time(struct inode *, struct timespec64 *, int); + + /* /sys/fs */ + extern struct kobject *fs_kobj; +@@ -2778,6 +2781,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) + } + + void emergency_thaw_all(void); ++extern int __sync_filesystem(struct super_block *, int); + extern int sync_filesystem(struct super_block *); + extern const struct file_operations def_blk_fops; + extern const struct file_operations def_chr_fops; +diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h +index 9fe165beb0f9..e47f7e15eeaf 100644 +--- a/include/linux/lockdep.h ++++ b/include/linux/lockdep.h +@@ -248,6 +248,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, + return lock->key == key; + } + ++struct lock_class *lockdep_hlock_class(struct held_lock *hlock); ++ + /* + * Acquire a lock. + * +diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h +index 8f882f5881e8..6b9808f09843 100644 +--- a/include/linux/mnt_namespace.h ++++ b/include/linux/mnt_namespace.h +@@ -7,12 +7,15 @@ struct mnt_namespace; + struct fs_struct; + struct user_namespace; + struct ns_common; ++struct vfsmount; + + extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, + struct user_namespace *, struct fs_struct *); + extern void put_mnt_ns(struct mnt_namespace *ns); + extern struct ns_common *from_mnt_ns(struct mnt_namespace *); + ++extern int is_current_mnt_ns(struct vfsmount *mnt); ++ + extern const struct file_operations proc_mounts_operations; + extern const struct file_operations proc_mountinfo_operations; + extern const struct file_operations proc_mountstats_operations; +diff --git a/include/linux/splice.h b/include/linux/splice.h +index a55179fd60fc..8e21c53cf883 100644 +--- a/include/linux/splice.h ++++ b/include/linux/splice.h +@@ -93,4 +93,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *); + + extern const struct pipe_buf_operations page_cache_pipe_buf_ops; + extern const struct pipe_buf_operations default_pipe_buf_ops; ++ ++extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags); ++extern long do_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags); + #endif +diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c +index a30702b847ba..ce380d0abdf0 100644 +--- a/kernel/locking/lockdep.c ++++ b/kernel/locking/lockdep.c +@@ -187,7 +187,7 @@ unsigned long max_lock_class_idx; + struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; + DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); + +-static inline struct lock_class *hlock_class(struct held_lock *hlock) ++inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) + { + unsigned int class_idx = hlock->class_idx; + +@@ -208,6 +208,7 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock) + */ + return lock_classes + class_idx; + } ++#define hlock_class(hlock) lockdep_hlock_class(hlock) + + #ifdef CONFIG_LOCK_STAT + static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); diff --git a/kernel/tools/perf/files/patches/aufs5/aufs5-kbuild.patch b/kernel/tools/perf/files/patches/aufs5/aufs5-kbuild.patch new file mode 100644 index 0000000000..79c3f92c55 --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/aufs5-kbuild.patch @@ -0,0 +1,24 @@ +SPDX-License-Identifier: GPL-2.0 +aufs5.15.36 kbuild patch + +diff --git a/fs/Kconfig b/fs/Kconfig +index a6313a969bc5..aca4b89d41a1 100644 +--- a/fs/Kconfig ++++ b/fs/Kconfig +@@ -312,6 +312,7 @@ source "fs/sysv/Kconfig" + source "fs/ufs/Kconfig" + source "fs/erofs/Kconfig" + source "fs/vboxsf/Kconfig" ++source "fs/aufs/Kconfig" + + endif # MISC_FILESYSTEMS + +diff --git a/fs/Makefile b/fs/Makefile +index 84c5e4cdfee5..b4fcdad8412e 100644 +--- a/fs/Makefile ++++ b/fs/Makefile +@@ -138,3 +138,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ + obj-$(CONFIG_EROFS_FS) += erofs/ + obj-$(CONFIG_VBOXSF_FS) += vboxsf/ + obj-$(CONFIG_ZONEFS_FS) += zonefs/ ++obj-$(CONFIG_AUFS_FS) += aufs/ diff --git a/kernel/tools/perf/files/patches/aufs5/aufs5-loopback.patch b/kernel/tools/perf/files/patches/aufs5/aufs5-loopback.patch new file mode 100644 index 0000000000..1011fb54a4 --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/aufs5-loopback.patch @@ -0,0 +1,244 @@ +SPDX-License-Identifier: GPL-2.0 +aufs5.15.36 loopback patch + +diff --git a/drivers/block/loop.c b/drivers/block/loop.c +index 7a9e40b97831..5ed06240cc9c 100644 +--- a/drivers/block/loop.c ++++ b/drivers/block/loop.c +@@ -673,6 +673,15 @@ static inline void loop_update_dio(struct loop_device *lo) + lo->use_dio); + } + ++static struct file *loop_real_file(struct file *file) ++{ ++ struct file *f = NULL; ++ ++ if (file->f_path.dentry->d_sb->s_op->real_loop) ++ f = file->f_path.dentry->d_sb->s_op->real_loop(file); ++ return f; ++} ++ + static void loop_reread_partitions(struct loop_device *lo) + { + int rc; +@@ -730,6 +739,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + { + struct file *file = fget(arg); + struct file *old_file; ++ struct file *f, *virt_file = NULL, *old_virt_file; + int error; + bool partscan; + bool is_loop; +@@ -749,11 +759,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; + ++ f = loop_real_file(file); ++ if (f) { ++ virt_file = file; ++ file = f; ++ get_file(file); ++ } ++ + error = loop_validate_file(file, bdev); + if (error) + goto out_err; + + old_file = lo->lo_backing_file; ++ old_virt_file = lo->lo_backing_virt_file; + + error = -EINVAL; + +@@ -766,6 +784,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; ++ lo->lo_backing_virt_file = virt_file; + 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)); +@@ -788,6 +807,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + * dependency. + */ + fput(old_file); ++ if (old_virt_file) ++ fput(old_virt_file); + if (partscan) + loop_reread_partitions(lo); + return 0; +@@ -796,6 +817,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + loop_global_unlock(lo, is_loop); + out_putf: + fput(file); ++ if (virt_file) ++ fput(virt_file); + return error; + } + +@@ -1201,6 +1224,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, + const struct loop_config *config) + { + struct file *file = fget(config->fd); ++ struct file *f, *virt_file = NULL; + struct inode *inode; + struct address_space *mapping; + int error; +@@ -1216,6 +1240,13 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, + /* This is safe, since we have a reference from open(). */ + __module_get(THIS_MODULE); + ++ f = loop_real_file(file); ++ if (f) { ++ virt_file = file; ++ file = f; ++ get_file(file); ++ } ++ + /* + * If we don't hold exclusive handle for the device, upgrade to it + * here to avoid changing device under exclusive owner. +@@ -1281,6 +1312,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, + lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO; + lo->lo_device = bdev; + lo->lo_backing_file = file; ++ lo->lo_backing_virt_file = virt_file; + lo->old_gfp_mask = mapping_gfp_mask(mapping); + mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); + +@@ -1331,6 +1363,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, + bd_abort_claiming(bdev, loop_configure); + out_putf: + fput(file); ++ if (virt_file) ++ fput(virt_file); + /* This is safe: open() is still holding a reference. */ + module_put(THIS_MODULE); + return error; +@@ -1339,6 +1373,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, + static int __loop_clr_fd(struct loop_device *lo, bool release) + { + struct file *filp = NULL; ++ struct file *virt_filp = lo->lo_backing_virt_file; + gfp_t gfp = lo->old_gfp_mask; + struct block_device *bdev = lo->lo_device; + int err = 0; +@@ -1390,6 +1425,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) + + spin_lock_irq(&lo->lo_lock); + lo->lo_backing_file = NULL; ++ lo->lo_backing_virt_file = NULL; + spin_unlock_irq(&lo->lo_lock); + + loop_release_xfer(lo); +@@ -1470,6 +1506,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) + */ + if (filp) + fput(filp); ++ if (virt_filp) ++ fput(virt_filp); + return err; + } + +diff --git a/drivers/block/loop.h b/drivers/block/loop.h +index 04c88dd6eabd..0ff3ba22ee17 100644 +--- a/drivers/block/loop.h ++++ b/drivers/block/loop.h +@@ -46,7 +46,7 @@ struct loop_device { + int (*ioctl)(struct loop_device *, int cmd, + unsigned long arg); + +- struct file * lo_backing_file; ++ struct file *lo_backing_file, *lo_backing_virt_file; + struct block_device *lo_device; + void *key_data; + +diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c +index 99ceca144044..e49dfe855032 100644 +--- a/fs/aufs/f_op.c ++++ b/fs/aufs/f_op.c +@@ -304,7 +304,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) + if (IS_ERR(h_file)) + goto out; + +- if (au_test_loopback_kthread()) { ++ if (0 && au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_path.dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; +diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c +index 74347bd75b38..5ef888a1d53f 100644 +--- a/fs/aufs/loop.c ++++ b/fs/aufs/loop.c +@@ -133,3 +133,19 @@ void au_loopback_fin(void) + symbol_put(loop_backing_file); + au_kfree_try_rcu(au_warn_loopback_array); + } ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* support the loopback block device insude aufs */ ++ ++struct file *aufs_real_loop(struct file *file) ++{ ++ struct file *f; ++ ++ BUG_ON(!au_test_aufs(file->f_path.dentry->d_sb)); ++ fi_read_lock(file); ++ f = au_hf_top(file); ++ fi_read_unlock(file); ++ AuDebugOn(!f); ++ return f; ++} +diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h +index 7293bee427f9..3345c098d0d4 100644 +--- a/fs/aufs/loop.h ++++ b/fs/aufs/loop.h +@@ -26,6 +26,8 @@ void au_warn_loopback(struct super_block *h_sb); + + int au_loopback_init(void); + void au_loopback_fin(void); ++ ++struct file *aufs_real_loop(struct file *file); + #else + AuStub(struct file *, loop_backing_file, return NULL, struct super_block *sb) + +@@ -36,6 +38,8 @@ AuStubVoid(au_warn_loopback, struct super_block *h_sb) + + AuStubInt0(au_loopback_init, void) + AuStubVoid(au_loopback_fin, void) ++ ++AuStub(struct file *, aufs_real_loop, return NULL, struct file *file) + #endif /* BLK_DEV_LOOP */ + + #endif /* __KERNEL__ */ +diff --git a/fs/aufs/super.c b/fs/aufs/super.c +index 90043afec51c..0835f6da42d9 100644 +--- a/fs/aufs/super.c ++++ b/fs/aufs/super.c +@@ -758,7 +758,10 @@ const struct super_operations aufs_sop = { + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, +- .sync_fs = aufs_sync_fs ++ .sync_fs = aufs_sync_fs, ++#ifdef CONFIG_AUFS_BDEV_LOOP ++ .real_loop = aufs_real_loop ++#endif + }; + + /* ---------------------------------------------------------------------- */ +diff --git a/include/linux/fs.h b/include/linux/fs.h +index e60d8ad85400..2ac5317f9b79 100644 +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -2226,6 +2226,10 @@ struct super_operations { + struct shrink_control *); + long (*free_cached_objects)(struct super_block *, + struct shrink_control *); ++#if IS_ENABLED(CONFIG_BLK_DEV_LOOP) || IS_ENABLED(CONFIG_BLK_DEV_LOOP_MODULE) ++ /* and aufs */ ++ struct file *(*real_loop)(struct file *); ++#endif + }; + + /* diff --git a/kernel/tools/perf/files/patches/aufs5/aufs5-mmap.patch b/kernel/tools/perf/files/patches/aufs5/aufs5-mmap.patch new file mode 100644 index 0000000000..a8b2040c77 --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/aufs5-mmap.patch @@ -0,0 +1,419 @@ +SPDX-License-Identifier: GPL-2.0 +aufs5.15.36 mmap patch + +diff --git a/fs/proc/base.c b/fs/proc/base.c +index 1f394095eb88..93f2479ef319 100644 +--- a/fs/proc/base.c ++++ b/fs/proc/base.c +@@ -2189,7 +2189,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path) + rc = -ENOENT; + vma = find_exact_vma(mm, vm_start, vm_end); + if (vma && vma->vm_file) { +- *path = vma->vm_file->f_path; ++ *path = vma_pr_or_file(vma)->f_path; + path_get(path); + rc = 0; + } +diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c +index 13452b32e2bd..38acccfef9d4 100644 +--- a/fs/proc/nommu.c ++++ b/fs/proc/nommu.c +@@ -40,7 +40,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) + file = region->vm_file; + + if (file) { +- struct inode *inode = file_inode(region->vm_file); ++ struct inode *inode; ++ ++ file = vmr_pr_or_file(region); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + } +diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c +index 79ca4d69dfd6..3d3067c8d868 100644 +--- a/fs/proc/task_mmu.c ++++ b/fs/proc/task_mmu.c +@@ -280,7 +280,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma) + const char *name = NULL; + + if (file) { +- struct inode *inode = file_inode(vma->vm_file); ++ struct inode *inode; ++ ++ file = vma_pr_or_file(vma); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + ino = inode->i_ino; + pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; +@@ -1888,7 +1891,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; +- struct file *file = vma->vm_file; ++ struct file *file = vma_pr_or_file(vma); + struct mm_struct *mm = vma->vm_mm; + struct mempolicy *pol; + char buffer[64]; +diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c +index a6d21fc0033c..02c2de31196e 100644 +--- a/fs/proc/task_nommu.c ++++ b/fs/proc/task_nommu.c +@@ -155,7 +155,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma) + file = vma->vm_file; + + if (file) { +- struct inode *inode = file_inode(vma->vm_file); ++ struct inode *inode; ++ ++ file = vma_pr_or_file(vma); ++ inode = file_inode(file); + dev = inode->i_sb->s_dev; + 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 90c2d7f3c7a8..ab1b20fa5837 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -1813,6 +1813,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, + unmap_mapping_range(mapping, holebegin, holelen, 0); + } + ++#if IS_ENABLED(CONFIG_AUFS_FS) ++extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); ++extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], ++ int); ++extern void vma_do_get_file(struct vm_area_struct *, const char[], int); ++extern void vma_do_fput(struct vm_area_struct *, const char[], int); ++ ++#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ ++ __LINE__) ++#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ ++ __LINE__) ++#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) ++#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) ++ ++#ifndef CONFIG_MMU ++extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); ++extern void vmr_do_fput(struct vm_region *, const char[], int); ++ ++#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ ++ __LINE__) ++#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) ++#endif /* !CONFIG_MMU */ ++ ++#else ++ ++#define vma_file_update_time(vma) file_update_time((vma)->vm_file) ++#define vma_pr_or_file(vma) (vma)->vm_file ++#define vma_get_file(vma) get_file((vma)->vm_file) ++#define vma_fput(vma) fput((vma)->vm_file) ++ ++#ifndef CONFIG_MMU ++#define vmr_pr_or_file(region) (region)->vm_file ++#define vmr_fput(region) fput((region)->vm_file) ++#endif /* !CONFIG_MMU */ ++ ++#endif /* CONFIG_AUFS_FS */ ++ + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, + 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 7f8ee09c711f..8fea872e08f7 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h +@@ -294,6 +294,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 */ ++#if IS_ENABLED(CONFIG_AUFS_FS) ++ struct file *vm_prfile; /* the virtual backing file or NULL */ ++#endif + + int vm_usage; /* region usage count (access under nommu_region_sem) */ + bool vm_icache_flushed : 1; /* true if the icache has been flushed for +@@ -373,6 +376,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). */ ++#if IS_ENABLED(CONFIG_AUFS_FS) ++ struct file *vm_prfile; /* shadow of vm_file */ ++#endif + void * vm_private_data; /* was vm_pte (shared mem) */ + + #ifdef CONFIG_SWAP +diff --git a/kernel/fork.c b/kernel/fork.c +index 89475c994ca9..82f46f8f4090 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -573,7 +573,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, + if (file) { + struct address_space *mapping = file->f_mapping; + +- get_file(file); ++ vma_get_file(tmp); + i_mmap_lock_write(mapping); + if (tmp->vm_flags & VM_SHARED) + mapping_allow_writable(mapping); +diff --git a/mm/Makefile b/mm/Makefile +index fc60a40ce954..d45773672730 100644 +--- a/mm/Makefile ++++ b/mm/Makefile +@@ -130,3 +130,4 @@ obj-$(CONFIG_PAGE_REPORTING) += page_reporting.o + obj-$(CONFIG_IO_MAPPING) += io-mapping.o + obj-$(CONFIG_HAVE_BOOTMEM_INFO_NODE) += bootmem_info.o + obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o ++obj-$(CONFIG_AUFS_FS:m=y) += prfile.o +diff --git a/mm/filemap.c b/mm/filemap.c +index 1293c3409e42..42b012b99f4e 100644 +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -3353,7 +3353,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); +- file_update_time(vmf->vma->vm_file); ++ vma_file_update_time(vmf->vma); + lock_page(page); + if (page->mapping != mapping) { + unlock_page(page); +diff --git a/mm/mmap.c b/mm/mmap.c +index 6bb553ed5c55..3f9d6d155171 100644 +--- a/mm/mmap.c ++++ b/mm/mmap.c +@@ -183,7 +183,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) + if (vma->vm_ops && vma->vm_ops->close) + vma->vm_ops->close(vma); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + mpol_put(vma_policy(vma)); + vm_area_free(vma); + return next; +@@ -952,7 +952,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, + if (remove_next) { + if (file) { + uprobe_munmap(next, next->vm_start, next->vm_end); +- fput(file); ++ vma_fput(vma); + } + if (next->anon_vma) + anon_vma_merge(vma, next); +@@ -1873,7 +1873,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, + return addr; + + unmap_and_free_vma: +- fput(vma->vm_file); ++ vma_fput(vma); + vma->vm_file = NULL; + + /* Undo any partial mapping done by a device driver. */ +@@ -2723,7 +2723,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, + goto out_free_mpol; + + if (new->vm_file) +- get_file(new->vm_file); ++ vma_get_file(new); + + if (new->vm_ops && new->vm_ops->open) + new->vm_ops->open(new); +@@ -2742,7 +2742,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, + if (new->vm_ops && new->vm_ops->close) + new->vm_ops->close(new); + if (new->vm_file) +- fput(new->vm_file); ++ vma_fput(new); + unlink_anon_vmas(new); + out_free_mpol: + mpol_put(vma_policy(new)); +@@ -2938,6 +2938,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + unsigned long populate = 0; + unsigned long ret = -EINVAL; + struct file *file; ++#if IS_ENABLED(CONFIG_AUFS_FS) ++ struct file *prfile; ++#endif + + pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", + current->comm, current->pid); +@@ -2993,10 +2996,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + if (vma->vm_flags & VM_LOCKED) + flags |= MAP_LOCKED; + ++#if IS_ENABLED(CONFIG_AUFS_FS) ++ vma_get_file(vma); ++ file = vma->vm_file; ++ prfile = vma->vm_prfile; ++ ret = do_mmap(vma->vm_file, start, size, ++ prot, flags, pgoff, &populate, NULL); ++ if (!IS_ERR_VALUE(ret) && file && prfile) { ++ struct vm_area_struct *new_vma; ++ ++ new_vma = find_vma(mm, ret); ++ if (!new_vma->vm_prfile) ++ new_vma->vm_prfile = prfile; ++ if (new_vma != vma) ++ get_file(prfile); ++ } ++ /* ++ * two fput()s instead of vma_fput(vma), ++ * coz vma may not be available anymore. ++ */ ++ fput(file); ++ if (prfile) ++ fput(prfile); ++#else + file = get_file(vma->vm_file); + ret = do_mmap(vma->vm_file, start, size, + prot, flags, pgoff, &populate, NULL); + fput(file); ++#endif /* CONFIG_AUFS_FS */ + out: + mmap_write_unlock(mm); + if (populate) +@@ -3277,7 +3304,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) +- get_file(new_vma->vm_file); ++ vma_get_file(new_vma); + if (new_vma->vm_ops && new_vma->vm_ops->open) + new_vma->vm_ops->open(new_vma); + vma_link(mm, new_vma, prev, rb_link, rb_parent); +diff --git a/mm/nommu.c b/mm/nommu.c +index 02d2427b8f9e..a7419302ab4e 100644 +--- a/mm/nommu.c ++++ b/mm/nommu.c +@@ -523,7 +523,7 @@ static void __put_nommu_region(struct vm_region *region) + up_write(&nommu_region_sem); + + if (region->vm_file) +- fput(region->vm_file); ++ vmr_fput(region); + + /* IO memory and memory shared directly out of the pagecache + * from ramfs/tmpfs mustn't be released here */ +@@ -655,7 +655,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) +- fput(vma->vm_file); ++ vma_fput(vma); + put_nommu_region(vma->vm_region); + vm_area_free(vma); + } +@@ -1175,7 +1175,7 @@ unsigned long do_mmap(struct file *file, + goto error_just_free; + } + } +- fput(region->vm_file); ++ vmr_fput(region); + kmem_cache_free(vm_region_jar, region); + region = pregion; + result = start; +@@ -1252,10 +1252,10 @@ unsigned long do_mmap(struct file *file, + up_write(&nommu_region_sem); + error: + if (region->vm_file) +- fput(region->vm_file); ++ vmr_fput(region); + kmem_cache_free(vm_region_jar, region); + if (vma->vm_file) +- fput(vma->vm_file); ++ vma_fput(vma); + vm_area_free(vma); + return ret; + +diff --git a/mm/prfile.c b/mm/prfile.c +new file mode 100644 +index 000000000000..511543ab1b41 +--- /dev/null ++++ b/mm/prfile.c +@@ -0,0 +1,86 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Mainly for aufs which mmap(2) different file and wants to print different ++ * path in /proc/PID/maps. ++ * Call these functions via macros defined in linux/mm.h. ++ * ++ * See Documentation/filesystems/aufs/design/06mmap.txt ++ * ++ * Copyright (c) 2014-2021 Junjro R. Okajima ++ * Copyright (c) 2014 Ian Campbell ++ */ ++ ++#include ++#include ++#include ++ ++/* #define PRFILE_TRACE */ ++static inline void prfile_trace(struct file *f, struct file *pr, ++ const char func[], int line, const char func2[]) ++{ ++#ifdef PRFILE_TRACE ++ if (pr) ++ pr_info("%s:%d: %s, %pD2\n", func, line, func2, f); ++#endif ++} ++ ++void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], ++ int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ file_update_time(f); ++ if (f && pr) ++ file_update_time(pr); ++} ++ ++struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], ++ int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ return (f && pr) ? pr : f; ++} ++ ++void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ get_file(f); ++ if (f && pr) ++ get_file(pr); ++} ++ ++void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) ++{ ++ struct file *f = vma->vm_file, *pr = vma->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ fput(f); ++ if (f && pr) ++ fput(pr); ++} ++ ++#ifndef CONFIG_MMU ++struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], ++ int line) ++{ ++ struct file *f = region->vm_file, *pr = region->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ return (f && pr) ? pr : f; ++} ++ ++void vmr_do_fput(struct vm_region *region, const char func[], int line) ++{ ++ struct file *f = region->vm_file, *pr = region->vm_prfile; ++ ++ prfile_trace(f, pr, func, line, __func__); ++ fput(f); ++ if (f && pr) ++ fput(pr); ++} ++#endif /* !CONFIG_MMU */ diff --git a/kernel/tools/perf/files/patches/aufs5/aufs5-standalone.patch b/kernel/tools/perf/files/patches/aufs5/aufs5-standalone.patch new file mode 100644 index 0000000000..63d24760ff --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/aufs5-standalone.patch @@ -0,0 +1,251 @@ +SPDX-License-Identifier: GPL-2.0 +aufs5.15.36 standalone patch + +diff --git a/fs/dcache.c b/fs/dcache.c +index bc5095b734f5..9508bd57a3bc 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -1425,6 +1425,7 @@ void d_walk(struct dentry *parent, void *data, + seq = 1; + goto again; + } ++EXPORT_SYMBOL_GPL(d_walk); + + struct check_mount { + struct vfsmount *mnt; +@@ -2970,6 +2971,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) + + write_sequnlock(&rename_lock); + } ++EXPORT_SYMBOL_GPL(d_exchange); + + /** + * d_ancestor - search for an ancestor +diff --git a/fs/exec.c b/fs/exec.c +index 29e865c59854..3ea36fa14622 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -111,6 +111,7 @@ bool path_noexec(const struct path *path) + return (path->mnt->mnt_flags & MNT_NOEXEC) || + (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); + } ++EXPORT_SYMBOL_GPL(path_noexec); + + #ifdef CONFIG_USELIB + /* +diff --git a/fs/fcntl.c b/fs/fcntl.c +index 02382fa9bd34..3418c60b9014 100644 +--- a/fs/fcntl.c ++++ b/fs/fcntl.c +@@ -86,6 +86,7 @@ int setfl(int fd, struct file *filp, unsigned long arg) + out: + return error; + } ++EXPORT_SYMBOL_GPL(setfl); + + static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, + int force) +diff -Nurp a/fs/file_table.c b/fs/file_table.c +--- a/fs/file_table.c 2022-03-20 22:14:17.000000000 +0200 ++++ b/fs/file_table.c 2022-04-08 20:24:23.624148779 +0300 +@@ -198,6 +198,7 @@ over: + } + return ERR_PTR(-ENFILE); + } ++EXPORT_SYMBOL_GPL(alloc_empty_file); + + /* + * Variant of alloc_empty_file() that doesn't check and modify nr_files. +diff --git a/fs/namespace.c b/fs/namespace.c +index c45740054bc7..d3d750635610 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c +@@ -439,6 +439,7 @@ void __mnt_drop_write(struct vfsmount *mnt) + mnt_dec_writers(real_mount(mnt)); + preempt_enable(); + } ++EXPORT_SYMBOL_GPL(__mnt_drop_write); + + /** + * mnt_drop_write - give up write access to a mount +@@ -813,6 +814,7 @@ int is_current_mnt_ns(struct vfsmount *mnt) + { + return check_mnt(real_mount(mnt)); + } ++EXPORT_SYMBOL_GPL(is_current_mnt_ns); + + /* + * vfsmount lock must be held for write +@@ -2011,6 +2013,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, + } + return 0; + } ++EXPORT_SYMBOL_GPL(iterate_mounts); + + static void lock_mnt_tree(struct mount *mnt) + { +diff --git a/fs/notify/group.c b/fs/notify/group.c +index fb89c351295d..460ad19c2570 100644 +--- a/fs/notify/group.c ++++ b/fs/notify/group.c +@@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_group *group) + { + refcount_inc(&group->refcnt); + } ++EXPORT_SYMBOL_GPL(fsnotify_get_group); + + /* + * Drop a reference to a group. Free it if it's through. +diff --git a/fs/open.c b/fs/open.c +index e0df1536eb69..81b2d7c83add 100644 +--- a/fs/open.c ++++ b/fs/open.c +@@ -65,6 +65,7 @@ int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry, + inode_unlock(dentry->d_inode); + return ret; + } ++EXPORT_SYMBOL_GPL(do_truncate); + + long vfs_truncate(const struct path *path, loff_t length) + { +diff --git a/fs/read_write.c b/fs/read_write.c +index af057c57bdc6..76017f8331fb 100644 +--- a/fs/read_write.c ++++ b/fs/read_write.c +@@ -492,6 +492,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) + inc_syscr(current); + return ret; + } ++EXPORT_SYMBOL_GPL(vfs_read); + + static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) + { +@@ -602,6 +603,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_ + file_end_write(file); + return ret; + } ++EXPORT_SYMBOL_GPL(vfs_write); + + /* 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 3e6ba363b777..7c1be373eb7c 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -766,6 +766,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + return warn_unsupported(out, "write"); + return out->f_op->splice_write(pipe, out, ppos, len, flags); + } ++EXPORT_SYMBOL_GPL(do_splice_from); + + /* + * Attempt to initiate a splice from a file to a pipe. +@@ -795,6 +796,7 @@ long do_splice_to(struct file *in, loff_t *ppos, + return warn_unsupported(in, "read"); + return in->f_op->splice_read(in, ppos, pipe, len, flags); + } ++EXPORT_SYMBOL_GPL(do_splice_to); + + /** + * splice_direct_to_actor - splices data directly between two non-pipes +diff --git a/fs/xattr.c b/fs/xattr.c +index 5c8c5175b385..ff7e9ff774b7 100644 +--- a/fs/xattr.c ++++ b/fs/xattr.c +@@ -384,6 +384,7 @@ vfs_getxattr_alloc(struct user_namespace *mnt_userns, struct dentry *dentry, + *xattr_value = value; + return error; + } ++EXPORT_SYMBOL_GPL(vfs_getxattr_alloc); + + ssize_t + __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, +diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c +index ce380d0abdf0..409c7d1a6803 100644 +--- a/kernel/locking/lockdep.c ++++ b/kernel/locking/lockdep.c +@@ -208,6 +208,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) + */ + return lock_classes + class_idx; + } ++EXPORT_SYMBOL_GPL(lockdep_hlock_class); + #define hlock_class(hlock) lockdep_hlock_class(hlock) + + #ifdef CONFIG_LOCK_STAT +diff --git a/kernel/task_work.c b/kernel/task_work.c +index 1698fbe6f0e1..081b05acadf8 100644 +--- a/kernel/task_work.c ++++ b/kernel/task_work.c +@@ -167,3 +167,4 @@ void task_work_run(void) + } while (work); + } + } ++EXPORT_SYMBOL_GPL(task_work_run); +diff --git a/security/security.c b/security/security.c +index da631339e969..894203de3bcb 100644 +--- a/security/security.c ++++ b/security/security.c +@@ -1160,6 +1160,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) + return 0; + return call_int_hook(path_rmdir, 0, dir, dentry); + } ++EXPORT_SYMBOL_GPL(security_path_rmdir); + + int security_path_unlink(const struct path *dir, struct dentry *dentry) + { +@@ -1176,6 +1177,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, + return 0; + return call_int_hook(path_symlink, 0, dir, dentry, old_name); + } ++EXPORT_SYMBOL_GPL(security_path_symlink); + + int security_path_link(struct dentry *old_dentry, const struct path *new_dir, + struct dentry *new_dentry) +@@ -1184,6 +1186,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, + return 0; + return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); + } ++EXPORT_SYMBOL_GPL(security_path_link); + + int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, + const struct path *new_dir, struct dentry *new_dentry, +@@ -1211,6 +1214,7 @@ int security_path_truncate(const struct path *path) + return 0; + return call_int_hook(path_truncate, 0, path); + } ++EXPORT_SYMBOL_GPL(security_path_truncate); + + int security_path_chmod(const struct path *path, umode_t mode) + { +@@ -1218,6 +1222,7 @@ int security_path_chmod(const struct path *path, umode_t mode) + return 0; + return call_int_hook(path_chmod, 0, path, mode); + } ++EXPORT_SYMBOL_GPL(security_path_chmod); + + int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) + { +@@ -1225,6 +1230,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) + return 0; + return call_int_hook(path_chown, 0, path, uid, gid); + } ++EXPORT_SYMBOL_GPL(security_path_chown); + + int security_path_chroot(const struct path *path) + { +@@ -1325,6 +1331,7 @@ int security_inode_permission(struct inode *inode, int mask) + return 0; + return call_int_hook(inode_permission, 0, inode, mask); + } ++EXPORT_SYMBOL_GPL(security_inode_permission); + + int security_inode_setattr(struct dentry *dentry, struct iattr *attr) + { +@@ -1522,6 +1529,7 @@ int security_file_permission(struct file *file, int mask) + + return fsnotify_perm(file, mask); + } ++EXPORT_SYMBOL_GPL(security_file_permission); + + int security_file_alloc(struct file *file) + { diff --git a/kernel/tools/perf/files/patches/aufs5/aufs5.15.36-20220509.patch b/kernel/tools/perf/files/patches/aufs5/aufs5.15.36-20220509.patch new file mode 100644 index 0000000000..034b926d94 --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/aufs5.15.36-20220509.patch @@ -0,0 +1,38475 @@ +diff -Naur null/Documentation/ABI/testing/debugfs-aufs linux-5.15.36/Documentation/ABI/testing/debugfs-aufs +--- /dev/null ++++ linux-5.15.36/Documentation/ABI/testing/debugfs-aufs 2022-05-10 16:51:39.862744220 +0300 +@@ -0,0 +1,55 @@ ++What: /debug/aufs/si_/ ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ Under /debug/aufs, a directory named si_ is created ++ per aufs mount, where is a unique id generated ++ internally. ++ ++What: /debug/aufs/si_/plink ++Date: Apr 2013 ++Contact: J. R. Okajima ++Description: ++ It has three lines and shows the information about the ++ pseudo-link. The first line is a single number ++ representing a number of buckets. The second line is a ++ number of pseudo-links per buckets (separated by a ++ blank). The last line is a single number representing a ++ total number of psedo-links. ++ When the aufs mount option 'noplink' is specified, it ++ will show "1\n0\n0\n". ++ ++What: /debug/aufs/si_/xib ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ It shows the consumed blocks by xib (External Inode Number ++ Bitmap), its block size and file size. ++ When the aufs mount option 'noxino' is specified, it ++ will be empty. About XINO files, see the aufs manual. ++ ++What: /debug/aufs/si_/xi ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ It shows the consumed blocks by xino (External Inode Number ++ Translation Table), its link count, block size and file ++ size. ++ Due to the file size limit, there may exist multiple ++ xino files per branch. In this case, "-N" is added to ++ the filename and it corresponds to the index of the ++ internal xino array. "-0" is omitted. ++ When the aufs mount option 'noxino' is specified, Those ++ entries won't exist. About XINO files, see the aufs ++ manual. ++ ++What: /debug/aufs/si_/xigen ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ It shows the consumed blocks by xigen (External Inode ++ Generation Table), its block size and file size. ++ If CONFIG_AUFS_EXPORT is disabled, this entry will not ++ be created. ++ When the aufs mount option 'noxino' is specified, it ++ will be empty. About XINO files, see the aufs manual. +diff -Naur null/Documentation/ABI/testing/sysfs-aufs linux-5.15.36/Documentation/ABI/testing/sysfs-aufs +--- /dev/null ++++ linux-5.15.36/Documentation/ABI/testing/sysfs-aufs 2022-05-10 16:51:39.863744220 +0300 +@@ -0,0 +1,31 @@ ++What: /sys/fs/aufs/si_/ ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ Under /sys/fs/aufs, a directory named si_ is created ++ per aufs mount, where is a unique id generated ++ internally. ++ ++What: /sys/fs/aufs/si_/br ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ It shows the abolute path of a member directory (which ++ is called branch) in aufs, and its permission. ++ ++What: /sys/fs/aufs/si_/brid ++Date: July 2013 ++Contact: J. R. Okajima ++Description: ++ It shows the id of a member directory (which is called ++ branch) in aufs. ++ ++What: /sys/fs/aufs/si_/xi_path ++Date: March 2009 ++Contact: J. R. Okajima ++Description: ++ It shows the abolute path of XINO (External Inode Number ++ Bitmap, Translation Table and Generation Table) file ++ even if it is the default path. ++ When the aufs mount option 'noxino' is specified, it ++ will be empty. About XINO files, see the aufs manual. +diff -Naur null/Documentation/filesystems/aufs/design/01intro.txt linux-5.15.36/Documentation/filesystems/aufs/design/01intro.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/01intro.txt 2022-05-10 16:51:39.863744220 +0300 +@@ -0,0 +1,171 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Introduction ++---------------------------------------- ++ ++aufs [ei ju: ef es] | /ey-yoo-ef-es/ | [a u f s] ++1. abbrev. for "advanced multi-layered unification filesystem". ++2. abbrev. for "another unionfs". ++3. abbrev. for "auf das" in German which means "on the" in English. ++ Ex. "Butter aufs Brot"(G) means "butter onto bread"(E). ++ But "Filesystem aufs Filesystem" is hard to understand. ++4. abbrev. for "African Urban Fashion Show". ++ ++AUFS is a filesystem with features: ++- multi layered stackable unification filesystem, the member directory ++ is called as a branch. ++- branch permission and attribute, 'readonly', 'real-readonly', ++ 'readwrite', 'whiteout-able', 'link-able whiteout', etc. and their ++ combination. ++- internal "file copy-on-write". ++- logical deletion, whiteout. ++- dynamic branch manipulation, adding, deleting and changing permission. ++- allow bypassing aufs, user's direct branch access. ++- external inode number translation table and bitmap which maintains the ++ persistent aufs inode number. ++- seekable directory, including NFS readdir. ++- file mapping, mmap and sharing pages. ++- pseudo-link, hardlink over branches. ++- loopback mounted filesystem as a branch. ++- several policies to select one among multiple writable branches. ++- revert a single systemcall when an error occurs in aufs. ++- and more... ++ ++ ++Multi Layered Stackable Unification Filesystem ++---------------------------------------------------------------------- ++Most people already knows what it is. ++It is a filesystem which unifies several directories and provides a ++merged single directory. When users access a file, the access will be ++passed/re-directed/converted (sorry, I am not sure which English word is ++correct) to the real file on the member filesystem. The member ++filesystem is called 'lower filesystem' or 'branch' and has a mode ++'readonly' and 'readwrite.' And the deletion for a file on the lower ++readonly branch is handled by creating 'whiteout' on the upper writable ++branch. ++ ++On LKML, there have been discussions about UnionMount (Jan Blunck, ++Bharata B Rao and Valerie Aurora) and Unionfs (Erez Zadok). They took ++different approaches to implement the merged-view. ++The former tries putting it into VFS, and the latter implements as a ++separate filesystem. ++(If I misunderstand about these implementations, please let me know and ++I shall correct it. Because it is a long time ago when I read their ++source files last time). ++ ++UnionMount's approach will be able to small, but may be hard to share ++branches between several UnionMount since the whiteout in it is ++implemented in the inode on branch filesystem and always ++shared. According to Bharata's post, readdir does not seems to be ++finished yet. ++There are several missing features known in this implementations such as ++- for users, the inode number may change silently. eg. copy-up. ++- link(2) may break by copy-up. ++- read(2) may get an obsoleted filedata (fstat(2) too). ++- fcntl(F_SETLK) may be broken by copy-up. ++- unnecessary copy-up may happen, for example mmap(MAP_PRIVATE) after ++ open(O_RDWR). ++ ++In linux-3.18, "overlay" filesystem (formerly known as "overlayfs") was ++merged into mainline. This is another implementation of UnionMount as a ++separated filesystem. All the limitations and known problems which ++UnionMount are equally inherited to "overlay" filesystem. ++ ++Unionfs has a longer history. When I started implementing a stackable ++filesystem (Aug 2005), it already existed. It has virtual super_block, ++inode, dentry and file objects and they have an array pointing lower ++same kind objects. After contributing many patches for Unionfs, I ++re-started my project AUFS (Jun 2006). ++ ++In AUFS, the structure of filesystem resembles to Unionfs, but I ++implemented my own ideas, approaches and enhancements and it became ++totally different one. ++ ++Comparing DM snapshot and fs based implementation ++- the number of bytes to be copied between devices is much smaller. ++- the type of filesystem must be one and only. ++- the fs must be writable, no readonly fs, even for the lower original ++ device. so the compression fs will not be usable. but if we use ++ loopback mount, we may address this issue. ++ for instance, ++ mount /cdrom/squashfs.img /sq ++ losetup /sq/ext2.img ++ losetup /somewhere/cow ++ dmsetup "snapshot /dev/loop0 /dev/loop1 ..." ++- it will be difficult (or needs more operations) to extract the ++ difference between the original device and COW. ++- DM snapshot-merge may help a lot when users try merging. in the ++ fs-layer union, users will use rsync(1). ++ ++You may want to read my old paper "Filesystems in LiveCD" ++(http://aufs.sourceforge.net/aufs2/report/sq/sq.pdf). ++ ++ ++Several characters/aspects/persona of aufs ++---------------------------------------------------------------------- ++ ++Aufs has several characters, aspects or persona. ++1. a filesystem, callee of VFS helper ++2. sub-VFS, caller of VFS helper for branches ++3. a virtual filesystem which maintains persistent inode number ++4. reader/writer of files on branches such like an application ++ ++1. Callee of VFS Helper ++As an ordinary linux filesystem, aufs is a callee of VFS. For instance, ++unlink(2) from an application reaches sys_unlink() kernel function and ++then vfs_unlink() is called. vfs_unlink() is one of VFS helper and it ++calls filesystem specific unlink operation. Actually aufs implements the ++unlink operation but it behaves like a redirector. ++ ++2. Caller of VFS Helper for Branches ++aufs_unlink() passes the unlink request to the branch filesystem as if ++it were called from VFS. So the called unlink operation of the branch ++filesystem acts as usual. As a caller of VFS helper, aufs should handle ++every necessary pre/post operation for the branch filesystem. ++- acquire the lock for the parent dir on a branch ++- lookup in a branch ++- revalidate dentry on a branch ++- mnt_want_write() for a branch ++- vfs_unlink() for a branch ++- mnt_drop_write() for a branch ++- release the lock on a branch ++ ++3. Persistent Inode Number ++One of the most important issue for a filesystem is to maintain inode ++numbers. This is particularly important to support exporting a ++filesystem via NFS. Aufs is a virtual filesystem which doesn't have a ++backend block device for its own. But some storage is necessary to ++keep and maintain the inode numbers. It may be a large space and may not ++suit to keep in memory. Aufs rents some space from its first writable ++branch filesystem (by default) and creates file(s) on it. These files ++are created by aufs internally and removed soon (currently) keeping ++opened. ++Note: Because these files are removed, they are totally gone after ++ unmounting aufs. It means the inode numbers are not persistent ++ across unmount or reboot. I have a plan to make them really ++ persistent which will be important for aufs on NFS server. ++ ++4. Read/Write Files Internally (copy-on-write) ++Because a branch can be readonly, when you write a file on it, aufs will ++"copy-up" it to the upper writable branch internally. And then write the ++originally requested thing to the file. Generally kernel doesn't ++open/read/write file actively. In aufs, even a single write may cause a ++internal "file copy". This behaviour is very similar to cp(1) command. ++ ++Some people may think it is better to pass such work to user space ++helper, instead of doing in kernel space. Actually I am still thinking ++about it. But currently I have implemented it in kernel space. +diff -Naur null/Documentation/filesystems/aufs/design/02struct.txt linux-5.15.36/Documentation/filesystems/aufs/design/02struct.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/02struct.txt 2022-05-10 16:51:39.863744220 +0300 +@@ -0,0 +1,258 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Basic Aufs Internal Structure ++ ++Superblock/Inode/Dentry/File Objects ++---------------------------------------------------------------------- ++As like an ordinary filesystem, aufs has its own ++superblock/inode/dentry/file objects. All these objects have a ++dynamically allocated array and store the same kind of pointers to the ++lower filesystem, branch. ++For example, when you build a union with one readwrite branch and one ++readonly, mounted /au, /rw and /ro respectively. ++- /au = /rw + /ro ++- /ro/fileA exists but /rw/fileA ++ ++Aufs lookup operation finds /ro/fileA and gets dentry for that. These ++pointers are stored in a aufs dentry. The array in aufs dentry will be, ++- [0] = NULL (because /rw/fileA doesn't exist) ++- [1] = /ro/fileA ++ ++This style of an array is essentially same to the aufs ++superblock/inode/dentry/file objects. ++ ++Because aufs supports manipulating branches, ie. add/delete/change ++branches dynamically, these objects has its own generation. When ++branches are changed, the generation in aufs superblock is ++incremented. And a generation in other object are compared when it is ++accessed. When a generation in other objects are obsoleted, aufs ++refreshes the internal array. ++ ++ ++Superblock ++---------------------------------------------------------------------- ++Additionally aufs superblock has some data for policies to select one ++among multiple writable branches, XIB files, pseudo-links and kobject. ++See below in detail. ++About the policies which supports copy-down a directory, see ++wbr_policy.txt too. ++ ++ ++Branch and XINO(External Inode Number Translation Table) ++---------------------------------------------------------------------- ++Every branch has its own xino (external inode number translation table) ++file. The xino file is created and unlinked by aufs internally. When two ++members of a union exist on the same filesystem, they share the single ++xino file. ++The struct of a xino file is simple, just a sequence of aufs inode ++numbers which is indexed by the lower inode number. ++In the above sample, assume the inode number of /ro/fileA is i111 and ++aufs assigns the inode number i999 for fileA. Then aufs writes 999 as ++4(8) bytes at 111 * 4(8) bytes offset in the xino file. ++ ++When the inode numbers are not contiguous, the xino file will be sparse ++which has a hole in it and doesn't consume as much disk space as it ++might appear. If your branch filesystem consumes disk space for such ++holes, then you should specify 'xino=' option at mounting aufs. ++ ++Aufs has a mount option to free the disk blocks for such holes in XINO ++files on tmpfs or ramdisk. But it is not so effective actually. If you ++meet a problem of disk shortage due to XINO files, then you should try ++"tmpfs-ino.patch" (and "vfs-ino.patch" too) in aufs4-standalone.git. ++The patch localizes the assignment inumbers per tmpfs-mount and avoid ++the holes in XINO files. ++ ++Also a writable branch has three kinds of "whiteout bases". All these ++are existed when the branch is joined to aufs, and their names are ++whiteout-ed doubly, so that users will never see their names in aufs ++hierarchy. ++1. a regular file which will be hardlinked to all whiteouts. ++2. a directory to store a pseudo-link. ++3. a directory to store an "orphan"-ed file temporary. ++ ++1. Whiteout Base ++ When you remove a file on a readonly branch, aufs handles it as a ++ logical deletion and creates a whiteout on the upper writable branch ++ as a hardlink of this file in order not to consume inode on the ++ writable branch. ++2. Pseudo-link Dir ++ See below, Pseudo-link. ++3. Step-Parent Dir ++ When "fileC" exists on the lower readonly branch only and it is ++ opened and removed with its parent dir, and then user writes ++ something into it, then aufs copies-up fileC to this ++ directory. Because there is no other dir to store fileC. After ++ creating a file under this dir, the file is unlinked. ++ ++Because aufs supports manipulating branches, ie. add/delete/change ++dynamically, a branch has its own id. When the branch order changes, ++aufs finds the new index by searching the branch id. ++ ++ ++Pseudo-link ++---------------------------------------------------------------------- ++Assume "fileA" exists on the lower readonly branch only and it is ++hardlinked to "fileB" on the branch. When you write something to fileA, ++aufs copies-up it to the upper writable branch. Additionally aufs ++creates a hardlink under the Pseudo-link Directory of the writable ++branch. The inode of a pseudo-link is kept in aufs super_block as a ++simple list. If fileB is read after unlinking fileA, aufs returns ++filedata from the pseudo-link instead of the lower readonly ++branch. Because the pseudo-link is based upon the inode, to keep the ++inode number by xino (see above) is essentially necessary. ++ ++All the hardlinks under the Pseudo-link Directory of the writable branch ++should be restored in a proper location later. Aufs provides a utility ++to do this. The userspace helpers executed at remounting and unmounting ++aufs by default. ++During this utility is running, it puts aufs into the pseudo-link ++maintenance mode. In this mode, only the process which began the ++maintenance mode (and its child processes) is allowed to operate in ++aufs. Some other processes which are not related to the pseudo-link will ++be allowed to run too, but the rest have to return an error or wait ++until the maintenance mode ends. If a process already acquires an inode ++mutex (in VFS), it has to return an error. ++ ++ ++XIB(external inode number bitmap) ++---------------------------------------------------------------------- ++Addition to the xino file per a branch, aufs has an external inode number ++bitmap in a superblock object. It is also an internal file such like a ++xino file. ++It is a simple bitmap to mark whether the aufs inode number is in-use or ++not. ++To reduce the file I/O, aufs prepares a single memory page to cache xib. ++ ++As well as XINO files, aufs has a feature to truncate/refresh XIB to ++reduce the number of consumed disk blocks for these files. ++ ++ ++Virtual or Vertical Dir, and Readdir in Userspace ++---------------------------------------------------------------------- ++In order to support multiple layers (branches), aufs readdir operation ++constructs a virtual dir block on memory. For readdir, aufs calls ++vfs_readdir() internally for each dir on branches, merges their entries ++with eliminating the whiteout-ed ones, and sets it to file (dir) ++object. So the file object has its entry list until it is closed. The ++entry list will be updated when the file position is zero and becomes ++obsoleted. This decision is made in aufs automatically. ++ ++The dynamically allocated memory block for the name of entries has a ++unit of 512 bytes (by default) and stores the names contiguously (no ++padding). Another block for each entry is handled by kmem_cache too. ++During building dir blocks, aufs creates hash list and judging whether ++the entry is whiteouted by its upper branch or already listed. ++The merged result is cached in the corresponding inode object and ++maintained by a customizable life-time option. ++ ++Some people may call it can be a security hole or invite DoS attack ++since the opened and once readdir-ed dir (file object) holds its entry ++list and becomes a pressure for system memory. But I'd say it is similar ++to files under /proc or /sys. The virtual files in them also holds a ++memory page (generally) while they are opened. When an idea to reduce ++memory for them is introduced, it will be applied to aufs too. ++For those who really hate this situation, I've developed readdir(3) ++library which operates this merging in userspace. You just need to set ++LD_PRELOAD environment variable, and aufs will not consume no memory in ++kernel space for readdir(3). ++ ++ ++Workqueue ++---------------------------------------------------------------------- ++Aufs sometimes requires privilege access to a branch. For instance, ++in copy-up/down operation. When a user process is going to make changes ++to a file which exists in the lower readonly branch only, and the mode ++of one of ancestor directories may not be writable by a user ++process. Here aufs copy-up the file with its ancestors and they may ++require privilege to set its owner/group/mode/etc. ++This is a typical case of a application character of aufs (see ++Introduction). ++ ++Aufs uses workqueue synchronously for this case. It creates its own ++workqueue. The workqueue is a kernel thread and has privilege. Aufs ++passes the request to call mkdir or write (for example), and wait for ++its completion. This approach solves a problem of a signal handler ++simply. ++If aufs didn't adopt the workqueue and changed the privilege of the ++process, then the process may receive the unexpected SIGXFSZ or other ++signals. ++ ++Also aufs uses the system global workqueue ("events" kernel thread) too ++for asynchronous tasks, such like handling inotify/fsnotify, re-creating a ++whiteout base and etc. This is unrelated to a privilege. ++Most of aufs operation tries acquiring a rw_semaphore for aufs ++superblock at the beginning, at the same time waits for the completion ++of all queued asynchronous tasks. ++ ++ ++Whiteout ++---------------------------------------------------------------------- ++The whiteout in aufs is very similar to Unionfs's. That is represented ++by its filename. UnionMount takes an approach of a file mode, but I am ++afraid several utilities (find(1) or something) will have to support it. ++ ++Basically the whiteout represents "logical deletion" which stops aufs to ++lookup further, but also it represents "dir is opaque" which also stop ++further lookup. ++ ++In aufs, rmdir(2) and rename(2) for dir uses whiteout alternatively. ++In order to make several functions in a single systemcall to be ++revertible, aufs adopts an approach to rename a directory to a temporary ++unique whiteouted name. ++For example, in rename(2) dir where the target dir already existed, aufs ++renames the target dir to a temporary unique whiteouted name before the ++actual rename on a branch, and then handles other actions (make it opaque, ++update the attributes, etc). If an error happens in these actions, aufs ++simply renames the whiteouted name back and returns an error. If all are ++succeeded, aufs registers a function to remove the whiteouted unique ++temporary name completely and asynchronously to the system global ++workqueue. ++ ++ ++Copy-up ++---------------------------------------------------------------------- ++It is a well-known feature or concept. ++When user modifies a file on a readonly branch, aufs operate "copy-up" ++internally and makes change to the new file on the upper writable branch. ++When the trigger systemcall does not update the timestamps of the parent ++dir, aufs reverts it after copy-up. ++ ++ ++Move-down (aufs3.9 and later) ++---------------------------------------------------------------------- ++"Copy-up" is one of the essential feature in aufs. It copies a file from ++the lower readonly branch to the upper writable branch when a user ++changes something about the file. ++"Move-down" is an opposite action of copy-up. Basically this action is ++ran manually instead of automatically and internally. ++For desgin and implementation, aufs has to consider these issues. ++- whiteout for the file may exist on the lower branch. ++- ancestor directories may not exist on the lower branch. ++- diropq for the ancestor directories may exist on the upper branch. ++- free space on the lower branch will reduce. ++- another access to the file may happen during moving-down, including ++ UDBA (see "Revalidate Dentry and UDBA"). ++- the file should not be hard-linked nor pseudo-linked. they should be ++ handled by auplink utility later. ++ ++Sometimes users want to move-down a file from the upper writable branch ++to the lower readonly or writable branch. For instance, ++- the free space of the upper writable branch is going to run out. ++- create a new intermediate branch between the upper and lower branch. ++- etc. ++ ++For this purpose, use "aumvdown" command in aufs-util.git. +diff -Naur null/Documentation/filesystems/aufs/design/03atomic_open.txt linux-5.15.36/Documentation/filesystems/aufs/design/03atomic_open.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/03atomic_open.txt 2022-05-10 16:51:39.863744220 +0300 +@@ -0,0 +1,85 @@ ++ ++# Copyright (C) 2015-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Support for a branch who has its ->atomic_open() ++---------------------------------------------------------------------- ++The filesystems who implement its ->atomic_open() are not majority. For ++example NFSv4 does, and aufs should call NFSv4 ->atomic_open, ++particularly for open(O_CREAT|O_EXCL, 0400) case. Other than ++->atomic_open(), NFSv4 returns an error for this open(2). While I am not ++sure whether all filesystems who have ->atomic_open() behave like this, ++but NFSv4 surely returns the error. ++ ++In order to support ->atomic_open() for aufs, there are a few ++approaches. ++ ++A. Introduce aufs_atomic_open() ++ - calls one of VFS:do_last(), lookup_open() or atomic_open() for ++ branch fs. ++B. Introduce aufs_atomic_open() calling create, open and chmod. this is ++ an aufs user Pip Cet's approach ++ - calls aufs_create(), VFS finish_open() and notify_change(). ++ - pass fake-mode to finish_open(), and then correct the mode by ++ notify_change(). ++C. Extend aufs_open() to call branch fs's ->atomic_open() ++ - no aufs_atomic_open(). ++ - aufs_lookup() registers the TID to an aufs internal object. ++ - aufs_create() does nothing when the matching TID is registered, but ++ registers the mode. ++ - aufs_open() calls branch fs's ->atomic_open() when the matching ++ TID is registered. ++D. Extend aufs_open() to re-try branch fs's ->open() with superuser's ++ credential ++ - no aufs_atomic_open(). ++ - aufs_create() registers the TID to an internal object. this info ++ represents "this process created this file just now." ++ - when aufs gets EACCES from branch fs's ->open(), then confirm the ++ registered TID and re-try open() with superuser's credential. ++ ++Pros and cons for each approach. ++ ++A. ++ - straightforward but highly depends upon VFS internal. ++ - the atomic behavaiour is kept. ++ - some of parameters such as nameidata are hard to reproduce for ++ branch fs. ++ - large overhead. ++B. ++ - easy to implement. ++ - the atomic behavaiour is lost. ++C. ++ - the atomic behavaiour is kept. ++ - dirty and tricky. ++ - VFS checks whether the file is created correctly after calling ++ ->create(), which means this approach doesn't work. ++D. ++ - easy to implement. ++ - the atomic behavaiour is lost. ++ - to open a file with superuser's credential and give it to a user ++ process is a bad idea, since the file object keeps the credential ++ in it. It may affect LSM or something. This approach doesn't work ++ either. ++ ++The approach A is ideal, but it hard to implement. So here is a ++variation of A, which is to be implemented. ++ ++A-1. Introduce aufs_atomic_open() ++ - calls branch fs ->atomic_open() if exists. otherwise calls ++ vfs_create() and finish_open(). ++ - the demerit is that the several checks after branch fs ++ ->atomic_open() are lost. in the ordinary case, the checks are ++ done by VFS:do_last(), lookup_open() and atomic_open(). some can ++ be implemented in aufs, but not all I am afraid. +diff -Naur null/Documentation/filesystems/aufs/design/03lookup.txt linux-5.15.36/Documentation/filesystems/aufs/design/03lookup.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/03lookup.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,113 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Lookup in a Branch ++---------------------------------------------------------------------- ++Since aufs has a character of sub-VFS (see Introduction), it operates ++lookup for branches as VFS does. It may be a heavy work. But almost all ++lookup operation in aufs is the simplest case, ie. lookup only an entry ++directly connected to its parent. Digging down the directory hierarchy ++is unnecessary. VFS has a function lookup_one_len() for that use, and ++aufs calls it. ++ ++When a branch is a remote filesystem, aufs basically relies upon its ++->d_revalidate(), also aufs forces the hardest revalidate tests for ++them. ++For d_revalidate, aufs implements three levels of revalidate tests. See ++"Revalidate Dentry and UDBA" in detail. ++ ++ ++Test Only the Highest One for the Directory Permission (dirperm1 option) ++---------------------------------------------------------------------- ++Let's try case study. ++- aufs has two branches, upper readwrite and lower readonly. ++ /au = /rw + /ro ++- "dirA" exists under /ro, but /rw. and its mode is 0700. ++- user invoked "chmod a+rx /au/dirA" ++- the internal copy-up is activated and "/rw/dirA" is created and its ++ permission bits are set to world readable. ++- then "/au/dirA" becomes world readable? ++ ++In this case, /ro/dirA is still 0700 since it exists in readonly branch, ++or it may be a natively readonly filesystem. If aufs respects the lower ++branch, it should not respond readdir request from other users. But user ++allowed it by chmod. Should really aufs rejects showing the entries ++under /ro/dirA? ++ ++To be honest, I don't have a good solution for this case. So aufs ++implements 'dirperm1' and 'nodirperm1' mount options, and leave it to ++users. ++When dirperm1 is specified, aufs checks only the highest one for the ++directory permission, and shows the entries. Otherwise, as usual, checks ++every dir existing on all branches and rejects the request. ++ ++As a side effect, dirperm1 option improves the performance of aufs ++because the number of permission check is reduced when the number of ++branch is many. ++ ++ ++Revalidate Dentry and UDBA (User's Direct Branch Access) ++---------------------------------------------------------------------- ++Generally VFS helpers re-validate a dentry as a part of lookup. ++0. digging down the directory hierarchy. ++1. lock the parent dir by its i_mutex. ++2. lookup the final (child) entry. ++3. revalidate it. ++4. call the actual operation (create, unlink, etc.) ++5. unlock the parent dir ++ ++If the filesystem implements its ->d_revalidate() (step 3), then it is ++called. Actually aufs implements it and checks the dentry on a branch is ++still valid. ++But it is not enough. Because aufs has to release the lock for the ++parent dir on a branch at the end of ->lookup() (step 2) and ++->d_revalidate() (step 3) while the i_mutex of the aufs dir is still ++held by VFS. ++If the file on a branch is changed directly, eg. bypassing aufs, after ++aufs released the lock, then the subsequent operation may cause ++something unpleasant result. ++ ++This situation is a result of VFS architecture, ->lookup() and ++->d_revalidate() is separated. But I never say it is wrong. It is a good ++design from VFS's point of view. It is just not suitable for sub-VFS ++character in aufs. ++ ++Aufs supports such case by three level of revalidation which is ++selectable by user. ++1. Simple Revalidate ++ Addition to the native flow in VFS's, confirm the child-parent ++ relationship on the branch just after locking the parent dir on the ++ branch in the "actual operation" (step 4). When this validation ++ fails, aufs returns EBUSY. ->d_revalidate() (step 3) in aufs still ++ checks the validation of the dentry on branches. ++2. Monitor Changes Internally by Inotify/Fsnotify ++ Addition to above, in the "actual operation" (step 4) aufs re-lookup ++ the dentry on the branch, and returns EBUSY if it finds different ++ dentry. ++ Additionally, aufs sets the inotify/fsnotify watch for every dir on branches ++ during it is in cache. When the event is notified, aufs registers a ++ function to kernel 'events' thread by schedule_work(). And the ++ function sets some special status to the cached aufs dentry and inode ++ private data. If they are not cached, then aufs has nothing to ++ do. When the same file is accessed through aufs (step 0-3) later, ++ aufs will detect the status and refresh all necessary data. ++ In this mode, aufs has to ignore the event which is fired by aufs ++ itself. ++3. No Extra Validation ++ This is the simplest test and doesn't add any additional revalidation ++ test, and skip the revalidation in step 4. It is useful and improves ++ aufs performance when system surely hide the aufs branches from user, ++ by over-mounting something (or another method). +diff -Naur null/Documentation/filesystems/aufs/design/04branch.txt linux-5.15.36/Documentation/filesystems/aufs/design/04branch.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/04branch.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,74 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Branch Manipulation ++ ++Since aufs supports dynamic branch manipulation, ie. add/remove a branch ++and changing its permission/attribute, there are a lot of works to do. ++ ++ ++Add a Branch ++---------------------------------------------------------------------- ++o Confirm the adding dir exists outside of aufs, including loopback ++ mount, and its various attributes. ++o Initialize the xino file and whiteout bases if necessary. ++ See struct.txt. ++ ++o Check the owner/group/mode of the directory ++ When the owner/group/mode of the adding directory differs from the ++ existing branch, aufs issues a warning because it may impose a ++ security risk. ++ For example, when a upper writable branch has a world writable empty ++ top directory, a malicious user can create any files on the writable ++ branch directly, like copy-up and modify manually. If something like ++ /etc/{passwd,shadow} exists on the lower readonly branch but the upper ++ writable branch, and the writable branch is world-writable, then a ++ malicious guy may create /etc/passwd on the writable branch directly ++ and the infected file will be valid in aufs. ++ I am afraid it can be a security issue, but aufs can do nothing except ++ producing a warning. ++ ++ ++Delete a Branch ++---------------------------------------------------------------------- ++o Confirm the deleting branch is not busy ++ To be general, there is one merit to adopt "remount" interface to ++ manipulate branches. It is to discard caches. At deleting a branch, ++ aufs checks the still cached (and connected) dentries and inodes. If ++ there are any, then they are all in-use. An inode without its ++ corresponding dentry can be alive alone (for example, inotify/fsnotify case). ++ ++ For the cached one, aufs checks whether the same named entry exists on ++ other branches. ++ If the cached one is a directory, because aufs provides a merged view ++ to users, as long as one dir is left on any branch aufs can show the ++ dir to users. In this case, the branch can be removed from aufs. ++ Otherwise aufs rejects deleting the branch. ++ ++ If any file on the deleting branch is opened by aufs, then aufs ++ rejects deleting. ++ ++ ++Modify the Permission of a Branch ++---------------------------------------------------------------------- ++o Re-initialize or remove the xino file and whiteout bases if necessary. ++ See struct.txt. ++ ++o rw --> ro: Confirm the modifying branch is not busy ++ Aufs rejects the request if any of these conditions are true. ++ - a file on the branch is mmap-ed. ++ - a regular file on the branch is opened for write and there is no ++ same named entry on the upper branch. +diff -Naur null/Documentation/filesystems/aufs/design/05wbr_policy.txt linux-5.15.36/Documentation/filesystems/aufs/design/05wbr_policy.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/05wbr_policy.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,64 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Policies to Select One among Multiple Writable Branches ++---------------------------------------------------------------------- ++When the number of writable branch is more than one, aufs has to decide ++the target branch for file creation or copy-up. By default, the highest ++writable branch which has the parent (or ancestor) dir of the target ++file is chosen (top-down-parent policy). ++By user's request, aufs implements some other policies to select the ++writable branch, for file creation several policies, round-robin, ++most-free-space, and other policies. For copy-up, top-down-parent, ++bottom-up-parent, bottom-up and others. ++ ++As expected, the round-robin policy selects the branch in circular. When ++you have two writable branches and creates 10 new files, 5 files will be ++created for each branch. mkdir(2) systemcall is an exception. When you ++create 10 new directories, all will be created on the same branch. ++And the most-free-space policy selects the one which has most free ++space among the writable branches. The amount of free space will be ++checked by aufs internally, and users can specify its time interval. ++ ++The policies for copy-up is more simple, ++top-down-parent is equivalent to the same named on in create policy, ++bottom-up-parent selects the writable branch where the parent dir ++exists and the nearest upper one from the copyup-source, ++bottom-up selects the nearest upper writable branch from the ++copyup-source, regardless the existence of the parent dir. ++ ++There are some rules or exceptions to apply these policies. ++- If there is a readonly branch above the policy-selected branch and ++ the parent dir is marked as opaque (a variation of whiteout), or the ++ target (creating) file is whiteout-ed on the upper readonly branch, ++ then the result of the policy is ignored and the target file will be ++ created on the nearest upper writable branch than the readonly branch. ++- If there is a writable branch above the policy-selected branch and ++ the parent dir is marked as opaque or the target file is whiteouted ++ on the branch, then the result of the policy is ignored and the target ++ file will be created on the highest one among the upper writable ++ branches who has diropq or whiteout. In case of whiteout, aufs removes ++ it as usual. ++- link(2) and rename(2) systemcalls are exceptions in every policy. ++ They try selecting the branch where the source exists as possible ++ since copyup a large file will take long time. If it can't be, ++ ie. the branch where the source exists is readonly, then they will ++ follow the copyup policy. ++- There is an exception for rename(2) when the target exists. ++ If the rename target exists, aufs compares the index of the branches ++ where the source and the target exists and selects the higher ++ one. If the selected branch is readonly, then aufs follows the ++ copyup policy. +diff -Naur null/Documentation/filesystems/aufs/design/06dirren.dot linux-5.15.36/Documentation/filesystems/aufs/design/06dirren.dot +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/06dirren.dot 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,31 @@ ++ ++// to view this graph, run dot(1) command in GRAPHVIZ. ++ ++digraph G { ++node [shape=box]; ++whinfo [label="detailed info file\n(lower_brid_root-hinum, h_inum, namelen, old name)"]; ++ ++node [shape=oval]; ++ ++aufs_rename -> whinfo [label="store/remove"]; ++ ++node [shape=oval]; ++inode_list [label="h_inum list in branch\ncache"]; ++ ++node [shape=box]; ++whinode [label="h_inum list file"]; ++ ++node [shape=oval]; ++brmgmt [label="br_add/del/mod/umount"]; ++ ++brmgmt -> inode_list [label="create/remove"]; ++brmgmt -> whinode [label="load/store"]; ++ ++inode_list -> whinode [style=dashed,dir=both]; ++ ++aufs_rename -> inode_list [label="add/del"]; ++ ++aufs_lookup -> inode_list [label="search"]; ++ ++aufs_lookup -> whinfo [label="load/remove"]; ++} +diff -Naur null/Documentation/filesystems/aufs/design/06dirren.txt linux-5.15.36/Documentation/filesystems/aufs/design/06dirren.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/06dirren.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,102 @@ ++ ++# Copyright (C) 2017-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Special handling for renaming a directory (DIRREN) ++---------------------------------------------------------------------- ++First, let's assume we have a simple usecase. ++ ++- /u = /rw + /ro ++- /rw/dirA exists ++- /ro/dirA and /ro/dirA/file exist too ++- there is no dirB on both branches ++- a user issues rename("dirA", "dirB") ++ ++Now, what should aufs behave against this rename(2)? ++There are a few possible cases. ++ ++A. returns EROFS. ++ since dirA exists on a readonly branch which cannot be renamed. ++B. returns EXDEV. ++ it is possible to copy-up dirA (only the dir itself), but the child ++ entries ("file" in this case) should not be. it must be a bad ++ approach to copy-up recursively. ++C. returns a success. ++ even the branch /ro is readonly, aufs tries renaming it. Obviously it ++ is a violation of aufs' policy. ++D. construct an extra information which indicates that /ro/dirA should ++ be handled as the name of dirB. ++ overlayfs has a similar feature called REDIRECT. ++ ++Until now, aufs implements the case B only which returns EXDEV, and ++expects the userspace application behaves like mv(1) which tries ++issueing rename(2) recursively. ++ ++A new aufs feature called DIRREN is introduced which implements the case ++D. There are several "extra information" added. ++ ++1. detailed info per renamed directory ++ path: /rw/dirB/$AUFS_WH_DR_INFO_PFX. ++2. the inode-number list of directories on a branch ++ path: /rw/dirB/$AUFS_WH_DR_BRHINO ++ ++The filename of "detailed info per directory" represents the lower ++branch, and its format is ++- a type of the branch id ++ one of these. ++ + uuid (not implemented yet) ++ + fsid ++ + dev ++- the inode-number of the branch root dir ++ ++And it contains these info in a single regular file. ++- magic number ++- branch's inode-number of the logically renamed dir ++- the name of the before-renamed dir ++ ++The "detailed info per directory" file is created in aufs rename(2), and ++loaded in any lookup. ++The info is considered in lookup for the matching case only. Here ++"matching" means that the root of branch (in the info filename) is same ++to the current looking-up branch. After looking-up the before-renamed ++name, the inode-number is compared. And the matched dentry is used. ++ ++The "inode-number list of directories" is a regular file which contains ++simply the inode-numbers on the branch. The file is created or updated ++in removing the branch, and loaded in adding the branch. Its lifetime is ++equal to the branch. ++The list is refered in lookup, and when the current target inode is ++found in the list, the aufs tries loading the "detailed info per ++directory" and get the changed and valid name of the dir. ++ ++Theoretically these "extra informaiton" may be able to be put into XATTR ++in the dir inode. But aufs doesn't choose this way because ++1. XATTR may not be supported by the branch (or its configuration) ++2. XATTR may have its size limit. ++3. XATTR may be less easy to convert than a regular file, when the ++ format of the info is changed in the future. ++At the same time, I agree that the regular file approach is much slower ++than XATTR approach. So, in the future, aufs may take the XATTR or other ++better approach. ++ ++This DIRREN feature is enabled by aufs configuration, and is activated ++by a new mount option. ++ ++For the more complicated case, there is a work with UDBA option, which ++is to dected the direct access to the branches (by-passing aufs) and to ++maintain the cashes in aufs. Since a single cached aufs dentry may ++contains two names, before- and after-rename, the name comparision in ++UDBA handler may not work correctly. In this case, the behaviour will be ++equivalen to udba=reval case. +diff -Naur null/Documentation/filesystems/aufs/design/06fhsm.txt linux-5.15.36/Documentation/filesystems/aufs/design/06fhsm.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/06fhsm.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,120 @@ ++ ++# Copyright (C) 2011-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ ++File-based Hierarchical Storage Management (FHSM) ++---------------------------------------------------------------------- ++Hierarchical Storage Management (or HSM) is a well-known feature in the ++storage world. Aufs provides this feature as file-based with multiple ++writable branches, based upon the principle of "Colder, the Lower". ++Here the word "colder" means that the less used files, and "lower" means ++that the position in the order of the stacked branches vertically. ++These multiple writable branches are prioritized, ie. the topmost one ++should be the fastest drive and be used heavily. ++ ++o Characters in aufs FHSM story ++- aufs itself and a new branch attribute. ++- a new ioctl interface to move-down and to establish a connection with ++ the daemon ("move-down" is a converse of "copy-up"). ++- userspace tool and daemon. ++ ++The userspace daemon establishes a connection with aufs and waits for ++the notification. The notified information is very similar to struct ++statfs containing the number of consumed blocks and inodes. ++When the consumed blocks/inodes of a branch exceeds the user-specified ++upper watermark, the daemon activates its move-down process until the ++consumed blocks/inodes reaches the user-specified lower watermark. ++ ++The actual move-down is done by aufs based upon the request from ++user-space since we need to maintain the inode number and the internal ++pointer arrays in aufs. ++ ++Currently aufs FHSM handles the regular files only. Additionally they ++must not be hard-linked nor pseudo-linked. ++ ++ ++o Cowork of aufs and the user-space daemon ++ During the userspace daemon established the connection, aufs sends a ++ small notification to it whenever aufs writes something into the ++ writable branch. But it may cost high since aufs issues statfs(2) ++ internally. So user can specify a new option to cache the ++ info. Actually the notification is controlled by these factors. ++ + the specified cache time. ++ + classified as "force" by aufs internally. ++ Until the specified time expires, aufs doesn't send the info ++ except the forced cases. When aufs decide forcing, the info is always ++ notified to userspace. ++ For example, the number of free inodes is generally large enough and ++ the shortage of it happens rarely. So aufs doesn't force the ++ notification when creating a new file, directory and others. This is ++ the typical case which aufs doesn't force. ++ When aufs writes the actual filedata and the files consumes any of new ++ blocks, the aufs forces notifying. ++ ++ ++o Interfaces in aufs ++- New branch attribute. ++ + fhsm ++ Specifies that the branch is managed by FHSM feature. In other word, ++ participant in the FHSM. ++ When nofhsm is set to the branch, it will not be the source/target ++ branch of the move-down operation. This attribute is set ++ independently from coo and moo attributes, and if you want full ++ FHSM, you should specify them as well. ++- New mount option. ++ + fhsm_sec ++ Specifies a second to suppress many less important info to be ++ notified. ++- New ioctl. ++ + AUFS_CTL_FHSM_FD ++ create a new file descriptor which userspace can read the notification ++ (a subset of struct statfs) from aufs. ++- Module parameter 'brs' ++ It has to be set to 1. Otherwise the new mount option 'fhsm' will not ++ be set. ++- mount helpers /sbin/mount.aufs and /sbin/umount.aufs ++ When there are two or more branches with fhsm attributes, ++ /sbin/mount.aufs invokes the user-space daemon and /sbin/umount.aufs ++ terminates it. As a result of remounting and branch-manipulation, the ++ number of branches with fhsm attribute can be one. In this case, ++ /sbin/mount.aufs will terminate the user-space daemon. ++ ++ ++Finally the operation is done as these steps in kernel-space. ++- make sure that, ++ + no one else is using the file. ++ + the file is not hard-linked. ++ + the file is not pseudo-linked. ++ + the file is a regular file. ++ + the parent dir is not opaqued. ++- find the target writable branch. ++- make sure the file is not whiteout-ed by the upper (than the target) ++ branch. ++- make the parent dir on the target branch. ++- mutex lock the inode on the branch. ++- unlink the whiteout on the target branch (if exists). ++- lookup and create the whiteout-ed temporary name on the target branch. ++- copy the file as the whiteout-ed temporary name on the target branch. ++- rename the whiteout-ed temporary name to the original name. ++- unlink the file on the source branch. ++- maintain the internal pointer array and the external inode number ++ table (XINO). ++- maintain the timestamps and other attributes of the parent dir and the ++ file. ++ ++And of course, in every step, an error may happen. So the operation ++should restore the original file state after an error happens. +diff -Naur null/Documentation/filesystems/aufs/design/06mmap.txt linux-5.15.36/Documentation/filesystems/aufs/design/06mmap.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/06mmap.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,72 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++mmap(2) -- File Memory Mapping ++---------------------------------------------------------------------- ++In aufs, the file-mapped pages are handled by a branch fs directly, no ++interaction with aufs. It means aufs_mmap() calls the branch fs's ++->mmap(). ++This approach is simple and good, but there is one problem. ++Under /proc, several entries show the mmapped files by its path (with ++device and inode number), and the printed path will be the path on the ++branch fs's instead of virtual aufs's. ++This is not a problem in most cases, but some utilities lsof(1) (and its ++user) may expect the path on aufs. ++ ++To address this issue, aufs adds a new member called vm_prfile in struct ++vm_area_struct (and struct vm_region). The original vm_file points to ++the file on the branch fs in order to handle everything correctly as ++usual. The new vm_prfile points to a virtual file in aufs, and the ++show-functions in procfs refers to vm_prfile if it is set. ++Also we need to maintain several other places where touching vm_file ++such like ++- fork()/clone() copies vma and the reference count of vm_file is ++ incremented. ++- merging vma maintains the ref count too. ++ ++This is not a good approach. It just fakes the printed path. But it ++leaves all behaviour around f_mapping unchanged. This is surely an ++advantage. ++Actually aufs had adopted another complicated approach which calls ++generic_file_mmap() and handles struct vm_operations_struct. In this ++approach, aufs met a hard problem and I could not solve it without ++switching the approach. ++ ++There may be one more another approach which is ++- bind-mount the branch-root onto the aufs-root internally ++- grab the new vfsmount (ie. struct mount) ++- lazy-umount the branch-root internally ++- in open(2) the aufs-file, open the branch-file with the hidden ++ vfsmount (instead of the original branch's vfsmount) ++- ideally this "bind-mount and lazy-umount" should be done atomically, ++ but it may be possible from userspace by the mount helper. ++ ++Adding the internal hidden vfsmount and using it in opening a file, the ++file path under /proc will be printed correctly. This approach looks ++smarter, but is not possible I am afraid. ++- aufs-root may be bind-mount later. when it happens, another hidden ++ vfsmount will be required. ++- it is hard to get the chance to bind-mount and lazy-umount ++ + in kernel-space, FS can have vfsmount in open(2) via ++ file->f_path, and aufs can know its vfsmount. But several locks are ++ already acquired, and if aufs tries to bind-mount and lazy-umount ++ here, then it may cause a deadlock. ++ + in user-space, bind-mount doesn't invoke the mount helper. ++- since /proc shows dev and ino, aufs has to give vma these info. it ++ means a new member vm_prinode will be necessary. this is essentially ++ equivalent to vm_prfile described above. ++ ++I have to give up this "looks-smater" approach. +diff -Naur null/Documentation/filesystems/aufs/design/06xattr.txt linux-5.15.36/Documentation/filesystems/aufs/design/06xattr.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/06xattr.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,96 @@ ++ ++# Copyright (C) 2014-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ ++Listing XATTR/EA and getting the value ++---------------------------------------------------------------------- ++For the inode standard attributes (owner, group, timestamps, etc.), aufs ++shows the values from the topmost existing file. This behaviour is good ++for the non-dir entries since the bahaviour exactly matches the shown ++information. But for the directories, aufs considers all the same named ++entries on the lower branches. Which means, if one of the lower entry ++rejects readdir call, then aufs returns an error even if the topmost ++entry allows it. This behaviour is necessary to respect the branch fs's ++security, but can make users confused since the user-visible standard ++attributes don't match the behaviour. ++To address this issue, aufs has a mount option called dirperm1 which ++checks the permission for the topmost entry only, and ignores the lower ++entry's permission. ++ ++A similar issue can happen around XATTR. ++getxattr(2) and listxattr(2) families behave as if dirperm1 option is ++always set. Otherwise these very unpleasant situation would happen. ++- listxattr(2) may return the duplicated entries. ++- users may not be able to remove or reset the XATTR forever, ++ ++ ++XATTR/EA support in the internal (copy,move)-(up,down) ++---------------------------------------------------------------------- ++Generally the extended attributes of inode are categorized as these. ++- "security" for LSM and capability. ++- "system" for posix ACL, 'acl' mount option is required for the branch ++ fs generally. ++- "trusted" for userspace, CAP_SYS_ADMIN is required. ++- "user" for userspace, 'user_xattr' mount option is required for the ++ branch fs generally. ++ ++Moreover there are some other categories. Aufs handles these rather ++unpopular categories as the ordinary ones, ie. there is no special ++condition nor exception. ++ ++In copy-up, the support for XATTR on the dst branch may differ from the ++src branch. In this case, the copy-up operation will get an error and ++the original user operation which triggered the copy-up will fail. It ++can happen that even all copy-up will fail. ++When both of src and dst branches support XATTR and if an error occurs ++during copying XATTR, then the copy-up should fail obviously. That is a ++good reason and aufs should return an error to userspace. But when only ++the src branch support that XATTR, aufs should not return an error. ++For example, the src branch supports ACL but the dst branch doesn't ++because the dst branch may natively un-support it or temporary ++un-support it due to "noacl" mount option. Of course, the dst branch fs ++may NOT return an error even if the XATTR is not supported. It is ++totally up to the branch fs. ++ ++Anyway when the aufs internal copy-up gets an error from the dst branch ++fs, then aufs tries removing the just copied entry and returns the error ++to the userspace. The worst case of this situation will be all copy-up ++will fail. ++ ++For the copy-up operation, there two basic approaches. ++- copy the specified XATTR only (by category above), and return the ++ error unconditionally if it happens. ++- copy all XATTR, and ignore the error on the specified category only. ++ ++In order to support XATTR and to implement the correct behaviour, aufs ++chooses the latter approach and introduces some new branch attributes, ++"icexsec", "icexsys", "icextr", "icexusr", and "icexoth". ++They correspond to the XATTR namespaces (see above). Additionally, to be ++convenient, "icex" is also provided which means all "icex*" attributes ++are set (here the word "icex" stands for "ignore copy-error on XATTR"). ++ ++The meaning of these attributes is to ignore the error from setting ++XATTR on that branch. ++Note that aufs tries copying all XATTR unconditionally, and ignores the ++error from the dst branch according to the specified attributes. ++ ++Some XATTR may have its default value. The default value may come from ++the parent dir or the environment. If the default value is set at the ++file creating-time, it will be overwritten by copy-up. ++Some contradiction may happen I am afraid. ++Do we need another attribute to stop copying XATTR? I am unsure. For ++now, aufs implements the branch attributes to ignore the error. +diff -Naur null/Documentation/filesystems/aufs/design/07export.txt linux-5.15.36/Documentation/filesystems/aufs/design/07export.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/07export.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,58 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Export Aufs via NFS ++---------------------------------------------------------------------- ++Here is an approach. ++- like xino/xib, add a new file 'xigen' which stores aufs inode ++ generation. ++- iget_locked(): initialize aufs inode generation for a new inode, and ++ store it in xigen file. ++- destroy_inode(): increment aufs inode generation and store it in xigen ++ file. it is necessary even if it is not unlinked, because any data of ++ inode may be changed by UDBA. ++- encode_fh(): for a root dir, simply return FILEID_ROOT. otherwise ++ build file handle by ++ + branch id (4 bytes) ++ + superblock generation (4 bytes) ++ + inode number (4 or 8 bytes) ++ + parent dir inode number (4 or 8 bytes) ++ + inode generation (4 bytes)) ++ + return value of exportfs_encode_fh() for the parent on a branch (4 ++ bytes) ++ + file handle for a branch (by exportfs_encode_fh()) ++- fh_to_dentry(): ++ + find the index of a branch from its id in handle, and check it is ++ still exist in aufs. ++ + 1st level: get the inode number from handle and search it in cache. ++ + 2nd level: if not found in cache, get the parent inode number from ++ the handle and search it in cache. and then open the found parent ++ dir, find the matching inode number by vfs_readdir() and get its ++ name, and call lookup_one_len() for the target dentry. ++ + 3rd level: if the parent dir is not cached, call ++ exportfs_decode_fh() for a branch and get the parent on a branch, ++ build a pathname of it, convert it a pathname in aufs, call ++ path_lookup(). now aufs gets a parent dir dentry, then handle it as ++ the 2nd level. ++ + to open the dir, aufs needs struct vfsmount. aufs keeps vfsmount ++ for every branch, but not itself. to get this, (currently) aufs ++ searches in current->nsproxy->mnt_ns list. it may not be a good ++ idea, but I didn't get other approach. ++ + test the generation of the gotten inode. ++- every inode operation: they may get EBUSY due to UDBA. in this case, ++ convert it into ESTALE for NFSD. ++- readdir(): call lockdep_on/off() because filldir in NFSD calls ++ lookup_one_len(), vfs_getattr(), encode_fh() and others. +diff -Naur null/Documentation/filesystems/aufs/design/08shwh.txt linux-5.15.36/Documentation/filesystems/aufs/design/08shwh.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/08shwh.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,52 @@ ++ ++# Copyright (C) 2005-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Show Whiteout Mode (shwh) ++---------------------------------------------------------------------- ++Generally aufs hides the name of whiteouts. But in some cases, to show ++them is very useful for users. For instance, creating a new middle layer ++(branch) by merging existing layers. ++ ++(borrowing aufs1 HOW-TO from a user, Michael Towers) ++When you have three branches, ++- Bottom: 'system', squashfs (underlying base system), read-only ++- Middle: 'mods', squashfs, read-only ++- Top: 'overlay', ram (tmpfs), read-write ++ ++The top layer is loaded at boot time and saved at shutdown, to preserve ++the changes made to the system during the session. ++When larger changes have been made, or smaller changes have accumulated, ++the size of the saved top layer data grows. At this point, it would be ++nice to be able to merge the two overlay branches ('mods' and 'overlay') ++and rewrite the 'mods' squashfs, clearing the top layer and thus ++restoring save and load speed. ++ ++This merging is simplified by the use of another aufs mount, of just the ++two overlay branches using the 'shwh' option. ++# mount -t aufs -o ro,shwh,br:/livesys/overlay=ro+wh:/livesys/mods=rr+wh \ ++ aufs /livesys/merge_union ++ ++A merged view of these two branches is then available at ++/livesys/merge_union, and the new feature is that the whiteouts are ++visible! ++Note that in 'shwh' mode the aufs mount must be 'ro', which will disable ++writing to all branches. Also the default mode for all branches is 'ro'. ++It is now possible to save the combined contents of the two overlay ++branches to a new squashfs, e.g.: ++# mksquashfs /livesys/merge_union /path/to/newmods.squash ++ ++This new squashfs archive can be stored on the boot device and the ++initramfs will use it to replace the old one at the next boot. +diff -Naur null/Documentation/filesystems/aufs/design/10dynop.txt linux-5.15.36/Documentation/filesystems/aufs/design/10dynop.txt +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/design/10dynop.txt 2022-05-10 16:51:39.864744220 +0300 +@@ -0,0 +1,47 @@ ++ ++# Copyright (C) 2010-2021 Junjiro R. Okajima ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++Dynamically customizable FS operations ++---------------------------------------------------------------------- ++Generally FS operations (struct inode_operations, struct ++address_space_operations, struct file_operations, etc.) are defined as ++"static const", but it never means that FS have only one set of ++operation. Some FS have multiple sets of them. For instance, ext2 has ++three sets, one for XIP, for NOBH, and for normal. ++Since aufs overrides and redirects these operations, sometimes aufs has ++to change its behaviour according to the branch FS type. More importantly ++VFS acts differently if a function (member in the struct) is set or ++not. It means aufs should have several sets of operations and select one ++among them according to the branch FS definition. ++ ++In order to solve this problem and not to affect the behaviour of VFS, ++aufs defines these operations dynamically. For instance, aufs defines ++dummy direct_IO function for struct address_space_operations, but it may ++not be set to the address_space_operations actually. When the branch FS ++doesn't have it, aufs doesn't set it to its address_space_operations ++while the function definition itself is still alive. So the behaviour ++itself will not change, and it will return an error when direct_IO is ++not set. ++ ++The lifetime of these dynamically generated operation object is ++maintained by aufs branch object. When the branch is removed from aufs, ++the reference counter of the object is decremented. When it reaches ++zero, the dynamically generated operation object will be freed. ++ ++This approach is designed to support AIO (io_submit), Direct I/O and ++XIP (DAX) mainly. ++Currently this approach is applied to address_space_operations for ++regular files only. +diff -Naur null/Documentation/filesystems/aufs/README linux-5.15.36/Documentation/filesystems/aufs/README +--- /dev/null ++++ linux-5.15.36/Documentation/filesystems/aufs/README 2022-05-10 16:51:39.863744220 +0300 +@@ -0,0 +1,396 @@ ++ ++Aufs5 -- advanced multi layered unification filesystem version 5.x ++http://aufs.sf.net ++Junjiro R. Okajima ++ ++ ++0. Introduction ++---------------------------------------- ++In the early days, aufs was entirely re-designed and re-implemented ++Unionfs Version 1.x series. Adding many original ideas, approaches, ++improvements and implementations, it became totally different from ++Unionfs while keeping the basic features. ++Later, Unionfs Version 2.x series began taking some of the same ++approaches to aufs1's. ++Unionfs was being developed by Professor Erez Zadok at Stony Brook ++University and his team. ++ ++Aufs5 supports linux-v5.0 and later, If you want older kernel version ++support, ++- for linux-v4.x series, try aufs4-linux.git or aufs4-standalone.git ++- for linux-v3.x series, try aufs3-linux.git or aufs3-standalone.git ++- for linux-v2.6.16 and later, try aufs2-2.6.git, aufs2-standalone.git ++ or aufs1 from CVS on SourceForge. ++ ++Note: it becomes clear that "Aufs was rejected. Let's give it up." ++ According to Christoph Hellwig, linux rejects all union-type ++ filesystems but UnionMount. ++ ++ ++PS. Al Viro seems have a plan to merge aufs as well as overlayfs and ++ UnionMount, and he pointed out an issue around a directory mutex ++ lock and aufs addressed it. But it is still unsure whether aufs will ++ be merged (or any other union solution). ++ ++ ++ ++1. Features ++---------------------------------------- ++- unite several directories into a single virtual filesystem. The member ++ directory is called as a branch. ++- you can specify the permission flags to the branch, which are 'readonly', ++ 'readwrite' and 'whiteout-able.' ++- by upper writable branch, internal copyup and whiteout, files/dirs on ++ readonly branch are modifiable logically. ++- dynamic branch manipulation, add, del. ++- etc... ++ ++Also there are many enhancements in aufs, such as: ++- test only the highest one for the directory permission (dirperm1) ++- copyup on open (coo=) ++- 'move' policy for copy-up between two writable branches, after ++ checking free space. ++- xattr, acl ++- readdir(3) in userspace. ++- keep inode number by external inode number table ++- keep the timestamps of file/dir in internal copyup operation ++- seekable directory, supporting NFS readdir. ++- whiteout is hardlinked in order to reduce the consumption of inodes ++ on branch ++- do not copyup, nor create a whiteout when it is unnecessary ++- revert a single systemcall when an error occurs in aufs ++- remount interface instead of ioctl ++- maintain /etc/mtab by an external command, /sbin/mount.aufs. ++- loopback mounted filesystem as a branch ++- kernel thread for removing the dir who has a plenty of whiteouts ++- support copyup sparse file (a file which has a 'hole' in it) ++- default permission flags for branches ++- selectable permission flags for ro branch, whether whiteout can ++ exist or not ++- export via NFS. ++- support /fs/aufs and /aufs. ++- support multiple writable branches, some policies to select one ++ among multiple writable branches. ++- a new semantics for link(2) and rename(2) to support multiple ++ writable branches. ++- no glibc changes are required. ++- pseudo hardlink (hardlink over branches) ++- allow a direct access manually to a file on branch, e.g. bypassing aufs. ++ including NFS or remote filesystem branch. ++- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. ++- and more... ++ ++Currently these features are dropped temporary from aufs5. ++See design/08plan.txt in detail. ++- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs ++ (robr) ++- statistics of aufs thread (/sys/fs/aufs/stat) ++ ++Features or just an idea in the future (see also design/*.txt), ++- reorder the branch index without del/re-add. ++- permanent xino files for NFSD ++- an option for refreshing the opened files after add/del branches ++- light version, without branch manipulation. (unnecessary?) ++- copyup in userspace ++- inotify in userspace ++- readv/writev ++ ++ ++2. Download ++---------------------------------------- ++There are three GIT trees for aufs5, aufs5-linux.git, ++aufs5-standalone.git, and aufs-util.git. Note that there is no "5" in ++"aufs-util.git." ++While the aufs-util is always necessary, you need either of aufs5-linux ++or aufs5-standalone. ++ ++The aufs5-linux tree includes the whole linux mainline GIT tree, ++git://git.kernel.org/.../torvalds/linux.git. ++And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot ++build aufs5 as an external kernel module. ++Several extra patches are not included in this tree. Only ++aufs5-standalone tree contains them. They are described in the later ++section "Configuration and Compilation." ++ ++On the other hand, the aufs5-standalone tree has only aufs source files ++and necessary patches, and you can select CONFIG_AUFS_FS=m. ++But you need to apply all aufs patches manually. ++ ++You will find GIT branches whose name is in form of "aufs5.x" where "x" ++represents the linux kernel version, "linux-5.x". For instance, ++"aufs5.0" is for linux-5.0. For latest "linux-5.x-rcN", use ++"aufs5.x-rcN" branch. ++ ++o aufs5-linux tree ++$ git clone --reference /your/linux/git/tree \ ++ git://github.com/sfjro/aufs5-linux.git aufs5-linux.git ++- if you don't have linux GIT tree, then remove "--reference ..." ++$ cd aufs5-linux.git ++$ git checkout origin/aufs5.0 ++ ++Or You may want to directly git-pull aufs into your linux GIT tree, and ++leave the patch-work to GIT. ++$ cd /your/linux/git/tree ++$ git remote add aufs5 git://github.com/sfjro/aufs5-linux.git ++$ git fetch aufs5 ++$ git checkout -b my5.0 v5.0 ++$ (add your local change...) ++$ git pull aufs5 aufs5.0 ++- now you have v5.0 + your_changes + aufs5.0 in you my5.0 branch. ++- you may need to solve some conflicts between your_changes and ++ aufs5.0. in this case, git-rerere is recommended so that you can ++ solve the similar conflicts automatically when you upgrade to 5.1 or ++ later in the future. ++ ++o aufs5-standalone tree ++$ git clone git://github.com/sfjro/aufs5-standalone.git aufs5-standalone.git ++$ cd aufs5-standalone.git ++$ git checkout origin/aufs5.0 ++ ++o aufs-util tree ++$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git ++- note that the public aufs-util.git is on SourceForge instead of ++ GitHUB. ++$ cd aufs-util.git ++$ git checkout origin/aufs5.0 ++ ++Note: The 5.x-rcN branch is to be used with `rc' kernel versions ONLY. ++The minor version number, 'x' in '5.x', of aufs may not always ++follow the minor version number of the kernel. ++Because changes in the kernel that cause the use of a new ++minor version number do not always require changes to aufs-util. ++ ++Since aufs-util has its own minor version number, you may not be ++able to find a GIT branch in aufs-util for your kernel's ++exact minor version number. ++In this case, you should git-checkout the branch for the ++nearest lower number. ++ ++For (an unreleased) example: ++If you are using "linux-5.10" and the "aufs5.10" branch ++does not exist in aufs-util repository, then "aufs5.9", "aufs5.8" ++or something numerically smaller is the branch for your kernel. ++ ++Also you can view all branches by ++ $ git branch -a ++ ++ ++3. Configuration and Compilation ++---------------------------------------- ++Make sure you have git-checkout'ed the correct branch. ++ ++For aufs5-linux tree, ++- enable CONFIG_AUFS_FS. ++- set other aufs configurations if necessary. ++- for aufs5.13 and later ++ Because aufs is not only an ordinary filesystem (callee of VFS), but ++ also a caller of VFS functions for branch filesystems, subclassing of ++ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging ++ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will ++ need to customize some LOCKDEP numbers. Here are what I use on my ++ test environment. ++ CONFIG_LOCKDEP_BITS=21 ++ CONFIG_LOCKDEP_CHAINS_BITS=21 ++ CONFIG_LOCKDEP_STACK_TRACE_BITS=24 ++ ++For aufs5-standalone tree, ++There are several ways to build. ++ ++1. ++- apply ./aufs5-kbuild.patch to your kernel source files. ++- apply ./aufs5-base.patch too. ++- apply ./aufs5-mmap.patch too. ++- apply ./aufs5-standalone.patch too, if you have a plan to set ++ CONFIG_AUFS_FS=m. otherwise you don't need ./aufs5-standalone.patch. ++- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your ++ kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. ++- enable CONFIG_AUFS_FS, you can select either ++ =m or =y. ++- and build your kernel as usual. ++- install the built kernel. ++- install the header files too by "make headers_install" to the ++ directory where you specify. By default, it is $PWD/usr. ++ "make help" shows a brief note for headers_install. ++- and reboot your system. ++ ++2. ++- module only (CONFIG_AUFS_FS=m). ++- apply ./aufs5-base.patch to your kernel source files. ++- apply ./aufs5-mmap.patch too. ++- apply ./aufs5-standalone.patch too. ++- build your kernel, don't forget "make headers_install", and reboot. ++- edit ./config.mk and set other aufs configurations if necessary. ++ Note: You should read $PWD/fs/aufs/Kconfig carefully which describes ++ every aufs configurations. ++- build the module by simple "make". ++- you can specify ${KDIR} make variable which points to your kernel ++ source tree. ++- install the files ++ + run "make install" to install the aufs module, or copy the built ++ $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply). ++ + run "make install_headers" (instead of headers_install) to install ++ the modified aufs header file (you can specify DESTDIR which is ++ available in aufs standalone version's Makefile only), or copy ++ $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever ++ you like manually. By default, the target directory is $PWD/usr. ++- no need to apply aufs5-kbuild.patch, nor copying source files to your ++ kernel source tree. ++ ++Note: The header file aufs_type.h is necessary to build aufs-util ++ as well as "make headers_install" in the kernel source tree. ++ headers_install is subject to be forgotten, but it is essentially ++ necessary, not only for building aufs-util. ++ You may not meet problems without headers_install in some older ++ version though. ++ ++And then, ++- read README in aufs-util, build and install it ++- note that your distribution may contain an obsoleted version of ++ aufs_type.h in /usr/include/linux or something. When you build aufs ++ utilities, make sure that your compiler refers the correct aufs header ++ file which is built by "make headers_install." ++- if you want to use readdir(3) in userspace or pathconf(3) wrapper, ++ then run "make install_ulib" too. And refer to the aufs manual in ++ detail. ++ ++There several other patches in aufs5-standalone.git. They are all ++optional. When you meet some problems, they will help you. ++- aufs5-loopback.patch ++ Supports a nested loopback mount in a branch-fs. This patch is ++ unnecessary until aufs produces a message like "you may want to try ++ another patch for loopback file". ++- vfs-ino.patch ++ Modifies a system global kernel internal function get_next_ino() in ++ order to stop assigning 0 for an inode-number. Not directly related to ++ aufs, but recommended generally. ++- tmpfs-idr.patch ++ Keeps the tmpfs inode number as the lowest value. Effective to reduce ++ the size of aufs XINO files for tmpfs branch. Also it prevents the ++ duplication of inode number, which is important for backup tools and ++ other utilities. When you find aufs XINO files for tmpfs branch ++ growing too much, try this patch. ++ ++ ++4. Usage ++---------------------------------------- ++At first, make sure aufs-util are installed, and please read the aufs ++manual, aufs.5 in aufs-util.git tree. ++$ man -l aufs.5 ++ ++And then, ++$ mkdir /tmp/rw /tmp/aufs ++# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs ++ ++Here is another example. The result is equivalent. ++# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs ++ Or ++# mount -t aufs -o br:/tmp/rw none /tmp/aufs ++# mount -o remount,append:${HOME} /tmp/aufs ++ ++Then, you can see whole tree of your home dir through /tmp/aufs. If ++you modify a file under /tmp/aufs, the one on your home directory is ++not affected, instead the same named file will be newly created under ++/tmp/rw. And all of your modification to a file will be applied to ++the one under /tmp/rw. This is called the file based Copy on Write ++(COW) method. ++Aufs mount options are described in aufs.5. ++If you run chroot or something and make your aufs as a root directory, ++then you need to customize the shutdown script. See the aufs manual in ++detail. ++ ++Additionally, there are some sample usages of aufs which are a ++diskless system with network booting, and LiveCD over NFS. ++See sample dir in CVS tree on SourceForge. ++ ++ ++5. Contact ++---------------------------------------- ++When you have any problems or strange behaviour in aufs, please let me ++know with: ++- /proc/mounts (instead of the output of mount(8)) ++- /sys/module/aufs/* ++- /sys/fs/aufs/* (if you have them) ++- /debug/aufs/* (if you have them) ++- linux kernel version ++ if your kernel is not plain, for example modified by distributor, ++ the url where i can download its source is necessary too. ++- aufs version which was printed at loading the module or booting the ++ system, instead of the date you downloaded. ++- configuration (define/undefine CONFIG_AUFS_xxx) ++- kernel configuration or /proc/config.gz (if you have it) ++- LSM (linux security module, if you are using) ++- behaviour which you think to be incorrect ++- actual operation, reproducible one is better ++- mailto: aufs-users at lists.sourceforge.net ++ ++Usually, I don't watch the Public Areas(Bugs, Support Requests, Patches, ++and Feature Requests) on SourceForge. Please join and write to ++aufs-users ML. ++ ++ ++6. Acknowledgements ++---------------------------------------- ++Thanks to everyone who have tried and are using aufs, whoever ++have reported a bug or any feedback. ++ ++Especially donators: ++Tomas Matejicek(slax.org) made a donation (much more than once). ++ Since Apr 2010, Tomas M (the author of Slax and Linux Live ++ scripts) is making "doubling" donations. ++ Unfortunately I cannot list all of the donators, but I really ++ appreciate. ++ It ends Aug 2010, but the ordinary donation URL is still available. ++ ++Dai Itasaka made a donation (2007/8). ++Chuck Smith made a donation (2008/4, 10 and 12). ++Henk Schoneveld made a donation (2008/9). ++Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10). ++Francois Dupoux made a donation (2008/11). ++Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public ++ aufs2 GIT tree (2009/2). ++William Grant made a donation (2009/3). ++Patrick Lane made a donation (2009/4). ++The Mail Archive (mail-archive.com) made donations (2009/5). ++Nippy Networks (Ed Wildgoose) made a donation (2009/7). ++New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11). ++Pavel Pronskiy made a donation (2011/2). ++Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy ++ Networks (Ed Wildgoose) made a donation for hardware (2011/3). ++Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and ++11). ++Sam Liddicott made a donation (2011/9). ++Era Scarecrow made a donation (2013/4). ++Bor Ratajc made a donation (2013/4). ++Alessandro Gorreta made a donation (2013/4). ++POIRETTE Marc made a donation (2013/4). ++Alessandro Gorreta made a donation (2013/4). ++lauri kasvandik made a donation (2013/5). ++"pemasu from Finland" made a donation (2013/7). ++The Parted Magic Project made a donation (2013/9 and 11). ++Pavel Barta made a donation (2013/10). ++Nikolay Pertsev made a donation (2014/5). ++James B made a donation (2014/7, 2015/7, and 2021/12). ++Stefano Di Biase made a donation (2014/8). ++Daniel Epellei made a donation (2015/1). ++OmegaPhil made a donation (2016/1, 2018/4). ++Tomasz Szewczyk made a donation (2016/4). ++James Burry made a donation (2016/12). ++Carsten Rose made a donation (2018/9). ++Porteus Kiosk made a donation (2018/10). ++ ++Thank you very much. ++Donations are always, including future donations, very important and ++helpful for me to keep on developing aufs. ++ ++ ++7. ++---------------------------------------- ++If you are an experienced user, no explanation is needed. Aufs is ++just a linux filesystem. ++ ++ ++Enjoy! ++ ++# Local variables: ; ++# mode: text; ++# End: ; +diff -Naur null/fs/aufs/aufs.h linux-5.15.36/fs/aufs/aufs.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/aufs.h 2022-05-10 16:51:39.866744220 +0300 +@@ -0,0 +1,62 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * all header files ++ */ ++ ++#ifndef __AUFS_H__ ++#define __AUFS_H__ ++ ++#ifdef __KERNEL__ ++ ++#define AuStub(type, name, body, ...) \ ++ static inline type name(__VA_ARGS__) { body; } ++ ++#define AuStubVoid(name, ...) \ ++ AuStub(void, name, , __VA_ARGS__) ++#define AuStubInt0(name, ...) \ ++ AuStub(int, name, return 0, __VA_ARGS__) ++ ++#include "debug.h" ++ ++#include "branch.h" ++#include "cpup.h" ++#include "dcsub.h" ++#include "dbgaufs.h" ++#include "dentry.h" ++#include "dir.h" ++#include "dirren.h" ++#include "dynop.h" ++#include "file.h" ++#include "fstype.h" ++#include "hbl.h" ++#include "inode.h" ++#include "lcnt.h" ++#include "loop.h" ++#include "module.h" ++#include "opts.h" ++#include "rwsem.h" ++#include "super.h" ++#include "sysaufs.h" ++#include "vfsub.h" ++#include "whout.h" ++#include "wkq.h" ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_H__ */ +diff -Naur null/fs/aufs/branch.c linux-5.15.36/fs/aufs/branch.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/branch.c 2022-05-10 16:51:39.866744220 +0300 +@@ -0,0 +1,1427 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * branch management ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++/* ++ * free a single branch ++ */ ++static void au_br_do_free(struct au_branch *br) ++{ ++ int i; ++ struct au_wbr *wbr; ++ struct au_dykey **key; ++ ++ au_hnotify_fin_br(br); ++ /* always, regardless the mount option */ ++ au_dr_hino_free(&br->br_dirren); ++ au_xino_put(br); ++ ++ AuLCntZero(au_lcnt_read(&br->br_nfiles, /*do_rev*/0)); ++ au_lcnt_fin(&br->br_nfiles, /*do_sync*/0); ++ AuLCntZero(au_lcnt_read(&br->br_count, /*do_rev*/0)); ++ au_lcnt_fin(&br->br_count, /*do_sync*/0); ++ ++ wbr = br->br_wbr; ++ if (wbr) { ++ for (i = 0; i < AuBrWh_Last; i++) ++ dput(wbr->wbr_wh[i]); ++ AuDebugOn(atomic_read(&wbr->wbr_wh_running)); ++ AuRwDestroy(&wbr->wbr_wh_rwsem); ++ } ++ ++ if (br->br_fhsm) { ++ au_br_fhsm_fin(br->br_fhsm); ++ au_kfree_try_rcu(br->br_fhsm); ++ } ++ ++ key = br->br_dykey; ++ for (i = 0; i < AuBrDynOp; i++, key++) ++ if (*key) ++ au_dy_put(*key); ++ else ++ break; ++ ++ /* recursive lock, s_umount of branch's */ ++ /* synchronize_rcu(); */ /* why? */ ++ lockdep_off(); ++ path_put(&br->br_path); ++ lockdep_on(); ++ au_kfree_rcu(wbr); ++ au_lcnt_wait_for_fin(&br->br_nfiles); ++ au_lcnt_wait_for_fin(&br->br_count); ++ /* I don't know why, but percpu_refcount requires this */ ++ /* synchronize_rcu(); */ ++ au_kfree_rcu(br); ++} ++ ++/* ++ * frees all branches ++ */ ++void au_br_free(struct au_sbinfo *sbinfo) ++{ ++ aufs_bindex_t bmax; ++ struct au_branch **br; ++ ++ AuRwMustWriteLock(&sbinfo->si_rwsem); ++ ++ bmax = sbinfo->si_bbot + 1; ++ br = sbinfo->si_branch; ++ while (bmax--) ++ au_br_do_free(*br++); ++} ++ ++/* ++ * find the index of a branch which is specified by @br_id. ++ */ ++int au_br_index(struct super_block *sb, aufs_bindex_t br_id) ++{ ++ aufs_bindex_t bindex, bbot; ++ ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) ++ if (au_sbr_id(sb, bindex) == br_id) ++ return bindex; ++ return -1; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * add a branch ++ */ ++ ++static int test_overlap(struct super_block *sb, struct dentry *h_adding, ++ struct dentry *h_root) ++{ ++ if (unlikely(h_adding == h_root ++ || au_test_loopback_overlap(sb, h_adding))) ++ return 1; ++ if (h_adding->d_sb != h_root->d_sb) ++ return 0; ++ return au_test_subdir(h_adding, h_root) ++ || au_test_subdir(h_root, h_adding); ++} ++ ++/* ++ * returns a newly allocated branch. @new_nbranch is a number of branches ++ * after adding a branch. ++ */ ++static struct au_branch *au_br_alloc(struct super_block *sb, int new_nbranch, ++ int perm) ++{ ++ struct au_branch *add_branch; ++ struct dentry *root; ++ struct inode *inode; ++ int err; ++ ++ err = -ENOMEM; ++ add_branch = kzalloc(sizeof(*add_branch), GFP_NOFS); ++ if (unlikely(!add_branch)) ++ goto out; ++ add_branch->br_xino = au_xino_alloc(/*nfile*/1); ++ if (unlikely(!add_branch->br_xino)) ++ goto out_br; ++ err = au_hnotify_init_br(add_branch, perm); ++ if (unlikely(err)) ++ goto out_xino; ++ ++ if (au_br_writable(perm)) { ++ /* may be freed separately at changing the branch permission */ ++ add_branch->br_wbr = kzalloc(sizeof(*add_branch->br_wbr), ++ GFP_NOFS); ++ if (unlikely(!add_branch->br_wbr)) ++ goto out_hnotify; ++ } ++ ++ if (au_br_fhsm(perm)) { ++ err = au_fhsm_br_alloc(add_branch); ++ if (unlikely(err)) ++ goto out_wbr; ++ } ++ ++ root = sb->s_root; ++ err = au_sbr_realloc(au_sbi(sb), new_nbranch, /*may_shrink*/0); ++ if (!err) ++ err = au_di_realloc(au_di(root), new_nbranch, /*may_shrink*/0); ++ if (!err) { ++ inode = d_inode(root); ++ err = au_hinode_realloc(au_ii(inode), new_nbranch, ++ /*may_shrink*/0); ++ } ++ if (!err) ++ return add_branch; /* success */ ++ ++out_wbr: ++ au_kfree_rcu(add_branch->br_wbr); ++out_hnotify: ++ au_hnotify_fin_br(add_branch); ++out_xino: ++ au_xino_put(add_branch); ++out_br: ++ au_kfree_rcu(add_branch); ++out: ++ return ERR_PTR(err); ++} ++ ++/* ++ * test if the branch permission is legal or not. ++ */ ++static int test_br(struct inode *inode, int brperm, char *path) ++{ ++ int err; ++ ++ err = (au_br_writable(brperm) && IS_RDONLY(inode)); ++ if (!err) ++ goto out; ++ ++ err = -EINVAL; ++ pr_err("write permission for readonly mount or inode, %s\n", path); ++ ++out: ++ return err; ++} ++ ++/* ++ * returns: ++ * 0: success, the caller will add it ++ * plus: success, it is already unified, the caller should ignore it ++ * minus: error ++ */ ++static int test_add(struct super_block *sb, struct au_opt_add *add, int remount) ++{ ++ int err; ++ aufs_bindex_t bbot, bindex; ++ struct dentry *root, *h_dentry; ++ struct inode *inode, *h_inode; ++ ++ root = sb->s_root; ++ bbot = au_sbbot(sb); ++ if (unlikely(bbot >= 0 ++ && au_find_dbindex(root, add->path.dentry) >= 0)) { ++ err = 1; ++ if (!remount) { ++ err = -EINVAL; ++ pr_err("%s duplicated\n", add->pathname); ++ } ++ goto out; ++ } ++ ++ err = -ENOSPC; /* -E2BIG; */ ++ if (unlikely(AUFS_BRANCH_MAX <= add->bindex ++ || AUFS_BRANCH_MAX - 1 <= bbot)) { ++ pr_err("number of branches exceeded %s\n", add->pathname); ++ goto out; ++ } ++ ++ err = -EDOM; ++ if (unlikely(add->bindex < 0 || bbot + 1 < add->bindex)) { ++ pr_err("bad index %d\n", add->bindex); ++ goto out; ++ } ++ ++ inode = d_inode(add->path.dentry); ++ err = -ENOENT; ++ if (unlikely(!inode->i_nlink)) { ++ pr_err("no existence %s\n", add->pathname); ++ goto out; ++ } ++ ++ err = -EINVAL; ++ if (unlikely(inode->i_sb == sb)) { ++ pr_err("%s must be outside\n", add->pathname); ++ goto out; ++ } ++ ++ if (unlikely(au_test_fs_unsuppoted(inode->i_sb))) { ++ pr_err("unsupported filesystem, %s (%s)\n", ++ add->pathname, au_sbtype(inode->i_sb)); ++ goto out; ++ } ++ ++ if (unlikely(inode->i_sb->s_stack_depth)) { ++ pr_err("already stacked, %s (%s)\n", ++ add->pathname, au_sbtype(inode->i_sb)); ++ goto out; ++ } ++ ++ err = test_br(d_inode(add->path.dentry), add->perm, add->pathname); ++ if (unlikely(err)) ++ goto out; ++ ++ if (bbot < 0) ++ return 0; /* success */ ++ ++ err = -EINVAL; ++ for (bindex = 0; bindex <= bbot; bindex++) ++ if (unlikely(test_overlap(sb, add->path.dentry, ++ au_h_dptr(root, bindex)))) { ++ pr_err("%s is overlapped\n", add->pathname); ++ goto out; ++ } ++ ++ err = 0; ++ if (au_opt_test(au_mntflags(sb), WARN_PERM)) { ++ h_dentry = au_h_dptr(root, 0); ++ h_inode = d_inode(h_dentry); ++ if ((h_inode->i_mode & S_IALLUGO) != (inode->i_mode & S_IALLUGO) ++ || !uid_eq(h_inode->i_uid, inode->i_uid) ++ || !gid_eq(h_inode->i_gid, inode->i_gid)) ++ pr_warn("uid/gid/perm %s %u/%u/0%o, %u/%u/0%o\n", ++ add->pathname, ++ i_uid_read(inode), i_gid_read(inode), ++ (inode->i_mode & S_IALLUGO), ++ i_uid_read(h_inode), i_gid_read(h_inode), ++ (h_inode->i_mode & S_IALLUGO)); ++ } ++ ++out: ++ return err; ++} ++ ++/* ++ * initialize or clean the whiteouts for an adding branch ++ */ ++static int au_br_init_wh(struct super_block *sb, struct au_branch *br, ++ int new_perm) ++{ ++ int err, old_perm; ++ aufs_bindex_t bindex; ++ struct inode *h_inode; ++ struct au_wbr *wbr; ++ struct au_hinode *hdir; ++ struct dentry *h_dentry; ++ ++ err = vfsub_mnt_want_write(au_br_mnt(br)); ++ if (unlikely(err)) ++ goto out; ++ ++ wbr = br->br_wbr; ++ old_perm = br->br_perm; ++ br->br_perm = new_perm; ++ hdir = NULL; ++ h_inode = NULL; ++ bindex = au_br_index(sb, br->br_id); ++ if (0 <= bindex) { ++ hdir = au_hi(d_inode(sb->s_root), bindex); ++ au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); ++ } else { ++ h_dentry = au_br_dentry(br); ++ h_inode = d_inode(h_dentry); ++ inode_lock_nested(h_inode, AuLsc_I_PARENT); ++ } ++ if (!wbr) ++ err = au_wh_init(br, sb); ++ else { ++ wbr_wh_write_lock(wbr); ++ err = au_wh_init(br, sb); ++ wbr_wh_write_unlock(wbr); ++ } ++ if (hdir) ++ au_hn_inode_unlock(hdir); ++ else ++ inode_unlock(h_inode); ++ vfsub_mnt_drop_write(au_br_mnt(br)); ++ br->br_perm = old_perm; ++ ++ if (!err && wbr && !au_br_writable(new_perm)) { ++ au_kfree_rcu(wbr); ++ br->br_wbr = NULL; ++ } ++ ++out: ++ return err; ++} ++ ++static int au_wbr_init(struct au_branch *br, struct super_block *sb, ++ int perm) ++{ ++ int err; ++ struct kstatfs kst; ++ struct au_wbr *wbr; ++ ++ wbr = br->br_wbr; ++ au_rw_init(&wbr->wbr_wh_rwsem); ++ atomic_set(&wbr->wbr_wh_running, 0); ++ ++ /* ++ * a limit for rmdir/rename a dir ++ * cf. AUFS_MAX_NAMELEN in include/uapi/linux/aufs_type.h ++ */ ++ err = vfs_statfs(&br->br_path, &kst); ++ if (unlikely(err)) ++ goto out; ++ err = -EINVAL; ++ if (kst.f_namelen >= NAME_MAX) ++ err = au_br_init_wh(sb, br, perm); ++ else ++ pr_err("%pd(%s), unsupported namelen %ld\n", ++ au_br_dentry(br), ++ au_sbtype(au_br_dentry(br)->d_sb), kst.f_namelen); ++ ++out: ++ return err; ++} ++ ++/* initialize a new branch */ ++static int au_br_init(struct au_branch *br, struct super_block *sb, ++ struct au_opt_add *add) ++{ ++ int err; ++ struct au_branch *brbase; ++ struct file *xf; ++ struct inode *h_inode; ++ ++ err = 0; ++ br->br_perm = add->perm; ++ br->br_path = add->path; /* set first, path_get() later */ ++ spin_lock_init(&br->br_dykey_lock); ++ au_lcnt_init(&br->br_nfiles, /*release*/NULL); ++ au_lcnt_init(&br->br_count, /*release*/NULL); ++ br->br_id = au_new_br_id(sb); ++ AuDebugOn(br->br_id < 0); ++ ++ /* always, regardless the given option */ ++ err = au_dr_br_init(sb, br, &add->path); ++ if (unlikely(err)) ++ goto out_err; ++ ++ if (au_br_writable(add->perm)) { ++ err = au_wbr_init(br, sb, add->perm); ++ if (unlikely(err)) ++ goto out_err; ++ } ++ ++ if (au_opt_test(au_mntflags(sb), XINO)) { ++ brbase = au_sbr(sb, 0); ++ xf = au_xino_file(brbase->br_xino, /*idx*/-1); ++ AuDebugOn(!xf); ++ h_inode = d_inode(add->path.dentry); ++ err = au_xino_init_br(sb, br, h_inode->i_ino, &xf->f_path); ++ if (unlikely(err)) { ++ AuDebugOn(au_xino_file(br->br_xino, /*idx*/-1)); ++ goto out_err; ++ } ++ } ++ ++ sysaufs_br_init(br); ++ path_get(&br->br_path); ++ goto out; /* success */ ++ ++out_err: ++ memset(&br->br_path, 0, sizeof(br->br_path)); ++out: ++ return err; ++} ++ ++static void au_br_do_add_brp(struct au_sbinfo *sbinfo, aufs_bindex_t bindex, ++ struct au_branch *br, aufs_bindex_t bbot, ++ aufs_bindex_t amount) ++{ ++ struct au_branch **brp; ++ ++ AuRwMustWriteLock(&sbinfo->si_rwsem); ++ ++ brp = sbinfo->si_branch + bindex; ++ memmove(brp + 1, brp, sizeof(*brp) * amount); ++ *brp = br; ++ sbinfo->si_bbot++; ++ if (unlikely(bbot < 0)) ++ sbinfo->si_bbot = 0; ++} ++ ++static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, ++ aufs_bindex_t bbot, aufs_bindex_t amount) ++{ ++ struct au_hdentry *hdp; ++ ++ AuRwMustWriteLock(&dinfo->di_rwsem); ++ ++ hdp = au_hdentry(dinfo, bindex); ++ memmove(hdp + 1, hdp, sizeof(*hdp) * amount); ++ au_h_dentry_init(hdp); ++ dinfo->di_bbot++; ++ if (unlikely(bbot < 0)) ++ dinfo->di_btop = 0; ++} ++ ++static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, ++ aufs_bindex_t bbot, aufs_bindex_t amount) ++{ ++ struct au_hinode *hip; ++ ++ AuRwMustWriteLock(&iinfo->ii_rwsem); ++ ++ hip = au_hinode(iinfo, bindex); ++ memmove(hip + 1, hip, sizeof(*hip) * amount); ++ au_hinode_init(hip); ++ iinfo->ii_bbot++; ++ if (unlikely(bbot < 0)) ++ iinfo->ii_btop = 0; ++} ++ ++static void au_br_do_add(struct super_block *sb, struct au_branch *br, ++ aufs_bindex_t bindex) ++{ ++ struct dentry *root, *h_dentry; ++ struct inode *root_inode, *h_inode; ++ aufs_bindex_t bbot, amount; ++ ++ root = sb->s_root; ++ root_inode = d_inode(root); ++ bbot = au_sbbot(sb); ++ amount = bbot + 1 - bindex; ++ h_dentry = au_br_dentry(br); ++ au_sbilist_lock(); ++ au_br_do_add_brp(au_sbi(sb), bindex, br, bbot, amount); ++ au_br_do_add_hdp(au_di(root), bindex, bbot, amount); ++ au_br_do_add_hip(au_ii(root_inode), bindex, bbot, amount); ++ au_set_h_dptr(root, bindex, dget(h_dentry)); ++ h_inode = d_inode(h_dentry); ++ au_set_h_iptr(root_inode, bindex, au_igrab(h_inode), /*flags*/0); ++ au_sbilist_unlock(); ++} ++ ++int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount) ++{ ++ int err; ++ aufs_bindex_t bbot, add_bindex; ++ struct dentry *root, *h_dentry; ++ struct inode *root_inode; ++ struct au_branch *add_branch; ++ ++ root = sb->s_root; ++ root_inode = d_inode(root); ++ IMustLock(root_inode); ++ IiMustWriteLock(root_inode); ++ err = test_add(sb, add, remount); ++ if (unlikely(err < 0)) ++ goto out; ++ if (err) { ++ err = 0; ++ goto out; /* success */ ++ } ++ ++ bbot = au_sbbot(sb); ++ add_branch = au_br_alloc(sb, bbot + 2, add->perm); ++ err = PTR_ERR(add_branch); ++ if (IS_ERR(add_branch)) ++ goto out; ++ ++ err = au_br_init(add_branch, sb, add); ++ if (unlikely(err)) { ++ au_br_do_free(add_branch); ++ goto out; ++ } ++ ++ add_bindex = add->bindex; ++ sysaufs_brs_del(sb, add_bindex); /* remove successors */ ++ au_br_do_add(sb, add_branch, add_bindex); ++ sysaufs_brs_add(sb, add_bindex); /* append successors */ ++ dbgaufs_brs_add(sb, add_bindex, /*topdown*/0); /* rename successors */ ++ ++ h_dentry = add->path.dentry; ++ if (!add_bindex) { ++ au_cpup_attr_all(root_inode, /*force*/1); ++ sb->s_maxbytes = h_dentry->d_sb->s_maxbytes; ++ } else ++ au_add_nlink(root_inode, d_inode(h_dentry)); ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static unsigned long long au_farray_cb(struct super_block *sb, void *a, ++ unsigned long long max __maybe_unused, ++ void *arg) ++{ ++ unsigned long long n; ++ struct file **p, *f; ++ struct hlist_bl_head *files; ++ struct hlist_bl_node *pos; ++ struct au_finfo *finfo; ++ ++ n = 0; ++ p = a; ++ files = &au_sbi(sb)->si_files; ++ hlist_bl_lock(files); ++ hlist_bl_for_each_entry(finfo, pos, files, fi_hlist) { ++ f = finfo->fi_file; ++ if (file_count(f) ++ && !special_file(file_inode(f)->i_mode)) { ++ get_file(f); ++ *p++ = f; ++ n++; ++ AuDebugOn(n > max); ++ } ++ } ++ hlist_bl_unlock(files); ++ ++ return n; ++} ++ ++static struct file **au_farray_alloc(struct super_block *sb, ++ unsigned long long *max) ++{ ++ struct au_sbinfo *sbi; ++ ++ sbi = au_sbi(sb); ++ *max = au_lcnt_read(&sbi->si_nfiles, /*do_rev*/1); ++ return au_array_alloc(max, au_farray_cb, sb, /*arg*/NULL); ++} ++ ++static void au_farray_free(struct file **a, unsigned long long max) ++{ ++ unsigned long long ull; ++ ++ for (ull = 0; ull < max; ull++) ++ if (a[ull]) ++ fput(a[ull]); ++ kvfree(a); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * delete a branch ++ */ ++ ++/* to show the line number, do not make it inlined function */ ++#define AuVerbose(do_info, fmt, ...) do { \ ++ if (do_info) \ ++ pr_info(fmt, ##__VA_ARGS__); \ ++} while (0) ++ ++static int au_test_ibusy(struct inode *inode, aufs_bindex_t btop, ++ aufs_bindex_t bbot) ++{ ++ return (inode && !S_ISDIR(inode->i_mode)) || btop == bbot; ++} ++ ++static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t btop, ++ aufs_bindex_t bbot) ++{ ++ return au_test_ibusy(d_inode(dentry), btop, bbot); ++} ++ ++/* ++ * test if the branch is deletable or not. ++ */ ++static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex, ++ unsigned int sigen, const unsigned int verbose) ++{ ++ int err, i, j, ndentry; ++ aufs_bindex_t btop, bbot; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ struct dentry *d; ++ ++ err = au_dpages_init(&dpages, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ err = au_dcsub_pages(&dpages, root, NULL, NULL); ++ if (unlikely(err)) ++ goto out_dpages; ++ ++ for (i = 0; !err && i < dpages.ndpage; i++) { ++ dpage = dpages.dpages + i; ++ ndentry = dpage->ndentry; ++ for (j = 0; !err && j < ndentry; j++) { ++ d = dpage->dentries[j]; ++ AuDebugOn(au_dcount(d) <= 0); ++ if (!au_digen_test(d, sigen)) { ++ di_read_lock_child(d, AuLock_IR); ++ if (unlikely(au_dbrange_test(d))) { ++ di_read_unlock(d, AuLock_IR); ++ continue; ++ } ++ } else { ++ di_write_lock_child(d); ++ if (unlikely(au_dbrange_test(d))) { ++ di_write_unlock(d); ++ continue; ++ } ++ err = au_reval_dpath(d, sigen); ++ if (!err) ++ di_downgrade_lock(d, AuLock_IR); ++ else { ++ di_write_unlock(d); ++ break; ++ } ++ } ++ ++ /* AuDbgDentry(d); */ ++ btop = au_dbtop(d); ++ bbot = au_dbbot(d); ++ if (btop <= bindex ++ && bindex <= bbot ++ && au_h_dptr(d, bindex) ++ && au_test_dbusy(d, btop, bbot)) { ++ err = -EBUSY; ++ AuVerbose(verbose, "busy %pd\n", d); ++ AuDbgDentry(d); ++ } ++ di_read_unlock(d, AuLock_IR); ++ } ++ } ++ ++out_dpages: ++ au_dpages_free(&dpages); ++out: ++ return err; ++} ++ ++static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex, ++ unsigned int sigen, const unsigned int verbose) ++{ ++ int err; ++ unsigned long long max, ull; ++ struct inode *i, **array; ++ aufs_bindex_t btop, bbot; ++ ++ array = au_iarray_alloc(sb, &max); ++ err = PTR_ERR(array); ++ if (IS_ERR(array)) ++ goto out; ++ ++ err = 0; ++ AuDbg("b%d\n", bindex); ++ for (ull = 0; !err && ull < max; ull++) { ++ i = array[ull]; ++ if (unlikely(!i)) ++ break; ++ if (i->i_ino == AUFS_ROOT_INO) ++ continue; ++ ++ /* AuDbgInode(i); */ ++ if (au_iigen(i, NULL) == sigen) ++ ii_read_lock_child(i); ++ else { ++ ii_write_lock_child(i); ++ err = au_refresh_hinode_self(i); ++ au_iigen_dec(i); ++ if (!err) ++ ii_downgrade_lock(i); ++ else { ++ ii_write_unlock(i); ++ break; ++ } ++ } ++ ++ btop = au_ibtop(i); ++ bbot = au_ibbot(i); ++ if (btop <= bindex ++ && bindex <= bbot ++ && au_h_iptr(i, bindex) ++ && au_test_ibusy(i, btop, bbot)) { ++ err = -EBUSY; ++ AuVerbose(verbose, "busy i%lu\n", i->i_ino); ++ AuDbgInode(i); ++ } ++ ii_read_unlock(i); ++ } ++ au_iarray_free(array, max); ++ ++out: ++ return err; ++} ++ ++static int test_children_busy(struct dentry *root, aufs_bindex_t bindex, ++ const unsigned int verbose) ++{ ++ int err; ++ unsigned int sigen; ++ ++ sigen = au_sigen(root->d_sb); ++ DiMustNoWaiters(root); ++ IiMustNoWaiters(d_inode(root)); ++ di_write_unlock(root); ++ err = test_dentry_busy(root, bindex, sigen, verbose); ++ if (!err) ++ err = test_inode_busy(root->d_sb, bindex, sigen, verbose); ++ di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */ ++ ++ return err; ++} ++ ++static int test_dir_busy(struct file *file, aufs_bindex_t br_id, ++ struct file **to_free, int *idx) ++{ ++ int err; ++ unsigned char matched, root; ++ aufs_bindex_t bindex, bbot; ++ struct au_fidir *fidir; ++ struct au_hfile *hfile; ++ ++ err = 0; ++ root = IS_ROOT(file->f_path.dentry); ++ if (root) { ++ get_file(file); ++ to_free[*idx] = file; ++ (*idx)++; ++ goto out; ++ } ++ ++ matched = 0; ++ fidir = au_fi(file)->fi_hdir; ++ AuDebugOn(!fidir); ++ bbot = au_fbbot_dir(file); ++ for (bindex = au_fbtop(file); bindex <= bbot; bindex++) { ++ hfile = fidir->fd_hfile + bindex; ++ if (!hfile->hf_file) ++ continue; ++ ++ if (hfile->hf_br->br_id == br_id) { ++ matched = 1; ++ break; ++ } ++ } ++ if (matched) ++ err = -EBUSY; ++ ++out: ++ return err; ++} ++ ++static int test_file_busy(struct super_block *sb, aufs_bindex_t br_id, ++ struct file **to_free, int opened) ++{ ++ int err, idx; ++ unsigned long long ull, max; ++ aufs_bindex_t btop; ++ struct file *file, **array; ++ struct dentry *root; ++ struct au_hfile *hfile; ++ ++ array = au_farray_alloc(sb, &max); ++ err = PTR_ERR(array); ++ if (IS_ERR(array)) ++ goto out; ++ ++ err = 0; ++ idx = 0; ++ root = sb->s_root; ++ di_write_unlock(root); ++ for (ull = 0; ull < max; ull++) { ++ file = array[ull]; ++ if (unlikely(!file)) ++ break; ++ ++ /* AuDbg("%pD\n", file); */ ++ fi_read_lock(file); ++ btop = au_fbtop(file); ++ if (!d_is_dir(file->f_path.dentry)) { ++ hfile = &au_fi(file)->fi_htop; ++ if (hfile->hf_br->br_id == br_id) ++ err = -EBUSY; ++ } else ++ err = test_dir_busy(file, br_id, to_free, &idx); ++ fi_read_unlock(file); ++ if (unlikely(err)) ++ break; ++ } ++ di_write_lock_child(root); ++ au_farray_free(array, max); ++ AuDebugOn(idx > opened); ++ ++out: ++ return err; ++} ++ ++static void br_del_file(struct file **to_free, unsigned long long opened, ++ aufs_bindex_t br_id) ++{ ++ unsigned long long ull; ++ aufs_bindex_t bindex, btop, bbot, bfound; ++ struct file *file; ++ struct au_fidir *fidir; ++ struct au_hfile *hfile; ++ ++ for (ull = 0; ull < opened; ull++) { ++ file = to_free[ull]; ++ if (unlikely(!file)) ++ break; ++ ++ /* AuDbg("%pD\n", file); */ ++ AuDebugOn(!d_is_dir(file->f_path.dentry)); ++ bfound = -1; ++ fidir = au_fi(file)->fi_hdir; ++ AuDebugOn(!fidir); ++ fi_write_lock(file); ++ btop = au_fbtop(file); ++ bbot = au_fbbot_dir(file); ++ for (bindex = btop; bindex <= bbot; bindex++) { ++ hfile = fidir->fd_hfile + bindex; ++ if (!hfile->hf_file) ++ continue; ++ ++ if (hfile->hf_br->br_id == br_id) { ++ bfound = bindex; ++ break; ++ } ++ } ++ AuDebugOn(bfound < 0); ++ au_set_h_fptr(file, bfound, NULL); ++ if (bfound == btop) { ++ for (btop++; btop <= bbot; btop++) ++ if (au_hf_dir(file, btop)) { ++ au_set_fbtop(file, btop); ++ break; ++ } ++ } ++ fi_write_unlock(file); ++ } ++} ++ ++static void au_br_do_del_brp(struct au_sbinfo *sbinfo, ++ const aufs_bindex_t bindex, ++ const aufs_bindex_t bbot) ++{ ++ struct au_branch **brp, **p; ++ ++ AuRwMustWriteLock(&sbinfo->si_rwsem); ++ ++ brp = sbinfo->si_branch + bindex; ++ if (bindex < bbot) ++ memmove(brp, brp + 1, sizeof(*brp) * (bbot - bindex)); ++ sbinfo->si_branch[0 + bbot] = NULL; ++ sbinfo->si_bbot--; ++ ++ p = au_krealloc(sbinfo->si_branch, sizeof(*p) * bbot, AuGFP_SBILIST, ++ /*may_shrink*/1); ++ if (p) ++ sbinfo->si_branch = p; ++ /* harmless error */ ++} ++ ++static void au_br_do_del_hdp(struct au_dinfo *dinfo, const aufs_bindex_t bindex, ++ const aufs_bindex_t bbot) ++{ ++ struct au_hdentry *hdp, *p; ++ ++ AuRwMustWriteLock(&dinfo->di_rwsem); ++ ++ hdp = au_hdentry(dinfo, bindex); ++ if (bindex < bbot) ++ memmove(hdp, hdp + 1, sizeof(*hdp) * (bbot - bindex)); ++ /* au_h_dentry_init(au_hdentry(dinfo, bbot); */ ++ dinfo->di_bbot--; ++ ++ p = au_krealloc(dinfo->di_hdentry, sizeof(*p) * bbot, AuGFP_SBILIST, ++ /*may_shrink*/1); ++ if (p) ++ dinfo->di_hdentry = p; ++ /* harmless error */ ++} ++ ++static void au_br_do_del_hip(struct au_iinfo *iinfo, const aufs_bindex_t bindex, ++ const aufs_bindex_t bbot) ++{ ++ struct au_hinode *hip, *p; ++ ++ AuRwMustWriteLock(&iinfo->ii_rwsem); ++ ++ hip = au_hinode(iinfo, bindex); ++ if (bindex < bbot) ++ memmove(hip, hip + 1, sizeof(*hip) * (bbot - bindex)); ++ /* au_hinode_init(au_hinode(iinfo, bbot)); */ ++ iinfo->ii_bbot--; ++ ++ p = au_krealloc(iinfo->ii_hinode, sizeof(*p) * bbot, AuGFP_SBILIST, ++ /*may_shrink*/1); ++ if (p) ++ iinfo->ii_hinode = p; ++ /* harmless error */ ++} ++ ++static void au_br_do_del(struct super_block *sb, aufs_bindex_t bindex, ++ struct au_branch *br) ++{ ++ aufs_bindex_t bbot; ++ struct au_sbinfo *sbinfo; ++ struct dentry *root, *h_root; ++ struct inode *inode, *h_inode; ++ struct au_hinode *hinode; ++ ++ SiMustWriteLock(sb); ++ ++ root = sb->s_root; ++ inode = d_inode(root); ++ sbinfo = au_sbi(sb); ++ bbot = sbinfo->si_bbot; ++ ++ h_root = au_h_dptr(root, bindex); ++ hinode = au_hi(inode, bindex); ++ h_inode = au_igrab(hinode->hi_inode); ++ au_hiput(hinode); ++ ++ au_sbilist_lock(); ++ au_br_do_del_brp(sbinfo, bindex, bbot); ++ au_br_do_del_hdp(au_di(root), bindex, bbot); ++ au_br_do_del_hip(au_ii(inode), bindex, bbot); ++ au_sbilist_unlock(); ++ ++ /* ignore an error */ ++ au_dr_br_fin(sb, br); /* always, regardless the mount option */ ++ ++ dput(h_root); ++ iput(h_inode); ++ au_br_do_free(br); ++} ++ ++static unsigned long long empty_cb(struct super_block *sb, void *array, ++ unsigned long long max, void *arg) ++{ ++ return max; ++} ++ ++int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount) ++{ ++ int err, rerr, i; ++ unsigned long long opened; ++ unsigned int mnt_flags; ++ aufs_bindex_t bindex, bbot, br_id; ++ unsigned char do_wh, verbose; ++ struct au_branch *br; ++ struct au_wbr *wbr; ++ struct dentry *root; ++ struct file **to_free; ++ ++ err = 0; ++ opened = 0; ++ to_free = NULL; ++ root = sb->s_root; ++ bindex = au_find_dbindex(root, del->h_path.dentry); ++ if (bindex < 0) { ++ if (remount) ++ goto out; /* success */ ++ err = -ENOENT; ++ pr_err("%s no such branch\n", del->pathname); ++ goto out; ++ } ++ AuDbg("bindex b%d\n", bindex); ++ ++ err = -EBUSY; ++ mnt_flags = au_mntflags(sb); ++ verbose = !!au_opt_test(mnt_flags, VERBOSE); ++ bbot = au_sbbot(sb); ++ if (unlikely(!bbot)) { ++ AuVerbose(verbose, "no more branches left\n"); ++ goto out; ++ } ++ ++ br = au_sbr(sb, bindex); ++ AuDebugOn(!path_equal(&br->br_path, &del->h_path)); ++ if (unlikely(au_lcnt_read(&br->br_count, /*do_rev*/1))) { ++ AuVerbose(verbose, "br %pd2 is busy now\n", del->h_path.dentry); ++ goto out; ++ } ++ ++ br_id = br->br_id; ++ opened = au_lcnt_read(&br->br_nfiles, /*do_rev*/1); ++ if (unlikely(opened)) { ++ to_free = au_array_alloc(&opened, empty_cb, sb, NULL); ++ err = PTR_ERR(to_free); ++ if (IS_ERR(to_free)) ++ goto out; ++ ++ err = test_file_busy(sb, br_id, to_free, opened); ++ if (unlikely(err)) { ++ AuVerbose(verbose, "%llu file(s) opened\n", opened); ++ goto out; ++ } ++ } ++ ++ wbr = br->br_wbr; ++ do_wh = wbr && (wbr->wbr_whbase || wbr->wbr_plink || wbr->wbr_orph); ++ if (do_wh) { ++ /* instead of WbrWhMustWriteLock(wbr) */ ++ SiMustWriteLock(sb); ++ for (i = 0; i < AuBrWh_Last; i++) { ++ dput(wbr->wbr_wh[i]); ++ wbr->wbr_wh[i] = NULL; ++ } ++ } ++ ++ err = test_children_busy(root, bindex, verbose); ++ if (unlikely(err)) { ++ if (do_wh) ++ goto out_wh; ++ goto out; ++ } ++ ++ err = 0; ++ if (to_free) { ++ /* ++ * now we confirmed the branch is deletable. ++ * let's free the remaining opened dirs on the branch. ++ */ ++ di_write_unlock(root); ++ br_del_file(to_free, opened, br_id); ++ di_write_lock_child(root); ++ } ++ ++ sysaufs_brs_del(sb, bindex); /* remove successors */ ++ dbgaufs_xino_del(br); /* remove one */ ++ au_br_do_del(sb, bindex, br); ++ sysaufs_brs_add(sb, bindex); /* append successors */ ++ dbgaufs_brs_add(sb, bindex, /*topdown*/1); /* rename successors */ ++ ++ if (!bindex) { ++ au_cpup_attr_all(d_inode(root), /*force*/1); ++ sb->s_maxbytes = au_sbr_sb(sb, 0)->s_maxbytes; ++ } else ++ au_sub_nlink(d_inode(root), d_inode(del->h_path.dentry)); ++ if (au_opt_test(mnt_flags, PLINK)) ++ au_plink_half_refresh(sb, br_id); ++ ++ goto out; /* success */ ++ ++out_wh: ++ /* revert */ ++ rerr = au_br_init_wh(sb, br, br->br_perm); ++ if (rerr) ++ pr_warn("failed re-creating base whiteout, %s. (%d)\n", ++ del->pathname, rerr); ++out: ++ if (to_free) ++ au_farray_free(to_free, opened); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_ibusy(struct super_block *sb, struct aufs_ibusy __user *arg) ++{ ++ int err; ++ aufs_bindex_t btop, bbot; ++ struct aufs_ibusy ibusy; ++ struct inode *inode, *h_inode; ++ ++ err = -EPERM; ++ if (unlikely(!capable(CAP_SYS_ADMIN))) ++ goto out; ++ ++ err = copy_from_user(&ibusy, arg, sizeof(ibusy)); ++ if (!err) ++ /* VERIFY_WRITE */ ++ err = !access_ok(&arg->h_ino, sizeof(arg->h_ino)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ goto out; ++ } ++ ++ err = -EINVAL; ++ si_read_lock(sb, AuLock_FLUSH); ++ if (unlikely(ibusy.bindex < 0 || ibusy.bindex > au_sbbot(sb))) ++ goto out_unlock; ++ ++ err = 0; ++ ibusy.h_ino = 0; /* invalid */ ++ inode = ilookup(sb, ibusy.ino); ++ if (!inode ++ || inode->i_ino == AUFS_ROOT_INO ++ || au_is_bad_inode(inode)) ++ goto out_unlock; ++ ++ ii_read_lock_child(inode); ++ btop = au_ibtop(inode); ++ bbot = au_ibbot(inode); ++ if (btop <= ibusy.bindex && ibusy.bindex <= bbot) { ++ h_inode = au_h_iptr(inode, ibusy.bindex); ++ if (h_inode && au_test_ibusy(inode, btop, bbot)) ++ ibusy.h_ino = h_inode->i_ino; ++ } ++ ii_read_unlock(inode); ++ iput(inode); ++ ++out_unlock: ++ si_read_unlock(sb); ++ if (!err) { ++ err = __put_user(ibusy.h_ino, &arg->h_ino); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ } ++ } ++out: ++ return err; ++} ++ ++long au_ibusy_ioctl(struct file *file, unsigned long arg) ++{ ++ return au_ibusy(file->f_path.dentry->d_sb, (void __user *)arg); ++} ++ ++#ifdef CONFIG_COMPAT ++long au_ibusy_compat_ioctl(struct file *file, unsigned long arg) ++{ ++ return au_ibusy(file->f_path.dentry->d_sb, compat_ptr(arg)); ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * change a branch permission ++ */ ++ ++static void au_warn_ima(void) ++{ ++#ifdef CONFIG_IMA ++ /* since it doesn't support mark_files_ro() */ ++ AuWarn1("RW -> RO makes IMA to produce wrong message\n"); ++#endif ++} ++ ++static int do_need_sigen_inc(int a, int b) ++{ ++ return au_br_whable(a) && !au_br_whable(b); ++} ++ ++static int need_sigen_inc(int old, int new) ++{ ++ return do_need_sigen_inc(old, new) ++ || do_need_sigen_inc(new, old); ++} ++ ++static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ int err, do_warn; ++ unsigned int mnt_flags; ++ unsigned long long ull, max; ++ aufs_bindex_t br_id; ++ unsigned char verbose, writer; ++ struct file *file, *hf, **array; ++ struct au_hfile *hfile; ++ struct inode *h_inode; ++ ++ mnt_flags = au_mntflags(sb); ++ verbose = !!au_opt_test(mnt_flags, VERBOSE); ++ ++ array = au_farray_alloc(sb, &max); ++ err = PTR_ERR(array); ++ if (IS_ERR(array)) ++ goto out; ++ ++ do_warn = 0; ++ br_id = au_sbr_id(sb, bindex); ++ for (ull = 0; ull < max; ull++) { ++ file = array[ull]; ++ if (unlikely(!file)) ++ break; ++ ++ /* AuDbg("%pD\n", file); */ ++ fi_read_lock(file); ++ if (unlikely(au_test_mmapped(file))) { ++ err = -EBUSY; ++ AuVerbose(verbose, "mmapped %pD\n", file); ++ AuDbgFile(file); ++ FiMustNoWaiters(file); ++ fi_read_unlock(file); ++ goto out_array; ++ } ++ ++ hfile = &au_fi(file)->fi_htop; ++ hf = hfile->hf_file; ++ if (!d_is_reg(file->f_path.dentry) ++ || !(file->f_mode & FMODE_WRITE) ++ || hfile->hf_br->br_id != br_id ++ || !(hf->f_mode & FMODE_WRITE)) ++ array[ull] = NULL; ++ else { ++ do_warn = 1; ++ get_file(file); ++ } ++ ++ FiMustNoWaiters(file); ++ fi_read_unlock(file); ++ fput(file); ++ } ++ ++ err = 0; ++ if (do_warn) ++ au_warn_ima(); ++ ++ for (ull = 0; ull < max; ull++) { ++ file = array[ull]; ++ if (!file) ++ continue; ++ ++ /* todo: already flushed? */ ++ /* ++ * fs/super.c:mark_files_ro() is gone, but aufs keeps its ++ * approach which resets f_mode and calls mnt_drop_write() and ++ * file_release_write() for each file, because the branch ++ * attribute in aufs world is totally different from the native ++ * fs rw/ro mode. ++ */ ++ /* fi_read_lock(file); */ ++ hfile = &au_fi(file)->fi_htop; ++ hf = hfile->hf_file; ++ /* fi_read_unlock(file); */ ++ spin_lock(&hf->f_lock); ++ writer = !!(hf->f_mode & FMODE_WRITER); ++ hf->f_mode &= ~(FMODE_WRITE | FMODE_WRITER); ++ spin_unlock(&hf->f_lock); ++ if (writer) { ++ h_inode = file_inode(hf); ++ if (hf->f_mode & FMODE_READ) ++ i_readcount_inc(h_inode); ++ put_write_access(h_inode); ++ __mnt_drop_write(hf->f_path.mnt); ++ } ++ } ++ ++out_array: ++ au_farray_free(array, max); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, ++ int *do_refresh) ++{ ++ int err, rerr; ++ aufs_bindex_t bindex; ++ struct dentry *root; ++ struct au_branch *br; ++ struct au_br_fhsm *bf; ++ ++ root = sb->s_root; ++ bindex = au_find_dbindex(root, mod->h_root); ++ if (bindex < 0) { ++ if (remount) ++ return 0; /* success */ ++ err = -ENOENT; ++ pr_err("%s no such branch\n", mod->path); ++ goto out; ++ } ++ AuDbg("bindex b%d\n", bindex); ++ ++ err = test_br(d_inode(mod->h_root), mod->perm, mod->path); ++ if (unlikely(err)) ++ goto out; ++ ++ br = au_sbr(sb, bindex); ++ AuDebugOn(mod->h_root != au_br_dentry(br)); ++ if (br->br_perm == mod->perm) ++ return 0; /* success */ ++ ++ /* pre-allocate for non-fhsm --> fhsm */ ++ bf = NULL; ++ if (!au_br_fhsm(br->br_perm) && au_br_fhsm(mod->perm)) { ++ err = au_fhsm_br_alloc(br); ++ if (unlikely(err)) ++ goto out; ++ bf = br->br_fhsm; ++ br->br_fhsm = NULL; ++ } ++ ++ if (au_br_writable(br->br_perm)) { ++ /* remove whiteout base */ ++ err = au_br_init_wh(sb, br, mod->perm); ++ if (unlikely(err)) ++ goto out_bf; ++ ++ if (!au_br_writable(mod->perm)) { ++ /* rw --> ro, file might be mmapped */ ++ DiMustNoWaiters(root); ++ IiMustNoWaiters(d_inode(root)); ++ di_write_unlock(root); ++ err = au_br_mod_files_ro(sb, bindex); ++ /* aufs_write_lock() calls ..._child() */ ++ di_write_lock_child(root); ++ ++ if (unlikely(err)) { ++ rerr = -ENOMEM; ++ br->br_wbr = kzalloc(sizeof(*br->br_wbr), ++ GFP_NOFS); ++ if (br->br_wbr) ++ rerr = au_wbr_init(br, sb, br->br_perm); ++ if (unlikely(rerr)) { ++ AuIOErr("nested error %d (%d)\n", ++ rerr, err); ++ br->br_perm = mod->perm; ++ } ++ } ++ } ++ } else if (au_br_writable(mod->perm)) { ++ /* ro --> rw */ ++ err = -ENOMEM; ++ br->br_wbr = kzalloc(sizeof(*br->br_wbr), GFP_NOFS); ++ if (br->br_wbr) { ++ err = au_wbr_init(br, sb, mod->perm); ++ if (unlikely(err)) { ++ au_kfree_rcu(br->br_wbr); ++ br->br_wbr = NULL; ++ } ++ } ++ } ++ if (unlikely(err)) ++ goto out_bf; ++ ++ if (au_br_fhsm(br->br_perm)) { ++ if (!au_br_fhsm(mod->perm)) { ++ /* fhsm --> non-fhsm */ ++ au_br_fhsm_fin(br->br_fhsm); ++ au_kfree_rcu(br->br_fhsm); ++ br->br_fhsm = NULL; ++ } ++ } else if (au_br_fhsm(mod->perm)) ++ /* non-fhsm --> fhsm */ ++ br->br_fhsm = bf; ++ ++ *do_refresh |= need_sigen_inc(br->br_perm, mod->perm); ++ br->br_perm = mod->perm; ++ goto out; /* success */ ++ ++out_bf: ++ au_kfree_try_rcu(bf); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs) ++{ ++ int err; ++ struct kstatfs kstfs; ++ ++ err = vfs_statfs(&br->br_path, &kstfs); ++ if (!err) { ++ stfs->f_blocks = kstfs.f_blocks; ++ stfs->f_bavail = kstfs.f_bavail; ++ stfs->f_files = kstfs.f_files; ++ stfs->f_ffree = kstfs.f_ffree; ++ } ++ ++ return err; ++} +diff -Naur null/fs/aufs/branch.h linux-5.15.36/fs/aufs/branch.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/branch.h 2022-05-10 16:51:39.866744220 +0300 +@@ -0,0 +1,375 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * branch filesystems and xino for them ++ */ ++ ++#ifndef __AUFS_BRANCH_H__ ++#define __AUFS_BRANCH_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include "dirren.h" ++#include "dynop.h" ++#include "lcnt.h" ++#include "rwsem.h" ++#include "super.h" ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* a xino file */ ++struct au_xino { ++ struct file **xi_file; ++ unsigned int xi_nfile; ++ ++ struct { ++ spinlock_t spin; ++ ino_t *array; ++ int total; ++ /* reserved for future use */ ++ /* unsigned long *bitmap; */ ++ wait_queue_head_t wqh; ++ } xi_nondir; ++ ++ struct mutex xi_mtx; /* protects xi_file array */ ++ struct hlist_bl_head xi_writing; ++ ++ atomic_t xi_truncating; ++ ++ struct kref xi_kref; ++}; ++ ++/* File-based Hierarchical Storage Management */ ++struct au_br_fhsm { ++#ifdef CONFIG_AUFS_FHSM ++ struct mutex bf_lock; ++ unsigned long bf_jiffy; ++ struct aufs_stfs bf_stfs; ++ int bf_readable; ++#endif ++}; ++ ++/* members for writable branch only */ ++enum {AuBrWh_BASE, AuBrWh_PLINK, AuBrWh_ORPH, AuBrWh_Last}; ++struct au_wbr { ++ struct au_rwsem wbr_wh_rwsem; ++ struct dentry *wbr_wh[AuBrWh_Last]; ++ atomic_t wbr_wh_running; ++#define wbr_whbase wbr_wh[AuBrWh_BASE] /* whiteout base */ ++#define wbr_plink wbr_wh[AuBrWh_PLINK] /* pseudo-link dir */ ++#define wbr_orph wbr_wh[AuBrWh_ORPH] /* dir for orphans */ ++ ++ /* mfs mode */ ++ unsigned long long wbr_bytes; ++}; ++ ++/* ext2 has 3 types of operations at least, ext3 has 4 */ ++#define AuBrDynOp (AuDyLast * 4) ++ ++#ifdef CONFIG_AUFS_HFSNOTIFY ++/* support for asynchronous destruction */ ++struct au_br_hfsnotify { ++ struct fsnotify_group *hfsn_group; ++}; ++#endif ++ ++/* sysfs entries */ ++struct au_brsysfs { ++ char name[16]; ++ struct attribute attr; ++}; ++ ++enum { ++ AuBrSysfs_BR, ++ AuBrSysfs_BRID, ++ AuBrSysfs_Last ++}; ++ ++/* protected by superblock rwsem */ ++struct au_branch { ++ struct au_xino *br_xino; ++ ++ aufs_bindex_t br_id; ++ ++ int br_perm; ++ struct path br_path; ++ spinlock_t br_dykey_lock; ++ struct au_dykey *br_dykey[AuBrDynOp]; ++ au_lcnt_t br_nfiles; /* opened files */ ++ au_lcnt_t br_count; /* in-use for other */ ++ ++ struct au_wbr *br_wbr; ++ struct au_br_fhsm *br_fhsm; ++ ++#ifdef CONFIG_AUFS_HFSNOTIFY ++ struct au_br_hfsnotify *br_hfsn; ++#endif ++ ++#ifdef CONFIG_SYSFS ++ /* entries under sysfs per mount-point */ ++ struct au_brsysfs br_sysfs[AuBrSysfs_Last]; ++#endif ++ ++#ifdef CONFIG_DEBUG_FS ++ struct dentry *br_dbgaufs; /* xino */ ++#endif ++ ++ struct au_dr_br br_dirren; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct vfsmount *au_br_mnt(struct au_branch *br) ++{ ++ return br->br_path.mnt; ++} ++ ++static inline struct dentry *au_br_dentry(struct au_branch *br) ++{ ++ return br->br_path.dentry; ++} ++ ++static inline struct user_namespace *au_br_userns(struct au_branch *br) ++{ ++ return mnt_user_ns(br->br_path.mnt); ++} ++ ++static inline struct super_block *au_br_sb(struct au_branch *br) ++{ ++ return au_br_mnt(br)->mnt_sb; ++} ++ ++static inline int au_br_rdonly(struct au_branch *br) ++{ ++ return (sb_rdonly(au_br_sb(br)) ++ || !au_br_writable(br->br_perm)) ++ ? -EROFS : 0; ++} ++ ++static inline int au_br_hnotifyable(int brperm __maybe_unused) ++{ ++#ifdef CONFIG_AUFS_HNOTIFY ++ return !(brperm & AuBrPerm_RR); ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_br_test_oflag(int oflag, struct au_branch *br) ++{ ++ int err, exec_flag; ++ ++ err = 0; ++ exec_flag = oflag & __FMODE_EXEC; ++ if (unlikely(exec_flag && path_noexec(&br->br_path))) ++ err = -EACCES; ++ ++ return err; ++} ++ ++static inline void au_xino_get(struct au_branch *br) ++{ ++ struct au_xino *xi; ++ ++ xi = br->br_xino; ++ if (xi) ++ kref_get(&xi->xi_kref); ++} ++ ++static inline int au_xino_count(struct au_branch *br) ++{ ++ int v; ++ struct au_xino *xi; ++ ++ v = 0; ++ xi = br->br_xino; ++ if (xi) ++ v = kref_read(&xi->xi_kref); ++ ++ return v; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* branch.c */ ++struct au_sbinfo; ++void au_br_free(struct au_sbinfo *sinfo); ++int au_br_index(struct super_block *sb, aufs_bindex_t br_id); ++struct au_opt_add; ++int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount); ++struct au_opt_del; ++int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount); ++long au_ibusy_ioctl(struct file *file, unsigned long arg); ++#ifdef CONFIG_COMPAT ++long au_ibusy_compat_ioctl(struct file *file, unsigned long arg); ++#endif ++struct au_opt_mod; ++int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, ++ int *do_refresh); ++struct aufs_stfs; ++int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs); ++ ++/* xino.c */ ++static const loff_t au_loff_max = LLONG_MAX; ++ ++aufs_bindex_t au_xi_root(struct super_block *sb, struct dentry *dentry); ++struct file *au_xino_create(struct super_block *sb, char *fpath, int silent, ++ int wbrtop); ++struct file *au_xino_create2(struct super_block *sb, struct path *base, ++ struct file *copy_src); ++struct au_xi_new { ++ struct au_xino *xi; /* switch between xino and xigen */ ++ int idx; ++ struct path *base; ++ struct file *copy_src; ++}; ++struct file *au_xi_new(struct super_block *sb, struct au_xi_new *xinew); ++ ++int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ ino_t *ino); ++int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ ino_t ino); ++ssize_t xino_fread(struct file *file, void *buf, size_t size, loff_t *pos); ++ssize_t xino_fwrite(struct file *file, void *buf, size_t size, loff_t *pos); ++ ++int au_xib_trunc(struct super_block *sb); ++int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex, int idx_begin); ++ ++struct au_xino *au_xino_alloc(unsigned int nfile); ++int au_xino_put(struct au_branch *br); ++struct file *au_xino_file1(struct au_xino *xi); ++ ++struct au_opt_xino; ++void au_xino_clr(struct super_block *sb); ++int au_xino_set(struct super_block *sb, struct au_opt_xino *xiopt, int remount); ++struct file *au_xino_def(struct super_block *sb); ++int au_xino_init_br(struct super_block *sb, struct au_branch *br, ino_t hino, ++ struct path *base); ++ ++ino_t au_xino_new_ino(struct super_block *sb); ++void au_xino_delete_inode(struct inode *inode, const int unlinked); ++ ++void au_xinondir_leave(struct super_block *sb, aufs_bindex_t bindex, ++ ino_t h_ino, int idx); ++int au_xinondir_enter(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ int *idx); ++ ++int au_xino_path(struct seq_file *seq, struct file *file); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* @idx is signed to accept -1 meaning the first file */ ++static inline struct file *au_xino_file(struct au_xino *xi, int idx) ++{ ++ struct file *file; ++ ++ file = NULL; ++ if (!xi) ++ goto out; ++ ++ if (idx >= 0) { ++ if (idx < xi->xi_nfile) ++ file = xi->xi_file[idx]; ++ } else ++ file = au_xino_file1(xi); ++ ++out: ++ return file; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* Superblock to branch */ ++static inline ++aufs_bindex_t au_sbr_id(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_sbr(sb, bindex)->br_id; ++} ++ ++static inline ++struct vfsmount *au_sbr_mnt(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_br_mnt(au_sbr(sb, bindex)); ++} ++ ++static inline ++struct user_namespace *au_sbr_userns(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_br_userns(au_sbr(sb, bindex)); ++} ++ ++static inline ++struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_br_sb(au_sbr(sb, bindex)); ++} ++ ++static inline int au_sbr_perm(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_sbr(sb, bindex)->br_perm; ++} ++ ++static inline int au_sbr_whable(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_br_whable(au_sbr_perm(sb, bindex)); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define wbr_wh_read_lock(wbr) au_rw_read_lock(&(wbr)->wbr_wh_rwsem) ++#define wbr_wh_write_lock(wbr) au_rw_write_lock(&(wbr)->wbr_wh_rwsem) ++#define wbr_wh_read_trylock(wbr) au_rw_read_trylock(&(wbr)->wbr_wh_rwsem) ++#define wbr_wh_write_trylock(wbr) au_rw_write_trylock(&(wbr)->wbr_wh_rwsem) ++/* ++#define wbr_wh_read_trylock_nested(wbr) \ ++ au_rw_read_trylock_nested(&(wbr)->wbr_wh_rwsem) ++#define wbr_wh_write_trylock_nested(wbr) \ ++ au_rw_write_trylock_nested(&(wbr)->wbr_wh_rwsem) ++*/ ++ ++#define wbr_wh_read_unlock(wbr) au_rw_read_unlock(&(wbr)->wbr_wh_rwsem) ++#define wbr_wh_write_unlock(wbr) au_rw_write_unlock(&(wbr)->wbr_wh_rwsem) ++#define wbr_wh_downgrade_lock(wbr) au_rw_dgrade_lock(&(wbr)->wbr_wh_rwsem) ++ ++#define WbrWhMustNoWaiters(wbr) AuRwMustNoWaiters(&(wbr)->wbr_wh_rwsem) ++#define WbrWhMustAnyLock(wbr) AuRwMustAnyLock(&(wbr)->wbr_wh_rwsem) ++#define WbrWhMustWriteLock(wbr) AuRwMustWriteLock(&(wbr)->wbr_wh_rwsem) ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_FHSM ++static inline void au_br_fhsm_init(struct au_br_fhsm *brfhsm) ++{ ++ mutex_init(&brfhsm->bf_lock); ++ brfhsm->bf_jiffy = 0; ++ brfhsm->bf_readable = 0; ++} ++ ++static inline void au_br_fhsm_fin(struct au_br_fhsm *brfhsm) ++{ ++ mutex_destroy(&brfhsm->bf_lock); ++} ++#else ++AuStubVoid(au_br_fhsm_init, struct au_br_fhsm *brfhsm) ++AuStubVoid(au_br_fhsm_fin, struct au_br_fhsm *brfhsm) ++#endif ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_BRANCH_H__ */ +diff -Naur null/fs/aufs/conf.mk linux-5.15.36/fs/aufs/conf.mk +--- /dev/null ++++ linux-5.15.36/fs/aufs/conf.mk 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,40 @@ ++# SPDX-License-Identifier: GPL-2.0 ++ ++AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} ++ ++define AuConf ++ifdef ${1} ++AuConfStr += ${1}=${${1}} ++endif ++endef ++ ++AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ ++ SBILIST \ ++ HNOTIFY HFSNOTIFY \ ++ EXPORT INO_T_64 \ ++ XATTR \ ++ FHSM \ ++ RDU \ ++ DIRREN \ ++ SHWH \ ++ BR_RAMFS \ ++ BR_FUSE POLL \ ++ BR_HFSPLUS \ ++ BDEV_LOOP \ ++ DEBUG MAGIC_SYSRQ ++$(foreach i, ${AuConfAll}, \ ++ $(eval $(call AuConf,CONFIG_AUFS_${i}))) ++ ++AuConfName = ${obj}/conf.str ++${AuConfName}.tmp: FORCE ++ @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ ++${AuConfName}: ${AuConfName}.tmp ++ @diff -q $< $@ > /dev/null 2>&1 || { \ ++ echo ' GEN ' $@; \ ++ cp -p $< $@; \ ++ } ++FORCE: ++clean-files += ${AuConfName} ${AuConfName}.tmp ++${obj}/sysfs.o: ${AuConfName} ++ ++-include ${srctree}/${src}/conf_priv.mk +diff -Naur null/fs/aufs/cpup.c linux-5.15.36/fs/aufs/cpup.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/cpup.c 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,1459 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * copy-up functions, see wbr_policy.c for copy-down ++ */ ++ ++#include ++#include ++#include ++#include "aufs.h" ++ ++void au_cpup_attr_flags(struct inode *dst, unsigned int iflags) ++{ ++ const unsigned int mask = S_DEAD | S_SWAPFILE | S_PRIVATE ++ | S_NOATIME | S_NOCMTIME | S_AUTOMOUNT; ++ ++ BUILD_BUG_ON(sizeof(iflags) != sizeof(dst->i_flags)); ++ ++ dst->i_flags |= iflags & ~mask; ++ if (au_test_fs_notime(dst->i_sb)) ++ dst->i_flags |= S_NOATIME | S_NOCMTIME; ++} ++ ++void au_cpup_attr_timesizes(struct inode *inode) ++{ ++ struct inode *h_inode; ++ ++ h_inode = au_h_iptr(inode, au_ibtop(inode)); ++ fsstack_copy_attr_times(inode, h_inode); ++ fsstack_copy_inode_size(inode, h_inode); ++} ++ ++void au_cpup_attr_nlink(struct inode *inode, int force) ++{ ++ struct inode *h_inode; ++ struct super_block *sb; ++ aufs_bindex_t bindex, bbot; ++ ++ sb = inode->i_sb; ++ bindex = au_ibtop(inode); ++ h_inode = au_h_iptr(inode, bindex); ++ if (!force ++ && !S_ISDIR(h_inode->i_mode) ++ && au_opt_test(au_mntflags(sb), PLINK) ++ && au_plink_test(inode)) ++ return; ++ ++ /* ++ * 0 can happen in revalidating. ++ * h_inode->i_mutex may not be held here, but it is harmless since once ++ * i_nlink reaches 0, it will never become positive except O_TMPFILE ++ * case. ++ * todo: O_TMPFILE+linkat(AT_SYMLINK_FOLLOW) bypassing aufs may cause ++ * the incorrect link count. ++ */ ++ set_nlink(inode, h_inode->i_nlink); ++ ++ /* ++ * fewer nlink makes find(1) noisy, but larger nlink doesn't. ++ * it may includes whplink directory. ++ */ ++ if (S_ISDIR(h_inode->i_mode)) { ++ bbot = au_ibbot(inode); ++ for (bindex++; bindex <= bbot; bindex++) { ++ h_inode = au_h_iptr(inode, bindex); ++ if (h_inode) ++ au_add_nlink(inode, h_inode); ++ } ++ } ++} ++ ++void au_cpup_attr_changeable(struct inode *inode) ++{ ++ struct inode *h_inode; ++ ++ h_inode = au_h_iptr(inode, au_ibtop(inode)); ++ inode->i_mode = h_inode->i_mode; ++ inode->i_uid = h_inode->i_uid; ++ inode->i_gid = h_inode->i_gid; ++ au_cpup_attr_timesizes(inode); ++ au_cpup_attr_flags(inode, h_inode->i_flags); ++} ++ ++void au_cpup_igen(struct inode *inode, struct inode *h_inode) ++{ ++ struct au_iinfo *iinfo = au_ii(inode); ++ ++ IiMustWriteLock(inode); ++ ++ iinfo->ii_higen = h_inode->i_generation; ++ iinfo->ii_hsb1 = h_inode->i_sb; ++} ++ ++void au_cpup_attr_all(struct inode *inode, int force) ++{ ++ struct inode *h_inode; ++ ++ h_inode = au_h_iptr(inode, au_ibtop(inode)); ++ au_cpup_attr_changeable(inode); ++ if (inode->i_nlink > 0) ++ au_cpup_attr_nlink(inode, force); ++ inode->i_rdev = h_inode->i_rdev; ++ inode->i_blkbits = h_inode->i_blkbits; ++ au_cpup_igen(inode, h_inode); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* Note: dt_dentry and dt_h_dentry are not dget/dput-ed */ ++ ++/* keep the timestamps of the parent dir when cpup */ ++void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, ++ struct path *h_path) ++{ ++ struct inode *h_inode; ++ ++ dt->dt_dentry = dentry; ++ dt->dt_h_path = *h_path; ++ h_inode = d_inode(h_path->dentry); ++ dt->dt_atime = h_inode->i_atime; ++ dt->dt_mtime = h_inode->i_mtime; ++ /* smp_mb(); */ ++} ++ ++void au_dtime_revert(struct au_dtime *dt) ++{ ++ struct iattr attr; ++ int err; ++ ++ attr.ia_atime = dt->dt_atime; ++ attr.ia_mtime = dt->dt_mtime; ++ attr.ia_valid = ATTR_FORCE | ATTR_MTIME | ATTR_MTIME_SET ++ | ATTR_ATIME | ATTR_ATIME_SET; ++ ++ /* no delegation since this is a directory */ ++ err = vfsub_notify_change(&dt->dt_h_path, &attr, /*delegated*/NULL); ++ if (unlikely(err)) ++ pr_warn("restoring timestamps failed(%d). ignored\n", err); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* internal use only */ ++struct au_cpup_reg_attr { ++ int valid; ++ struct kstat st; ++ unsigned int iflags; /* inode->i_flags */ ++}; ++ ++static noinline_for_stack ++int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct path *h_src, ++ struct au_cpup_reg_attr *h_src_attr) ++{ ++ int err, sbits, icex; ++ unsigned int mnt_flags; ++ unsigned char verbose; ++ struct iattr ia; ++ struct path h_path; ++ struct inode *h_isrc, *h_idst; ++ struct kstat *h_st; ++ struct au_branch *br; ++ ++ br = au_sbr(dst->d_sb, bindex); ++ h_path.mnt = au_br_mnt(br); ++ h_path.dentry = au_h_dptr(dst, bindex); ++ h_idst = d_inode(h_path.dentry); ++ h_isrc = d_inode(h_src->dentry); ++ ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID ++ | ATTR_ATIME | ATTR_MTIME ++ | ATTR_ATIME_SET | ATTR_MTIME_SET; ++ if (h_src_attr && h_src_attr->valid) { ++ h_st = &h_src_attr->st; ++ ia.ia_uid = h_st->uid; ++ ia.ia_gid = h_st->gid; ++ ia.ia_atime = h_st->atime; ++ ia.ia_mtime = h_st->mtime; ++ if (h_idst->i_mode != h_st->mode ++ && !S_ISLNK(h_idst->i_mode)) { ++ ia.ia_valid |= ATTR_MODE; ++ ia.ia_mode = h_st->mode; ++ } ++ sbits = !!(h_st->mode & (S_ISUID | S_ISGID)); ++ au_cpup_attr_flags(h_idst, h_src_attr->iflags); ++ } else { ++ ia.ia_uid = h_isrc->i_uid; ++ ia.ia_gid = h_isrc->i_gid; ++ ia.ia_atime = h_isrc->i_atime; ++ ia.ia_mtime = h_isrc->i_mtime; ++ if (h_idst->i_mode != h_isrc->i_mode ++ && !S_ISLNK(h_idst->i_mode)) { ++ ia.ia_valid |= ATTR_MODE; ++ ia.ia_mode = h_isrc->i_mode; ++ } ++ sbits = !!(h_isrc->i_mode & (S_ISUID | S_ISGID)); ++ au_cpup_attr_flags(h_idst, h_isrc->i_flags); ++ } ++ /* no delegation since it is just created */ ++ err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); ++ ++ /* is this nfs only? */ ++ if (!err && sbits && au_test_nfs(h_path.dentry->d_sb)) { ++ ia.ia_valid = ATTR_FORCE | ATTR_MODE; ++ ia.ia_mode = h_isrc->i_mode; ++ err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); ++ } ++ ++ icex = br->br_perm & AuBrAttr_ICEX; ++ if (!err) { ++ mnt_flags = au_mntflags(dst->d_sb); ++ verbose = !!au_opt_test(mnt_flags, VERBOSE); ++ err = au_cpup_xattr(&h_path, h_src, icex, verbose); ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_do_copy_file(struct file *dst, struct file *src, loff_t len, ++ char *buf, unsigned long blksize) ++{ ++ int err; ++ size_t sz, rbytes, wbytes; ++ unsigned char all_zero; ++ char *p, *zp; ++ struct inode *h_inode; ++ /* reduce stack usage */ ++ struct iattr *ia; ++ ++ zp = page_address(ZERO_PAGE(0)); ++ if (unlikely(!zp)) ++ return -ENOMEM; /* possible? */ ++ ++ err = 0; ++ all_zero = 0; ++ while (len) { ++ AuDbg("len %lld\n", len); ++ sz = blksize; ++ if (len < blksize) ++ sz = len; ++ ++ rbytes = 0; ++ /* todo: signal_pending? */ ++ while (!rbytes || err == -EAGAIN || err == -EINTR) { ++ rbytes = vfsub_read_k(src, buf, sz, &src->f_pos); ++ err = rbytes; ++ } ++ if (unlikely(err < 0)) ++ break; ++ ++ all_zero = 0; ++ if (len >= rbytes && rbytes == blksize) ++ all_zero = !memcmp(buf, zp, rbytes); ++ if (!all_zero) { ++ wbytes = rbytes; ++ p = buf; ++ while (wbytes) { ++ size_t b; ++ ++ b = vfsub_write_k(dst, p, wbytes, &dst->f_pos); ++ err = b; ++ /* todo: signal_pending? */ ++ if (unlikely(err == -EAGAIN || err == -EINTR)) ++ continue; ++ if (unlikely(err < 0)) ++ break; ++ wbytes -= b; ++ p += b; ++ } ++ if (unlikely(err < 0)) ++ break; ++ } else { ++ loff_t res; ++ ++ AuLabel(hole); ++ res = vfsub_llseek(dst, rbytes, SEEK_CUR); ++ err = res; ++ if (unlikely(res < 0)) ++ break; ++ } ++ len -= rbytes; ++ err = 0; ++ } ++ ++ /* the last block may be a hole */ ++ if (!err && all_zero) { ++ AuLabel(last hole); ++ ++ err = 1; ++ if (au_test_nfs(dst->f_path.dentry->d_sb)) { ++ /* nfs requires this step to make last hole */ ++ /* is this only nfs? */ ++ do { ++ /* todo: signal_pending? */ ++ err = vfsub_write_k(dst, "\0", 1, &dst->f_pos); ++ } while (err == -EAGAIN || err == -EINTR); ++ if (err == 1) ++ dst->f_pos--; ++ } ++ ++ if (err == 1) { ++ ia = (void *)buf; ++ ia->ia_size = dst->f_pos; ++ ia->ia_valid = ATTR_SIZE | ATTR_FILE; ++ ia->ia_file = dst; ++ h_inode = file_inode(dst); ++ inode_lock_nested(h_inode, AuLsc_I_CHILD2); ++ /* no delegation since it is just created */ ++ err = vfsub_notify_change(&dst->f_path, ia, ++ /*delegated*/NULL); ++ inode_unlock(h_inode); ++ } ++ } ++ ++ return err; ++} ++ ++int au_copy_file(struct file *dst, struct file *src, loff_t len) ++{ ++ int err; ++ unsigned long blksize; ++ unsigned char do_kfree; ++ char *buf; ++ struct super_block *h_sb; ++ ++ err = -ENOMEM; ++ h_sb = file_inode(dst)->i_sb; ++ blksize = h_sb->s_blocksize; ++ if (!blksize || PAGE_SIZE < blksize) ++ blksize = PAGE_SIZE; ++ AuDbg("blksize %lu\n", blksize); ++ do_kfree = (blksize != PAGE_SIZE && blksize >= sizeof(struct iattr *)); ++ if (do_kfree) ++ buf = kmalloc(blksize, GFP_NOFS); ++ else ++ buf = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!buf)) ++ goto out; ++ ++ if (len > (1 << 22)) ++ AuDbg("copying a large file %lld\n", (long long)len); ++ ++ src->f_pos = 0; ++ dst->f_pos = 0; ++ err = au_do_copy_file(dst, src, len, buf, blksize); ++ if (do_kfree) { ++ AuDebugOn(!au_kfree_do_sz_test(blksize)); ++ au_kfree_do_rcu(buf); ++ } else ++ free_page((unsigned long)buf); ++ ++out: ++ return err; ++} ++ ++static int au_do_copy(struct file *dst, struct file *src, loff_t len) ++{ ++ int err; ++ struct super_block *h_src_sb; ++ struct inode *h_src_inode; ++ ++ h_src_inode = file_inode(src); ++ h_src_sb = h_src_inode->i_sb; ++ ++ /* XFS acquires inode_lock */ ++ if (!au_test_xfs(h_src_sb)) ++ err = au_copy_file(dst, src, len); ++ else { ++ inode_unlock_shared(h_src_inode); ++ err = au_copy_file(dst, src, len); ++ inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); ++ } ++ ++ return err; ++} ++ ++static int au_clone_or_copy(struct file *dst, struct file *src, loff_t len) ++{ ++ int err; ++ loff_t lo; ++ struct super_block *h_src_sb; ++ struct inode *h_src_inode; ++ ++ h_src_inode = file_inode(src); ++ h_src_sb = h_src_inode->i_sb; ++ if (h_src_sb != file_inode(dst)->i_sb ++ || !dst->f_op->remap_file_range) { ++ err = au_do_copy(dst, src, len); ++ goto out; ++ } ++ ++ if (!au_test_nfs(h_src_sb)) { ++ inode_unlock_shared(h_src_inode); ++ lo = vfsub_clone_file_range(src, dst, len); ++ inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); ++ } else ++ lo = vfsub_clone_file_range(src, dst, len); ++ if (lo == len) { ++ err = 0; ++ goto out; /* success */ ++ } else if (lo >= 0) ++ /* todo: possible? */ ++ /* paritially succeeded */ ++ AuDbg("lo %lld, len %lld. Retrying.\n", lo, len); ++ else if (lo != -EOPNOTSUPP) { ++ /* older XFS has a condition in cloning */ ++ err = lo; ++ goto out; ++ } ++ ++ /* the backend fs on NFS may not support cloning */ ++ err = au_do_copy(dst, src, len); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * to support a sparse file which is opened with O_APPEND, ++ * we need to close the file. ++ */ ++static int au_cp_regular(struct au_cp_generic *cpg) ++{ ++ int err, i; ++ enum { SRC, DST }; ++ struct { ++ aufs_bindex_t bindex; ++ unsigned int flags; ++ struct dentry *dentry; ++ int force_wr; ++ struct file *file; ++ } *f, file[] = { ++ { ++ .bindex = cpg->bsrc, ++ .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, ++ }, ++ { ++ .bindex = cpg->bdst, ++ .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, ++ .force_wr = !!au_ftest_cpup(cpg->flags, RWDST), ++ } ++ }; ++ struct au_branch *br; ++ struct super_block *sb, *h_src_sb; ++ struct inode *h_src_inode; ++ struct task_struct *tsk = current; ++ ++ /* bsrc branch can be ro/rw. */ ++ sb = cpg->dentry->d_sb; ++ f = file; ++ for (i = 0; i < 2; i++, f++) { ++ f->dentry = au_h_dptr(cpg->dentry, f->bindex); ++ f->file = au_h_open(cpg->dentry, f->bindex, f->flags, ++ /*file*/NULL, f->force_wr); ++ if (IS_ERR(f->file)) { ++ err = PTR_ERR(f->file); ++ if (i == SRC) ++ goto out; ++ else ++ goto out_src; ++ } ++ } ++ ++ /* try stopping to update while we copyup */ ++ h_src_inode = d_inode(file[SRC].dentry); ++ h_src_sb = h_src_inode->i_sb; ++ if (!au_test_nfs(h_src_sb)) ++ IMustLock(h_src_inode); ++ err = au_clone_or_copy(file[DST].file, file[SRC].file, cpg->len); ++ ++ /* i wonder if we had O_NO_DELAY_FPUT flag */ ++ if (tsk->flags & PF_KTHREAD) ++ __fput_sync(file[DST].file); ++ else { ++ /* it happened actually */ ++ fput(file[DST].file); ++ /* ++ * too bad. ++ * we have to call both since we don't know which place the file ++ * was added to. ++ */ ++ task_work_run(); ++ flush_delayed_fput(); ++ } ++ br = au_sbr(sb, file[DST].bindex); ++ au_lcnt_dec(&br->br_nfiles); ++ ++out_src: ++ fput(file[SRC].file); ++ br = au_sbr(sb, file[SRC].bindex); ++ au_lcnt_dec(&br->br_nfiles); ++out: ++ return err; ++} ++ ++static int au_do_cpup_regular(struct au_cp_generic *cpg, ++ struct au_cpup_reg_attr *h_src_attr) ++{ ++ int err, rerr; ++ loff_t l; ++ struct path h_path; ++ struct inode *h_src_inode, *h_dst_inode; ++ ++ err = 0; ++ h_src_inode = au_h_iptr(d_inode(cpg->dentry), cpg->bsrc); ++ l = i_size_read(h_src_inode); ++ if (cpg->len == -1 || l < cpg->len) ++ cpg->len = l; ++ if (cpg->len) { ++ /* try stopping to update while we are referencing */ ++ inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); ++ au_pin_hdir_unlock(cpg->pin); ++ ++ h_path.dentry = au_h_dptr(cpg->dentry, cpg->bsrc); ++ h_path.mnt = au_sbr_mnt(cpg->dentry->d_sb, cpg->bsrc); ++ h_src_attr->iflags = h_src_inode->i_flags; ++ if (!au_test_nfs(h_src_inode->i_sb)) ++ err = vfsub_getattr(&h_path, &h_src_attr->st); ++ else { ++ inode_unlock_shared(h_src_inode); ++ err = vfsub_getattr(&h_path, &h_src_attr->st); ++ inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); ++ } ++ if (unlikely(err)) { ++ inode_unlock_shared(h_src_inode); ++ goto out; ++ } ++ h_src_attr->valid = 1; ++ if (!au_test_nfs(h_src_inode->i_sb)) { ++ err = au_cp_regular(cpg); ++ inode_unlock_shared(h_src_inode); ++ } else { ++ inode_unlock_shared(h_src_inode); ++ err = au_cp_regular(cpg); ++ } ++ rerr = au_pin_hdir_relock(cpg->pin); ++ if (!err && rerr) ++ err = rerr; ++ } ++ if (!err && (h_src_inode->i_state & I_LINKABLE)) { ++ h_path.dentry = au_h_dptr(cpg->dentry, cpg->bdst); ++ h_dst_inode = d_inode(h_path.dentry); ++ spin_lock(&h_dst_inode->i_lock); ++ h_dst_inode->i_state |= I_LINKABLE; ++ spin_unlock(&h_dst_inode->i_lock); ++ } ++ ++out: ++ return err; ++} ++ ++static int au_do_cpup_symlink(struct path *h_path, struct dentry *h_src, ++ struct inode *h_dir) ++{ ++ int err; ++ DEFINE_DELAYED_CALL(done); ++ const char *sym; ++ ++ sym = vfs_get_link(h_src, &done); ++ err = PTR_ERR(sym); ++ if (IS_ERR(sym)) ++ goto out; ++ ++ err = vfsub_symlink(h_dir, h_path, sym); ++ ++out: ++ do_delayed_call(&done); ++ return err; ++} ++ ++/* ++ * regardless 'acl' option, reset all ACL. ++ * All ACL will be copied up later from the original entry on the lower branch. ++ */ ++static int au_reset_acl(struct inode *h_dir, struct path *h_path, umode_t mode) ++{ ++ int err; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct user_namespace *h_userns; ++ ++ h_userns = mnt_user_ns(h_path->mnt); ++ h_dentry = h_path->dentry; ++ h_inode = d_inode(h_dentry); ++ /* forget_all_cached_acls(h_inode)); */ ++ err = vfsub_removexattr(h_userns, h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); ++ AuTraceErr(err); ++ if (err == -EOPNOTSUPP) ++ err = 0; ++ if (!err) ++ err = vfsub_acl_chmod(h_userns, h_inode, mode); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_do_cpup_dir(struct au_cp_generic *cpg, struct dentry *dst_parent, ++ struct inode *h_dir, struct path *h_path) ++{ ++ int err; ++ struct inode *dir, *inode; ++ struct user_namespace *h_userns; ++ ++ h_userns = mnt_user_ns(h_path->mnt); ++ err = vfsub_removexattr(h_userns, h_path->dentry, ++ XATTR_NAME_POSIX_ACL_DEFAULT); ++ AuTraceErr(err); ++ if (err == -EOPNOTSUPP) ++ err = 0; ++ if (unlikely(err)) ++ goto out; ++ ++ /* ++ * strange behaviour from the users view, ++ * particularly setattr case ++ */ ++ dir = d_inode(dst_parent); ++ if (au_ibtop(dir) == cpg->bdst) ++ au_cpup_attr_nlink(dir, /*force*/1); ++ inode = d_inode(cpg->dentry); ++ au_cpup_attr_nlink(inode, /*force*/1); ++ ++out: ++ return err; ++} ++ ++static noinline_for_stack ++int cpup_entry(struct au_cp_generic *cpg, struct dentry *dst_parent, ++ struct au_cpup_reg_attr *h_src_attr) ++{ ++ int err; ++ umode_t mode; ++ unsigned int mnt_flags; ++ unsigned char isdir, isreg, force; ++ const unsigned char do_dt = !!au_ftest_cpup(cpg->flags, DTIME); ++ struct au_dtime dt; ++ struct path h_path; ++ struct dentry *h_src, *h_dst, *h_parent; ++ struct inode *h_inode, *h_dir; ++ struct super_block *sb; ++ ++ /* bsrc branch can be ro/rw. */ ++ h_src = au_h_dptr(cpg->dentry, cpg->bsrc); ++ h_inode = d_inode(h_src); ++ AuDebugOn(h_inode != au_h_iptr(d_inode(cpg->dentry), cpg->bsrc)); ++ ++ /* try stopping to be referenced while we are creating */ ++ h_dst = au_h_dptr(cpg->dentry, cpg->bdst); ++ if (au_ftest_cpup(cpg->flags, RENAME)) ++ AuDebugOn(strncmp(h_dst->d_name.name, AUFS_WH_PFX, ++ AUFS_WH_PFX_LEN)); ++ h_parent = h_dst->d_parent; /* dir inode is locked */ ++ h_dir = d_inode(h_parent); ++ IMustLock(h_dir); ++ AuDebugOn(h_parent != h_dst->d_parent); ++ ++ sb = cpg->dentry->d_sb; ++ h_path.mnt = au_sbr_mnt(sb, cpg->bdst); ++ if (do_dt) { ++ h_path.dentry = h_parent; ++ au_dtime_store(&dt, dst_parent, &h_path); ++ } ++ h_path.dentry = h_dst; ++ ++ isreg = 0; ++ isdir = 0; ++ mode = h_inode->i_mode; ++ switch (mode & S_IFMT) { ++ case S_IFREG: ++ isreg = 1; ++ err = vfsub_create(h_dir, &h_path, 0600, /*want_excl*/true); ++ if (!err) ++ err = au_do_cpup_regular(cpg, h_src_attr); ++ break; ++ case S_IFDIR: ++ isdir = 1; ++ err = vfsub_mkdir(h_dir, &h_path, mode); ++ if (!err) ++ err = au_do_cpup_dir(cpg, dst_parent, h_dir, &h_path); ++ break; ++ case S_IFLNK: ++ err = au_do_cpup_symlink(&h_path, h_src, h_dir); ++ break; ++ case S_IFCHR: ++ case S_IFBLK: ++ AuDebugOn(!capable(CAP_MKNOD)); ++ fallthrough; ++ case S_IFIFO: ++ case S_IFSOCK: ++ err = vfsub_mknod(h_dir, &h_path, mode, h_inode->i_rdev); ++ break; ++ default: ++ AuIOErr("Unknown inode type 0%o\n", mode); ++ err = -EIO; ++ } ++ if (!err) ++ err = au_reset_acl(h_dir, &h_path, mode); ++ ++ mnt_flags = au_mntflags(sb); ++ if (!au_opt_test(mnt_flags, UDBA_NONE) ++ && !isdir ++ && au_opt_test(mnt_flags, XINO) ++ && (h_inode->i_nlink == 1 ++ || (h_inode->i_state & I_LINKABLE)) ++ /* todo: unnecessary? */ ++ /* && d_inode(cpg->dentry)->i_nlink == 1 */ ++ && cpg->bdst < cpg->bsrc ++ && !au_ftest_cpup(cpg->flags, KEEPLINO)) ++ au_xino_write(sb, cpg->bsrc, h_inode->i_ino, /*ino*/0); ++ /* ignore this error */ ++ ++ if (!err) { ++ force = 0; ++ if (isreg) { ++ force = !!cpg->len; ++ if (cpg->len == -1) ++ force = !!i_size_read(h_inode); ++ } ++ au_fhsm_wrote(sb, cpg->bdst, force); ++ } ++ ++ if (do_dt) ++ au_dtime_revert(&dt); ++ return err; ++} ++ ++static int au_do_ren_after_cpup(struct au_cp_generic *cpg, struct path *h_path) ++{ ++ int err; ++ struct dentry *dentry, *h_dentry, *h_parent, *parent; ++ struct path h_ppath; ++ struct inode *h_dir; ++ aufs_bindex_t bdst; ++ ++ dentry = cpg->dentry; ++ bdst = cpg->bdst; ++ h_ppath.mnt = au_sbr_mnt(dentry->d_sb, bdst); ++ h_dentry = au_h_dptr(dentry, bdst); ++ if (!au_ftest_cpup(cpg->flags, OVERWRITE)) { ++ dget(h_dentry); ++ au_set_h_dptr(dentry, bdst, NULL); ++ err = au_lkup_neg(dentry, bdst, /*wh*/0); ++ if (!err) ++ h_path->dentry = dget(au_h_dptr(dentry, bdst)); ++ au_set_h_dptr(dentry, bdst, h_dentry); ++ } else { ++ err = 0; ++ parent = dget_parent(dentry); ++ h_ppath.dentry = au_h_dptr(parent, bdst); ++ dput(parent); ++ h_path->dentry = vfsub_lkup_one(&dentry->d_name, &h_ppath); ++ if (IS_ERR(h_path->dentry)) ++ err = PTR_ERR(h_path->dentry); ++ } ++ if (unlikely(err)) ++ goto out; ++ ++ h_parent = h_dentry->d_parent; /* dir inode is locked */ ++ h_dir = d_inode(h_parent); ++ IMustLock(h_dir); ++ AuDbg("%pd %pd\n", h_dentry, h_path->dentry); ++ /* no delegation since it is just created */ ++ err = vfsub_rename(h_dir, h_dentry, h_dir, h_path, /*delegated*/NULL, ++ /*flags*/0); ++ dput(h_path->dentry); ++ ++out: ++ return err; ++} ++ ++/* ++ * copyup the @dentry from @bsrc to @bdst. ++ * the caller must set the both of lower dentries. ++ * @len is for truncating when it is -1 copyup the entire file. ++ * in link/rename cases, @dst_parent may be different from the real one. ++ * basic->bsrc can be larger than basic->bdst. ++ * aufs doesn't touch the credential so ++ * security_inode_copy_up{,_xattr}() are unnecessary. ++ */ ++static int au_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) ++{ ++ int err, rerr; ++ aufs_bindex_t old_ibtop; ++ unsigned char isdir, plink; ++ struct dentry *h_src, *h_dst, *h_parent; ++ struct inode *dst_inode, *h_dir, *inode, *delegated, *src_inode; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct path h_src_path; ++ /* to reduce stack size */ ++ struct { ++ struct au_dtime dt; ++ struct path h_path; ++ struct au_cpup_reg_attr h_src_attr; ++ } *a; ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ a->h_src_attr.valid = 0; ++ ++ sb = cpg->dentry->d_sb; ++ br = au_sbr(sb, cpg->bdst); ++ a->h_path.mnt = au_br_mnt(br); ++ h_dst = au_h_dptr(cpg->dentry, cpg->bdst); ++ h_parent = h_dst->d_parent; /* dir inode is locked */ ++ h_dir = d_inode(h_parent); ++ IMustLock(h_dir); ++ ++ h_src = au_h_dptr(cpg->dentry, cpg->bsrc); ++ inode = d_inode(cpg->dentry); ++ ++ if (!dst_parent) ++ dst_parent = dget_parent(cpg->dentry); ++ else ++ dget(dst_parent); ++ ++ plink = !!au_opt_test(au_mntflags(sb), PLINK); ++ dst_inode = au_h_iptr(inode, cpg->bdst); ++ if (dst_inode) { ++ if (unlikely(!plink)) { ++ err = -EIO; ++ AuIOErr("hi%lu(i%lu) exists on b%d " ++ "but plink is disabled\n", ++ dst_inode->i_ino, inode->i_ino, cpg->bdst); ++ goto out_parent; ++ } ++ ++ if (dst_inode->i_nlink) { ++ const int do_dt = au_ftest_cpup(cpg->flags, DTIME); ++ ++ h_src = au_plink_lkup(inode, cpg->bdst); ++ err = PTR_ERR(h_src); ++ if (IS_ERR(h_src)) ++ goto out_parent; ++ if (unlikely(d_is_negative(h_src))) { ++ err = -EIO; ++ AuIOErr("i%lu exists on b%d " ++ "but not pseudo-linked\n", ++ inode->i_ino, cpg->bdst); ++ dput(h_src); ++ goto out_parent; ++ } ++ ++ if (do_dt) { ++ a->h_path.dentry = h_parent; ++ au_dtime_store(&a->dt, dst_parent, &a->h_path); ++ } ++ ++ a->h_path.dentry = h_dst; ++ delegated = NULL; ++ err = vfsub_link(h_src, h_dir, &a->h_path, &delegated); ++ if (!err && au_ftest_cpup(cpg->flags, RENAME)) ++ err = au_do_ren_after_cpup(cpg, &a->h_path); ++ if (do_dt) ++ au_dtime_revert(&a->dt); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ dput(h_src); ++ goto out_parent; ++ } else ++ /* todo: cpup_wh_file? */ ++ /* udba work */ ++ au_update_ibrange(inode, /*do_put_zero*/1); ++ } ++ ++ isdir = S_ISDIR(inode->i_mode); ++ old_ibtop = au_ibtop(inode); ++ err = cpup_entry(cpg, dst_parent, &a->h_src_attr); ++ if (unlikely(err)) ++ goto out_rev; ++ dst_inode = d_inode(h_dst); ++ inode_lock_nested(dst_inode, AuLsc_I_CHILD2); ++ /* todo: necessary? */ ++ /* au_pin_hdir_unlock(cpg->pin); */ ++ ++ h_src_path.dentry = h_src; ++ h_src_path.mnt = au_sbr_mnt(sb, cpg->bsrc); ++ err = cpup_iattr(cpg->dentry, cpg->bdst, &h_src_path, &a->h_src_attr); ++ if (unlikely(err)) { ++ /* todo: necessary? */ ++ /* au_pin_hdir_relock(cpg->pin); */ /* ignore an error */ ++ inode_unlock(dst_inode); ++ goto out_rev; ++ } ++ ++ if (cpg->bdst < old_ibtop) { ++ if (S_ISREG(inode->i_mode)) { ++ err = au_dy_iaop(inode, cpg->bdst, dst_inode); ++ if (unlikely(err)) { ++ /* ignore an error */ ++ /* au_pin_hdir_relock(cpg->pin); */ ++ inode_unlock(dst_inode); ++ goto out_rev; ++ } ++ } ++ au_set_ibtop(inode, cpg->bdst); ++ } else ++ au_set_ibbot(inode, cpg->bdst); ++ au_set_h_iptr(inode, cpg->bdst, au_igrab(dst_inode), ++ au_hi_flags(inode, isdir)); ++ ++ /* todo: necessary? */ ++ /* err = au_pin_hdir_relock(cpg->pin); */ ++ inode_unlock(dst_inode); ++ if (unlikely(err)) ++ goto out_rev; ++ ++ src_inode = d_inode(h_src); ++ if (!isdir ++ && (src_inode->i_nlink > 1 ++ || src_inode->i_state & I_LINKABLE) ++ && plink) ++ au_plink_append(inode, cpg->bdst, h_dst); ++ ++ if (au_ftest_cpup(cpg->flags, RENAME)) { ++ a->h_path.dentry = h_dst; ++ err = au_do_ren_after_cpup(cpg, &a->h_path); ++ } ++ if (!err) ++ goto out_parent; /* success */ ++ ++ /* revert */ ++out_rev: ++ a->h_path.dentry = h_parent; ++ au_dtime_store(&a->dt, dst_parent, &a->h_path); ++ a->h_path.dentry = h_dst; ++ rerr = 0; ++ if (d_is_positive(h_dst)) { ++ if (!isdir) { ++ /* no delegation since it is just created */ ++ rerr = vfsub_unlink(h_dir, &a->h_path, ++ /*delegated*/NULL, /*force*/0); ++ } else ++ rerr = vfsub_rmdir(h_dir, &a->h_path); ++ } ++ au_dtime_revert(&a->dt); ++ if (rerr) { ++ AuIOErr("failed removing broken entry(%d, %d)\n", err, rerr); ++ err = -EIO; ++ } ++out_parent: ++ dput(dst_parent); ++ au_kfree_rcu(a); ++out: ++ return err; ++} ++ ++#if 0 /* reserved */ ++struct au_cpup_single_args { ++ int *errp; ++ struct au_cp_generic *cpg; ++ struct dentry *dst_parent; ++}; ++ ++static void au_call_cpup_single(void *args) ++{ ++ struct au_cpup_single_args *a = args; ++ ++ au_pin_hdir_acquire_nest(a->cpg->pin); ++ *a->errp = au_cpup_single(a->cpg, a->dst_parent); ++ au_pin_hdir_release(a->cpg->pin); ++} ++#endif ++ ++/* ++ * prevent SIGXFSZ in copy-up. ++ * testing CAP_MKNOD is for generic fs, ++ * but CAP_FSETID is for xfs only, currently. ++ */ ++static int au_cpup_sio_test(struct au_pin *pin, umode_t mode) ++{ ++ int do_sio; ++ struct super_block *sb; ++ struct inode *h_dir; ++ ++ do_sio = 0; ++ sb = au_pinned_parent(pin)->d_sb; ++ if (!au_wkq_test() ++ && (!au_sbi(sb)->si_plink_maint_pid ++ || au_plink_maint(sb, AuLock_NOPLM))) { ++ switch (mode & S_IFMT) { ++ case S_IFREG: ++ /* no condition about RLIMIT_FSIZE and the file size */ ++ do_sio = 1; ++ break; ++ case S_IFCHR: ++ case S_IFBLK: ++ do_sio = !capable(CAP_MKNOD); ++ break; ++ } ++ if (!do_sio) ++ do_sio = ((mode & (S_ISUID | S_ISGID)) ++ && !capable(CAP_FSETID)); ++ /* this workaround may be removed in the future */ ++ if (!do_sio) { ++ h_dir = au_pinned_h_dir(pin); ++ do_sio = h_dir->i_mode & S_ISVTX; ++ } ++ } ++ ++ return do_sio; ++} ++ ++#if 0 /* reserved */ ++int au_sio_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) ++{ ++ int err, wkq_err; ++ struct dentry *h_dentry; ++ ++ h_dentry = au_h_dptr(cpg->dentry, cpg->bsrc); ++ if (!au_cpup_sio_test(pin, d_inode(h_dentry)->i_mode)) ++ err = au_cpup_single(cpg, dst_parent); ++ else { ++ struct au_cpup_single_args args = { ++ .errp = &err, ++ .cpg = cpg, ++ .dst_parent = dst_parent ++ }; ++ wkq_err = au_wkq_wait(au_call_cpup_single, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ ++ return err; ++} ++#endif ++ ++/* ++ * copyup the @dentry from the first active lower branch to @bdst, ++ * using au_cpup_single(). ++ */ ++static int au_cpup_simple(struct au_cp_generic *cpg) ++{ ++ int err; ++ unsigned int flags_orig; ++ struct dentry *dentry; ++ ++ AuDebugOn(cpg->bsrc < 0); ++ ++ dentry = cpg->dentry; ++ DiMustWriteLock(dentry); ++ ++ err = au_lkup_neg(dentry, cpg->bdst, /*wh*/1); ++ if (!err) { ++ flags_orig = cpg->flags; ++ au_fset_cpup(cpg->flags, RENAME); ++ err = au_cpup_single(cpg, NULL); ++ cpg->flags = flags_orig; ++ if (!err) ++ return 0; /* success */ ++ ++ /* revert */ ++ au_set_h_dptr(dentry, cpg->bdst, NULL); ++ au_set_dbtop(dentry, cpg->bsrc); ++ } ++ ++ return err; ++} ++ ++struct au_cpup_simple_args { ++ int *errp; ++ struct au_cp_generic *cpg; ++}; ++ ++static void au_call_cpup_simple(void *args) ++{ ++ struct au_cpup_simple_args *a = args; ++ ++ au_pin_hdir_acquire_nest(a->cpg->pin); ++ *a->errp = au_cpup_simple(a->cpg); ++ au_pin_hdir_release(a->cpg->pin); ++} ++ ++static int au_do_sio_cpup_simple(struct au_cp_generic *cpg) ++{ ++ int err, wkq_err; ++ struct dentry *dentry, *parent; ++ struct file *h_file; ++ struct inode *h_dir; ++ struct user_namespace *h_userns; ++ ++ dentry = cpg->dentry; ++ h_file = NULL; ++ if (au_ftest_cpup(cpg->flags, HOPEN)) { ++ AuDebugOn(cpg->bsrc < 0); ++ h_file = au_h_open_pre(dentry, cpg->bsrc, /*force_wr*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ } ++ ++ parent = dget_parent(dentry); ++ h_dir = au_h_iptr(d_inode(parent), cpg->bdst); ++ h_userns = au_sbr_userns(dentry->d_sb, cpg->bdst); ++ if (!au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC | MAY_WRITE) ++ && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) ++ err = au_cpup_simple(cpg); ++ else { ++ struct au_cpup_simple_args args = { ++ .errp = &err, ++ .cpg = cpg ++ }; ++ wkq_err = au_wkq_wait(au_call_cpup_simple, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ ++ dput(parent); ++ if (h_file) ++ au_h_open_post(dentry, cpg->bsrc, h_file); ++ ++out: ++ return err; ++} ++ ++int au_sio_cpup_simple(struct au_cp_generic *cpg) ++{ ++ aufs_bindex_t bsrc, bbot; ++ struct dentry *dentry, *h_dentry; ++ ++ if (cpg->bsrc < 0) { ++ dentry = cpg->dentry; ++ bbot = au_dbbot(dentry); ++ for (bsrc = cpg->bdst + 1; bsrc <= bbot; bsrc++) { ++ h_dentry = au_h_dptr(dentry, bsrc); ++ if (h_dentry) { ++ AuDebugOn(d_is_negative(h_dentry)); ++ break; ++ } ++ } ++ AuDebugOn(bsrc > bbot); ++ cpg->bsrc = bsrc; ++ } ++ AuDebugOn(cpg->bsrc <= cpg->bdst); ++ return au_do_sio_cpup_simple(cpg); ++} ++ ++int au_sio_cpdown_simple(struct au_cp_generic *cpg) ++{ ++ AuDebugOn(cpg->bdst <= cpg->bsrc); ++ return au_do_sio_cpup_simple(cpg); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * copyup the deleted file for writing. ++ */ ++static int au_do_cpup_wh(struct au_cp_generic *cpg, struct dentry *wh_dentry, ++ struct file *file) ++{ ++ int err; ++ unsigned int flags_orig; ++ aufs_bindex_t bsrc_orig; ++ struct au_dinfo *dinfo; ++ struct { ++ struct au_hdentry *hd; ++ struct dentry *h_dentry; ++ } hdst, hsrc; ++ ++ dinfo = au_di(cpg->dentry); ++ AuRwMustWriteLock(&dinfo->di_rwsem); ++ ++ bsrc_orig = cpg->bsrc; ++ cpg->bsrc = dinfo->di_btop; ++ hdst.hd = au_hdentry(dinfo, cpg->bdst); ++ hdst.h_dentry = hdst.hd->hd_dentry; ++ hdst.hd->hd_dentry = wh_dentry; ++ dinfo->di_btop = cpg->bdst; ++ ++ hsrc.h_dentry = NULL; ++ if (file) { ++ hsrc.hd = au_hdentry(dinfo, cpg->bsrc); ++ hsrc.h_dentry = hsrc.hd->hd_dentry; ++ hsrc.hd->hd_dentry = au_hf_top(file)->f_path.dentry; ++ } ++ flags_orig = cpg->flags; ++ cpg->flags = !AuCpup_DTIME; ++ err = au_cpup_single(cpg, /*h_parent*/NULL); ++ cpg->flags = flags_orig; ++ if (file) { ++ if (!err) ++ err = au_reopen_nondir(file); ++ hsrc.hd->hd_dentry = hsrc.h_dentry; ++ } ++ hdst.hd->hd_dentry = hdst.h_dentry; ++ dinfo->di_btop = cpg->bsrc; ++ cpg->bsrc = bsrc_orig; ++ ++ return err; ++} ++ ++static int au_cpup_wh(struct au_cp_generic *cpg, struct file *file) ++{ ++ int err; ++ aufs_bindex_t bdst; ++ struct au_dtime dt; ++ struct dentry *dentry, *parent, *h_parent, *wh_dentry; ++ struct au_branch *br; ++ struct path h_path; ++ ++ dentry = cpg->dentry; ++ bdst = cpg->bdst; ++ br = au_sbr(dentry->d_sb, bdst); ++ parent = dget_parent(dentry); ++ h_parent = au_h_dptr(parent, bdst); ++ wh_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out; ++ ++ h_path.dentry = h_parent; ++ h_path.mnt = au_br_mnt(br); ++ au_dtime_store(&dt, parent, &h_path); ++ err = au_do_cpup_wh(cpg, wh_dentry, file); ++ if (unlikely(err)) ++ goto out_wh; ++ ++ dget(wh_dentry); ++ h_path.dentry = wh_dentry; ++ if (!d_is_dir(wh_dentry)) { ++ /* no delegation since it is just created */ ++ err = vfsub_unlink(d_inode(h_parent), &h_path, ++ /*delegated*/NULL, /*force*/0); ++ } else ++ err = vfsub_rmdir(d_inode(h_parent), &h_path); ++ if (unlikely(err)) { ++ AuIOErr("failed remove copied-up tmp file %pd(%d)\n", ++ wh_dentry, err); ++ err = -EIO; ++ } ++ au_dtime_revert(&dt); ++ au_set_hi_wh(d_inode(dentry), bdst, wh_dentry); ++ ++out_wh: ++ dput(wh_dentry); ++out: ++ dput(parent); ++ return err; ++} ++ ++struct au_cpup_wh_args { ++ int *errp; ++ struct au_cp_generic *cpg; ++ struct file *file; ++}; ++ ++static void au_call_cpup_wh(void *args) ++{ ++ struct au_cpup_wh_args *a = args; ++ ++ au_pin_hdir_acquire_nest(a->cpg->pin); ++ *a->errp = au_cpup_wh(a->cpg, a->file); ++ au_pin_hdir_release(a->cpg->pin); ++} ++ ++int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file) ++{ ++ int err, wkq_err; ++ aufs_bindex_t bdst; ++ struct dentry *dentry, *parent, *h_orph, *h_parent; ++ struct inode *dir, *h_dir, *h_tmpdir; ++ struct au_wbr *wbr; ++ struct au_pin wh_pin, *pin_orig; ++ struct user_namespace *h_userns; ++ ++ dentry = cpg->dentry; ++ bdst = cpg->bdst; ++ parent = dget_parent(dentry); ++ dir = d_inode(parent); ++ h_orph = NULL; ++ h_parent = NULL; ++ h_dir = au_igrab(au_h_iptr(dir, bdst)); ++ h_tmpdir = h_dir; ++ pin_orig = NULL; ++ if (!h_dir->i_nlink) { ++ wbr = au_sbr(dentry->d_sb, bdst)->br_wbr; ++ h_orph = wbr->wbr_orph; ++ ++ h_parent = dget(au_h_dptr(parent, bdst)); ++ au_set_h_dptr(parent, bdst, dget(h_orph)); ++ h_tmpdir = d_inode(h_orph); ++ au_set_h_iptr(dir, bdst, au_igrab(h_tmpdir), /*flags*/0); ++ ++ inode_lock_nested(h_tmpdir, AuLsc_I_PARENT3); ++ /* todo: au_h_open_pre()? */ ++ ++ pin_orig = cpg->pin; ++ au_pin_init(&wh_pin, dentry, bdst, AuLsc_DI_PARENT, ++ AuLsc_I_PARENT3, cpg->pin->udba, AuPin_DI_LOCKED); ++ cpg->pin = &wh_pin; ++ } ++ ++ h_userns = au_sbr_userns(dentry->d_sb, bdst); ++ if (!au_test_h_perm_sio(h_userns, h_tmpdir, MAY_EXEC | MAY_WRITE) ++ && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) ++ err = au_cpup_wh(cpg, file); ++ else { ++ struct au_cpup_wh_args args = { ++ .errp = &err, ++ .cpg = cpg, ++ .file = file ++ }; ++ wkq_err = au_wkq_wait(au_call_cpup_wh, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ ++ if (h_orph) { ++ inode_unlock(h_tmpdir); ++ /* todo: au_h_open_post()? */ ++ au_set_h_iptr(dir, bdst, au_igrab(h_dir), /*flags*/0); ++ au_set_h_dptr(parent, bdst, h_parent); ++ AuDebugOn(!pin_orig); ++ cpg->pin = pin_orig; ++ } ++ iput(h_dir); ++ dput(parent); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * generic routine for both of copy-up and copy-down. ++ */ ++/* cf. revalidate function in file.c */ ++int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, ++ int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, ++ struct au_pin *pin, ++ struct dentry *h_parent, void *arg), ++ void *arg) ++{ ++ int err; ++ struct au_pin pin; ++ struct dentry *d, *parent, *h_parent, *real_parent, *h_dentry; ++ ++ err = 0; ++ parent = dget_parent(dentry); ++ if (IS_ROOT(parent)) ++ goto out; ++ ++ au_pin_init(&pin, dentry, bdst, AuLsc_DI_PARENT2, AuLsc_I_PARENT2, ++ au_opt_udba(dentry->d_sb), AuPin_MNT_WRITE); ++ ++ /* do not use au_dpage */ ++ real_parent = parent; ++ while (1) { ++ dput(parent); ++ parent = dget_parent(dentry); ++ h_parent = au_h_dptr(parent, bdst); ++ if (h_parent) ++ goto out; /* success */ ++ ++ /* find top dir which is necessary to cpup */ ++ do { ++ d = parent; ++ dput(parent); ++ parent = dget_parent(d); ++ di_read_lock_parent3(parent, !AuLock_IR); ++ h_parent = au_h_dptr(parent, bdst); ++ di_read_unlock(parent, !AuLock_IR); ++ } while (!h_parent); ++ ++ if (d != real_parent) ++ di_write_lock_child3(d); ++ ++ /* somebody else might create while we were sleeping */ ++ h_dentry = au_h_dptr(d, bdst); ++ if (!h_dentry || d_is_negative(h_dentry)) { ++ if (h_dentry) ++ au_update_dbtop(d); ++ ++ au_pin_set_dentry(&pin, d); ++ err = au_do_pin(&pin); ++ if (!err) { ++ err = cp(d, bdst, &pin, h_parent, arg); ++ au_unpin(&pin); ++ } ++ } ++ ++ if (d != real_parent) ++ di_write_unlock(d); ++ if (unlikely(err)) ++ break; ++ } ++ ++out: ++ dput(parent); ++ return err; ++} ++ ++static int au_cpup_dir(struct dentry *dentry, aufs_bindex_t bdst, ++ struct au_pin *pin, ++ struct dentry *h_parent __maybe_unused, ++ void *arg __maybe_unused) ++{ ++ struct au_cp_generic cpg = { ++ .dentry = dentry, ++ .bdst = bdst, ++ .bsrc = -1, ++ .len = 0, ++ .pin = pin, ++ .flags = AuCpup_DTIME ++ }; ++ return au_sio_cpup_simple(&cpg); ++} ++ ++int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) ++{ ++ return au_cp_dirs(dentry, bdst, au_cpup_dir, NULL); ++} ++ ++int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) ++{ ++ int err; ++ struct dentry *parent; ++ struct inode *dir; ++ ++ parent = dget_parent(dentry); ++ dir = d_inode(parent); ++ err = 0; ++ if (au_h_iptr(dir, bdst)) ++ goto out; ++ ++ di_read_unlock(parent, AuLock_IR); ++ di_write_lock_parent(parent); ++ /* someone else might change our inode while we were sleeping */ ++ if (!au_h_iptr(dir, bdst)) ++ err = au_cpup_dirs(dentry, bdst); ++ di_downgrade_lock(parent, AuLock_IR); ++ ++out: ++ dput(parent); ++ return err; ++} +diff -Naur null/fs/aufs/cpup.h linux-5.15.36/fs/aufs/cpup.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/cpup.h 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,100 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * copy-up/down functions ++ */ ++ ++#ifndef __AUFS_CPUP_H__ ++#define __AUFS_CPUP_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++ ++struct inode; ++struct file; ++struct au_pin; ++ ++void au_cpup_attr_flags(struct inode *dst, unsigned int iflags); ++void au_cpup_attr_timesizes(struct inode *inode); ++void au_cpup_attr_nlink(struct inode *inode, int force); ++void au_cpup_attr_changeable(struct inode *inode); ++void au_cpup_igen(struct inode *inode, struct inode *h_inode); ++void au_cpup_attr_all(struct inode *inode, int force); ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_cp_generic { ++ struct dentry *dentry; ++ aufs_bindex_t bdst, bsrc; ++ loff_t len; ++ struct au_pin *pin; ++ unsigned int flags; ++}; ++ ++/* cpup flags */ ++#define AuCpup_DTIME 1 /* do dtime_store/revert */ ++#define AuCpup_KEEPLINO (1 << 1) /* do not clear the lower xino, ++ for link(2) */ ++#define AuCpup_RENAME (1 << 2) /* rename after cpup */ ++#define AuCpup_HOPEN (1 << 3) /* call h_open_pre/post() in ++ cpup */ ++#define AuCpup_OVERWRITE (1 << 4) /* allow overwriting the ++ existing entry */ ++#define AuCpup_RWDST (1 << 5) /* force write target even if ++ the branch is marked as RO */ ++ ++#ifndef CONFIG_AUFS_BR_HFSPLUS ++#undef AuCpup_HOPEN ++#define AuCpup_HOPEN 0 ++#endif ++ ++#define au_ftest_cpup(flags, name) ((flags) & AuCpup_##name) ++#define au_fset_cpup(flags, name) \ ++ do { (flags) |= AuCpup_##name; } while (0) ++#define au_fclr_cpup(flags, name) \ ++ do { (flags) &= ~AuCpup_##name; } while (0) ++ ++int au_copy_file(struct file *dst, struct file *src, loff_t len); ++int au_sio_cpup_simple(struct au_cp_generic *cpg); ++int au_sio_cpdown_simple(struct au_cp_generic *cpg); ++int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file); ++ ++int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, ++ int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, ++ struct au_pin *pin, ++ struct dentry *h_parent, void *arg), ++ void *arg); ++int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); ++int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* keep timestamps when copyup */ ++struct au_dtime { ++ struct dentry *dt_dentry; ++ struct path dt_h_path; ++ struct timespec64 dt_atime, dt_mtime; ++}; ++void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, ++ struct path *h_path); ++void au_dtime_revert(struct au_dtime *dt); ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_CPUP_H__ */ +diff -Naur null/fs/aufs/dbgaufs.c linux-5.15.36/fs/aufs/dbgaufs.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dbgaufs.c 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,526 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * debugfs interface ++ */ ++ ++#include ++#include "aufs.h" ++ ++#ifndef CONFIG_SYSFS ++#error DEBUG_FS depends upon SYSFS ++#endif ++ ++static struct dentry *dbgaufs; ++static const mode_t dbgaufs_mode = 0444; ++ ++/* 20 is max digits length of ulong 64 */ ++struct dbgaufs_arg { ++ int n; ++ char a[20 * 4]; ++}; ++ ++/* ++ * common function for all XINO files ++ */ ++static int dbgaufs_xi_release(struct inode *inode __maybe_unused, ++ struct file *file) ++{ ++ void *p; ++ ++ p = file->private_data; ++ if (p) { ++ /* this is struct dbgaufs_arg */ ++ AuDebugOn(!au_kfree_sz_test(p)); ++ au_kfree_do_rcu(p); ++ } ++ return 0; ++} ++ ++static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt, ++ int cnt) ++{ ++ int err; ++ struct kstat st; ++ struct dbgaufs_arg *p; ++ ++ err = -ENOMEM; ++ p = kmalloc(sizeof(*p), GFP_NOFS); ++ if (unlikely(!p)) ++ goto out; ++ ++ err = 0; ++ p->n = 0; ++ file->private_data = p; ++ if (!xf) ++ goto out; ++ ++ err = vfsub_getattr(&xf->f_path, &st); ++ if (!err) { ++ if (do_fcnt) ++ p->n = snprintf ++ (p->a, sizeof(p->a), "%d, %llux%u %lld\n", ++ cnt, st.blocks, st.blksize, ++ (long long)st.size); ++ else ++ p->n = snprintf(p->a, sizeof(p->a), "%llux%u %lld\n", ++ st.blocks, st.blksize, ++ (long long)st.size); ++ AuDebugOn(p->n >= sizeof(p->a)); ++ } else { ++ p->n = snprintf(p->a, sizeof(p->a), "err %d\n", err); ++ err = 0; ++ } ++ ++out: ++ return err; ++} ++ ++static ssize_t dbgaufs_xi_read(struct file *file, char __user *buf, ++ size_t count, loff_t *ppos) ++{ ++ struct dbgaufs_arg *p; ++ ++ p = file->private_data; ++ return simple_read_from_buffer(buf, count, ppos, p->a, p->n); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct dbgaufs_plink_arg { ++ int n; ++ char a[]; ++}; ++ ++static int dbgaufs_plink_release(struct inode *inode __maybe_unused, ++ struct file *file) ++{ ++ free_page((unsigned long)file->private_data); ++ return 0; ++} ++ ++static int dbgaufs_plink_open(struct inode *inode, struct file *file) ++{ ++ int err, i, limit; ++ unsigned long n, sum; ++ struct dbgaufs_plink_arg *p; ++ struct au_sbinfo *sbinfo; ++ struct super_block *sb; ++ struct hlist_bl_head *hbl; ++ ++ err = -ENOMEM; ++ p = (void *)get_zeroed_page(GFP_NOFS); ++ if (unlikely(!p)) ++ goto out; ++ ++ err = -EFBIG; ++ sbinfo = inode->i_private; ++ sb = sbinfo->si_sb; ++ si_noflush_read_lock(sb); ++ if (au_opt_test(au_mntflags(sb), PLINK)) { ++ limit = PAGE_SIZE - sizeof(p->n); ++ ++ /* the number of buckets */ ++ n = snprintf(p->a + p->n, limit, "%d\n", AuPlink_NHASH); ++ p->n += n; ++ limit -= n; ++ ++ sum = 0; ++ for (i = 0, hbl = sbinfo->si_plink; i < AuPlink_NHASH; ++ i++, hbl++) { ++ n = au_hbl_count(hbl); ++ sum += n; ++ ++ n = snprintf(p->a + p->n, limit, "%lu ", n); ++ p->n += n; ++ limit -= n; ++ if (unlikely(limit <= 0)) ++ goto out_free; ++ } ++ p->a[p->n - 1] = '\n'; ++ ++ /* the sum of plinks */ ++ n = snprintf(p->a + p->n, limit, "%lu\n", sum); ++ p->n += n; ++ limit -= n; ++ if (unlikely(limit <= 0)) ++ goto out_free; ++ } else { ++#define str "1\n0\n0\n" ++ p->n = sizeof(str) - 1; ++ strcpy(p->a, str); ++#undef str ++ } ++ si_read_unlock(sb); ++ ++ err = 0; ++ file->private_data = p; ++ goto out; /* success */ ++ ++out_free: ++ free_page((unsigned long)p); ++out: ++ return err; ++} ++ ++static ssize_t dbgaufs_plink_read(struct file *file, char __user *buf, ++ size_t count, loff_t *ppos) ++{ ++ struct dbgaufs_plink_arg *p; ++ ++ p = file->private_data; ++ return simple_read_from_buffer(buf, count, ppos, p->a, p->n); ++} ++ ++static const struct file_operations dbgaufs_plink_fop = { ++ .owner = THIS_MODULE, ++ .open = dbgaufs_plink_open, ++ .release = dbgaufs_plink_release, ++ .read = dbgaufs_plink_read ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int dbgaufs_xib_open(struct inode *inode, struct file *file) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ struct super_block *sb; ++ ++ sbinfo = inode->i_private; ++ sb = sbinfo->si_sb; ++ si_noflush_read_lock(sb); ++ err = dbgaufs_xi_open(sbinfo->si_xib, file, /*do_fcnt*/0, /*cnt*/0); ++ si_read_unlock(sb); ++ return err; ++} ++ ++static const struct file_operations dbgaufs_xib_fop = { ++ .owner = THIS_MODULE, ++ .open = dbgaufs_xib_open, ++ .release = dbgaufs_xi_release, ++ .read = dbgaufs_xi_read ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define DbgaufsXi_PREFIX "xi" ++ ++static int dbgaufs_xino_open(struct inode *inode, struct file *file) ++{ ++ int err, idx; ++ long l; ++ aufs_bindex_t bindex; ++ char *p, a[sizeof(DbgaufsXi_PREFIX) + 8]; ++ struct au_sbinfo *sbinfo; ++ struct super_block *sb; ++ struct au_xino *xi; ++ struct file *xf; ++ struct qstr *name; ++ struct au_branch *br; ++ ++ err = -ENOENT; ++ name = &file->f_path.dentry->d_name; ++ if (unlikely(name->len < sizeof(DbgaufsXi_PREFIX) ++ || memcmp(name->name, DbgaufsXi_PREFIX, ++ sizeof(DbgaufsXi_PREFIX) - 1))) ++ goto out; ++ ++ AuDebugOn(name->len >= sizeof(a)); ++ memcpy(a, name->name, name->len); ++ a[name->len] = '\0'; ++ p = strchr(a, '-'); ++ if (p) ++ *p = '\0'; ++ err = kstrtol(a + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); ++ if (unlikely(err)) ++ goto out; ++ bindex = l; ++ idx = 0; ++ if (p) { ++ err = kstrtol(p + 1, 10, &l); ++ if (unlikely(err)) ++ goto out; ++ idx = l; ++ } ++ ++ err = -ENOENT; ++ sbinfo = inode->i_private; ++ sb = sbinfo->si_sb; ++ si_noflush_read_lock(sb); ++ if (unlikely(bindex < 0 || bindex > au_sbbot(sb))) ++ goto out_si; ++ br = au_sbr(sb, bindex); ++ xi = br->br_xino; ++ if (unlikely(idx >= xi->xi_nfile)) ++ goto out_si; ++ xf = au_xino_file(xi, idx); ++ if (xf) ++ err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1, ++ au_xino_count(br)); ++ ++out_si: ++ si_read_unlock(sb); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static const struct file_operations dbgaufs_xino_fop = { ++ .owner = THIS_MODULE, ++ .open = dbgaufs_xino_open, ++ .release = dbgaufs_xi_release, ++ .read = dbgaufs_xi_read ++}; ++ ++void dbgaufs_xino_del(struct au_branch *br) ++{ ++ struct dentry *dbgaufs; ++ ++ dbgaufs = br->br_dbgaufs; ++ if (!dbgaufs) ++ return; ++ ++ br->br_dbgaufs = NULL; ++ /* debugfs acquires the parent i_mutex */ ++ lockdep_off(); ++ debugfs_remove(dbgaufs); ++ lockdep_on(); ++} ++ ++void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ aufs_bindex_t bbot; ++ struct au_branch *br; ++ ++ if (!au_sbi(sb)->si_dbgaufs) ++ return; ++ ++ bbot = au_sbbot(sb); ++ for (; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ dbgaufs_xino_del(br); ++ } ++} ++ ++static void dbgaufs_br_do_add(struct super_block *sb, aufs_bindex_t bindex, ++ unsigned int idx, struct dentry *parent, ++ struct au_sbinfo *sbinfo) ++{ ++ struct au_branch *br; ++ struct dentry *d; ++ /* "xi" bindex(5) "-" idx(2) NULL */ ++ char name[sizeof(DbgaufsXi_PREFIX) + 8]; ++ ++ if (!idx) ++ snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); ++ else ++ snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d-%u", ++ bindex, idx); ++ br = au_sbr(sb, bindex); ++ if (br->br_dbgaufs) { ++ struct qstr qstr = QSTR_INIT(name, strlen(name)); ++ ++ if (!au_qstreq(&br->br_dbgaufs->d_name, &qstr)) { ++ /* debugfs acquires the parent i_mutex */ ++ lockdep_off(); ++ d = debugfs_rename(parent, br->br_dbgaufs, parent, ++ name); ++ lockdep_on(); ++ if (unlikely(!d)) ++ pr_warn("failed renaming %pd/%s, ignored.\n", ++ parent, name); ++ } ++ } else { ++ lockdep_off(); ++ br->br_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, ++ sbinfo, &dbgaufs_xino_fop); ++ lockdep_on(); ++ if (unlikely(!br->br_dbgaufs)) ++ pr_warn("failed creating %pd/%s, ignored.\n", ++ parent, name); ++ } ++} ++ ++static void dbgaufs_br_add(struct super_block *sb, aufs_bindex_t bindex, ++ struct dentry *parent, struct au_sbinfo *sbinfo) ++{ ++ struct au_branch *br; ++ struct au_xino *xi; ++ unsigned int u; ++ ++ br = au_sbr(sb, bindex); ++ xi = br->br_xino; ++ for (u = 0; u < xi->xi_nfile; u++) ++ dbgaufs_br_do_add(sb, bindex, u, parent, sbinfo); ++} ++ ++void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex, int topdown) ++{ ++ struct au_sbinfo *sbinfo; ++ struct dentry *parent; ++ aufs_bindex_t bbot; ++ ++ if (!au_opt_test(au_mntflags(sb), XINO)) ++ return; ++ ++ sbinfo = au_sbi(sb); ++ parent = sbinfo->si_dbgaufs; ++ if (!parent) ++ return; ++ ++ bbot = au_sbbot(sb); ++ if (topdown) ++ for (; bindex <= bbot; bindex++) ++ dbgaufs_br_add(sb, bindex, parent, sbinfo); ++ else ++ for (; bbot >= bindex; bbot--) ++ dbgaufs_br_add(sb, bbot, parent, sbinfo); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_EXPORT ++static int dbgaufs_xigen_open(struct inode *inode, struct file *file) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ struct super_block *sb; ++ ++ sbinfo = inode->i_private; ++ sb = sbinfo->si_sb; ++ si_noflush_read_lock(sb); ++ err = dbgaufs_xi_open(sbinfo->si_xigen, file, /*do_fcnt*/0, /*cnt*/0); ++ si_read_unlock(sb); ++ return err; ++} ++ ++static const struct file_operations dbgaufs_xigen_fop = { ++ .owner = THIS_MODULE, ++ .open = dbgaufs_xigen_open, ++ .release = dbgaufs_xi_release, ++ .read = dbgaufs_xi_read ++}; ++ ++static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) ++{ ++ int err; ++ ++ /* ++ * This function is a dynamic '__init' function actually, ++ * so the tiny check for si_rwsem is unnecessary. ++ */ ++ /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ ++ ++ err = -EIO; ++ sbinfo->si_dbgaufs_xigen = debugfs_create_file ++ ("xigen", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, ++ &dbgaufs_xigen_fop); ++ if (sbinfo->si_dbgaufs_xigen) ++ err = 0; ++ ++ return err; ++} ++#else ++static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) ++{ ++ return 0; ++} ++#endif /* CONFIG_AUFS_EXPORT */ ++ ++/* ---------------------------------------------------------------------- */ ++ ++void dbgaufs_si_fin(struct au_sbinfo *sbinfo) ++{ ++ /* ++ * This function is a dynamic '__fin' function actually, ++ * so the tiny check for si_rwsem is unnecessary. ++ */ ++ /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ ++ ++ debugfs_remove_recursive(sbinfo->si_dbgaufs); ++ sbinfo->si_dbgaufs = NULL; ++} ++ ++int dbgaufs_si_init(struct au_sbinfo *sbinfo) ++{ ++ int err; ++ char name[SysaufsSiNameLen]; ++ ++ /* ++ * This function is a dynamic '__init' function actually, ++ * so the tiny check for si_rwsem is unnecessary. ++ */ ++ /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ ++ ++ err = -ENOENT; ++ if (!dbgaufs) { ++ AuErr1("/debug/aufs is uninitialized\n"); ++ goto out; ++ } ++ ++ err = -EIO; ++ sysaufs_name(sbinfo, name); ++ sbinfo->si_dbgaufs = debugfs_create_dir(name, dbgaufs); ++ if (unlikely(!sbinfo->si_dbgaufs)) ++ goto out; ++ ++ /* regardless plink/noplink option */ ++ sbinfo->si_dbgaufs_plink = debugfs_create_file ++ ("plink", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, ++ &dbgaufs_plink_fop); ++ if (unlikely(!sbinfo->si_dbgaufs_plink)) ++ goto out_dir; ++ ++ /* regardless xino/noxino option */ ++ sbinfo->si_dbgaufs_xib = debugfs_create_file ++ ("xib", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, ++ &dbgaufs_xib_fop); ++ if (unlikely(!sbinfo->si_dbgaufs_xib)) ++ goto out_dir; ++ ++ err = dbgaufs_xigen_init(sbinfo); ++ if (!err) ++ goto out; /* success */ ++ ++out_dir: ++ dbgaufs_si_fin(sbinfo); ++out: ++ if (unlikely(err)) ++ pr_err("debugfs/aufs failed\n"); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void dbgaufs_fin(void) ++{ ++ debugfs_remove(dbgaufs); ++} ++ ++int __init dbgaufs_init(void) ++{ ++ int err; ++ ++ err = -EIO; ++ dbgaufs = debugfs_create_dir(AUFS_NAME, NULL); ++ if (dbgaufs) ++ err = 0; ++ return err; ++} +diff -Naur null/fs/aufs/dbgaufs.h linux-5.15.36/fs/aufs/dbgaufs.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/dbgaufs.h 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,53 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * debugfs interface ++ */ ++ ++#ifndef __DBGAUFS_H__ ++#define __DBGAUFS_H__ ++ ++#ifdef __KERNEL__ ++ ++struct super_block; ++struct au_sbinfo; ++struct au_branch; ++ ++#ifdef CONFIG_DEBUG_FS ++/* dbgaufs.c */ ++void dbgaufs_xino_del(struct au_branch *br); ++void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); ++void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex, int topdown); ++void dbgaufs_si_fin(struct au_sbinfo *sbinfo); ++int dbgaufs_si_init(struct au_sbinfo *sbinfo); ++void dbgaufs_fin(void); ++int __init dbgaufs_init(void); ++#else ++AuStubVoid(dbgaufs_xino_del, struct au_branch *br) ++AuStubVoid(dbgaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) ++AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex, ++ int topdown) ++AuStubVoid(dbgaufs_si_fin, struct au_sbinfo *sbinfo) ++AuStubInt0(dbgaufs_si_init, struct au_sbinfo *sbinfo) ++AuStubVoid(dbgaufs_fin, void) ++AuStubInt0(__init dbgaufs_init, void) ++#endif /* CONFIG_DEBUG_FS */ ++ ++#endif /* __KERNEL__ */ ++#endif /* __DBGAUFS_H__ */ +diff -Naur null/fs/aufs/dcsub.c linux-5.15.36/fs/aufs/dcsub.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dcsub.c 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,225 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sub-routines for dentry cache ++ */ ++ ++#include "aufs.h" ++ ++static void au_dpage_free(struct au_dpage *dpage) ++{ ++ int i; ++ struct dentry **p; ++ ++ p = dpage->dentries; ++ for (i = 0; i < dpage->ndentry; i++) ++ dput(*p++); ++ free_page((unsigned long)dpage->dentries); ++} ++ ++int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp) ++{ ++ int err; ++ void *p; ++ ++ err = -ENOMEM; ++ dpages->dpages = kmalloc(sizeof(*dpages->dpages), gfp); ++ if (unlikely(!dpages->dpages)) ++ goto out; ++ ++ p = (void *)__get_free_page(gfp); ++ if (unlikely(!p)) ++ goto out_dpages; ++ ++ dpages->dpages[0].ndentry = 0; ++ dpages->dpages[0].dentries = p; ++ dpages->ndpage = 1; ++ return 0; /* success */ ++ ++out_dpages: ++ au_kfree_try_rcu(dpages->dpages); ++out: ++ return err; ++} ++ ++void au_dpages_free(struct au_dcsub_pages *dpages) ++{ ++ int i; ++ struct au_dpage *p; ++ ++ p = dpages->dpages; ++ for (i = 0; i < dpages->ndpage; i++) ++ au_dpage_free(p++); ++ au_kfree_try_rcu(dpages->dpages); ++} ++ ++static int au_dpages_append(struct au_dcsub_pages *dpages, ++ struct dentry *dentry, gfp_t gfp) ++{ ++ int err, sz; ++ struct au_dpage *dpage; ++ void *p; ++ ++ dpage = dpages->dpages + dpages->ndpage - 1; ++ sz = PAGE_SIZE / sizeof(dentry); ++ if (unlikely(dpage->ndentry >= sz)) { ++ AuLabel(new dpage); ++ err = -ENOMEM; ++ sz = dpages->ndpage * sizeof(*dpages->dpages); ++ p = au_kzrealloc(dpages->dpages, sz, ++ sz + sizeof(*dpages->dpages), gfp, ++ /*may_shrink*/0); ++ if (unlikely(!p)) ++ goto out; ++ ++ dpages->dpages = p; ++ dpage = dpages->dpages + dpages->ndpage; ++ p = (void *)__get_free_page(gfp); ++ if (unlikely(!p)) ++ goto out; ++ ++ dpage->ndentry = 0; ++ dpage->dentries = p; ++ dpages->ndpage++; ++ } ++ ++ AuDebugOn(au_dcount(dentry) <= 0); ++ dpage->dentries[dpage->ndentry++] = dget_dlock(dentry); ++ return 0; /* success */ ++ ++out: ++ return err; ++} ++ ++/* todo: BAD approach */ ++/* copied from linux/fs/dcache.c */ ++enum d_walk_ret { ++ D_WALK_CONTINUE, ++ D_WALK_QUIT, ++ D_WALK_NORETRY, ++ D_WALK_SKIP, ++}; ++ ++extern void d_walk(struct dentry *parent, void *data, ++ enum d_walk_ret (*enter)(void *, struct dentry *)); ++ ++struct ac_dpages_arg { ++ int err; ++ struct au_dcsub_pages *dpages; ++ struct super_block *sb; ++ au_dpages_test test; ++ void *arg; ++}; ++ ++static enum d_walk_ret au_call_dpages_append(void *_arg, struct dentry *dentry) ++{ ++ enum d_walk_ret ret; ++ struct ac_dpages_arg *arg = _arg; ++ ++ ret = D_WALK_CONTINUE; ++ if (dentry->d_sb == arg->sb ++ && !IS_ROOT(dentry) ++ && au_dcount(dentry) > 0 ++ && au_di(dentry) ++ && (!arg->test || arg->test(dentry, arg->arg))) { ++ arg->err = au_dpages_append(arg->dpages, dentry, GFP_ATOMIC); ++ if (unlikely(arg->err)) ++ ret = D_WALK_QUIT; ++ } ++ ++ return ret; ++} ++ ++int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, ++ au_dpages_test test, void *arg) ++{ ++ struct ac_dpages_arg args = { ++ .err = 0, ++ .dpages = dpages, ++ .sb = root->d_sb, ++ .test = test, ++ .arg = arg ++ }; ++ ++ d_walk(root, &args, au_call_dpages_append); ++ ++ return args.err; ++} ++ ++int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, ++ int do_include, au_dpages_test test, void *arg) ++{ ++ int err; ++ ++ err = 0; ++ write_seqlock(&rename_lock); ++ spin_lock(&dentry->d_lock); ++ if (do_include ++ && au_dcount(dentry) > 0 ++ && (!test || test(dentry, arg))) ++ err = au_dpages_append(dpages, dentry, GFP_ATOMIC); ++ spin_unlock(&dentry->d_lock); ++ if (unlikely(err)) ++ goto out; ++ ++ /* ++ * RCU for vfsmount is unnecessary since this is a traverse in a single ++ * mount ++ */ ++ while (!IS_ROOT(dentry)) { ++ dentry = dentry->d_parent; /* rename_lock is locked */ ++ spin_lock(&dentry->d_lock); ++ if (au_dcount(dentry) > 0 ++ && (!test || test(dentry, arg))) ++ err = au_dpages_append(dpages, dentry, GFP_ATOMIC); ++ spin_unlock(&dentry->d_lock); ++ if (unlikely(err)) ++ break; ++ } ++ ++out: ++ write_sequnlock(&rename_lock); ++ return err; ++} ++ ++static inline int au_dcsub_dpages_aufs(struct dentry *dentry, void *arg) ++{ ++ return au_di(dentry) && dentry->d_sb == arg; ++} ++ ++int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, ++ struct dentry *dentry, int do_include) ++{ ++ return au_dcsub_pages_rev(dpages, dentry, do_include, ++ au_dcsub_dpages_aufs, dentry->d_sb); ++} ++ ++int au_test_subdir(struct dentry *d1, struct dentry *d2) ++{ ++ struct path path[2] = { ++ { ++ .dentry = d1 ++ }, ++ { ++ .dentry = d2 ++ } ++ }; ++ ++ return path_is_under(path + 0, path + 1); ++} +diff -Naur null/fs/aufs/dcsub.h linux-5.15.36/fs/aufs/dcsub.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/dcsub.h 2022-05-10 16:51:39.867744220 +0300 +@@ -0,0 +1,137 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sub-routines for dentry cache ++ */ ++ ++#ifndef __AUFS_DCSUB_H__ ++#define __AUFS_DCSUB_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++ ++struct au_dpage { ++ int ndentry; ++ struct dentry **dentries; ++}; ++ ++struct au_dcsub_pages { ++ int ndpage; ++ struct au_dpage *dpages; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* dcsub.c */ ++int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp); ++void au_dpages_free(struct au_dcsub_pages *dpages); ++typedef int (*au_dpages_test)(struct dentry *dentry, void *arg); ++int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, ++ au_dpages_test test, void *arg); ++int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, ++ int do_include, au_dpages_test test, void *arg); ++int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, ++ struct dentry *dentry, int do_include); ++int au_test_subdir(struct dentry *d1, struct dentry *d2); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * todo: in linux-3.13, several similar (but faster) helpers are added to ++ * include/linux/dcache.h. Try them (in the future). ++ */ ++ ++static inline int au_d_hashed_positive(struct dentry *d) ++{ ++ int err; ++ struct inode *inode = d_inode(d); ++ ++ err = 0; ++ if (unlikely(d_unhashed(d) ++ || d_is_negative(d) ++ || !inode->i_nlink)) ++ err = -ENOENT; ++ return err; ++} ++ ++static inline int au_d_linkable(struct dentry *d) ++{ ++ int err; ++ struct inode *inode = d_inode(d); ++ ++ err = au_d_hashed_positive(d); ++ if (err ++ && d_is_positive(d) ++ && (inode->i_state & I_LINKABLE)) ++ err = 0; ++ return err; ++} ++ ++static inline int au_d_alive(struct dentry *d) ++{ ++ int err; ++ struct inode *inode; ++ ++ err = 0; ++ if (!IS_ROOT(d)) ++ err = au_d_hashed_positive(d); ++ else { ++ inode = d_inode(d); ++ if (unlikely(d_unlinked(d) ++ || d_is_negative(d) ++ || !inode->i_nlink)) ++ err = -ENOENT; ++ } ++ return err; ++} ++ ++static inline int au_alive_dir(struct dentry *d) ++{ ++ int err; ++ ++ err = au_d_alive(d); ++ if (unlikely(err || IS_DEADDIR(d_inode(d)))) ++ err = -ENOENT; ++ return err; ++} ++ ++static inline int au_qstreq(struct qstr *a, struct qstr *b) ++{ ++ return a->len == b->len ++ && !memcmp(a->name, b->name, a->len); ++} ++ ++/* ++ * by the commit ++ * 360f547 2015-01-25 dcache: let the dentry count go down to zero without ++ * taking d_lock ++ * the type of d_lockref.count became int, but the inlined function d_count() ++ * still returns unsigned int. ++ * I don't know why. Maybe it is for every d_count() users? ++ * Anyway au_dcount() lives on. ++ */ ++static inline int au_dcount(struct dentry *d) ++{ ++ return (int)d_count(d); ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_DCSUB_H__ */ +diff -Naur null/fs/aufs/debug.c linux-5.15.36/fs/aufs/debug.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/debug.c 2022-05-10 16:51:39.868744219 +0300 +@@ -0,0 +1,444 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * debug print functions ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* Returns 0, or -errno. arg is in kp->arg. */ ++static int param_atomic_t_set(const char *val, const struct kernel_param *kp) ++{ ++ int err, n; ++ ++ err = kstrtoint(val, 0, &n); ++ if (!err) { ++ if (n > 0) ++ au_debug_on(); ++ else ++ au_debug_off(); ++ } ++ return err; ++} ++ ++/* Returns length written or -errno. Buffer is 4k (ie. be short!) */ ++static int param_atomic_t_get(char *buffer, const struct kernel_param *kp) ++{ ++ atomic_t *a; ++ ++ a = kp->arg; ++ return sprintf(buffer, "%d", atomic_read(a)); ++} ++ ++static struct kernel_param_ops param_ops_atomic_t = { ++ .set = param_atomic_t_set, ++ .get = param_atomic_t_get ++ /* void (*free)(void *arg) */ ++}; ++ ++atomic_t aufs_debug = ATOMIC_INIT(0); ++MODULE_PARM_DESC(debug, "debug print"); ++module_param_named(debug, aufs_debug, atomic_t, 0664); ++ ++DEFINE_MUTEX(au_dbg_mtx); /* just to serialize the dbg msgs */ ++char *au_plevel = KERN_DEBUG; ++#define dpri(fmt, ...) do { \ ++ if ((au_plevel \ ++ && strcmp(au_plevel, KERN_DEBUG)) \ ++ || au_debug_test()) \ ++ printk("%s" fmt, au_plevel, ##__VA_ARGS__); \ ++} while (0) ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_dpri_whlist(struct au_nhash *whlist) ++{ ++ unsigned long ul, n; ++ struct hlist_head *head; ++ struct au_vdir_wh *pos; ++ ++ n = whlist->nh_num; ++ head = whlist->nh_head; ++ for (ul = 0; ul < n; ul++) { ++ hlist_for_each_entry(pos, head, wh_hash) ++ dpri("b%d, %.*s, %d\n", ++ pos->wh_bindex, ++ pos->wh_str.len, pos->wh_str.name, ++ pos->wh_str.len); ++ head++; ++ } ++} ++ ++void au_dpri_vdir(struct au_vdir *vdir) ++{ ++ unsigned long ul; ++ union au_vdir_deblk_p p; ++ unsigned char *o; ++ ++ if (!vdir || IS_ERR(vdir)) { ++ dpri("err %ld\n", PTR_ERR(vdir)); ++ return; ++ } ++ ++ dpri("deblk %u, nblk %lu, deblk %p, last{%lu, %p}, ver %llu\n", ++ vdir->vd_deblk_sz, vdir->vd_nblk, vdir->vd_deblk, ++ vdir->vd_last.ul, vdir->vd_last.p.deblk, vdir->vd_version); ++ for (ul = 0; ul < vdir->vd_nblk; ul++) { ++ p.deblk = vdir->vd_deblk[ul]; ++ o = p.deblk; ++ dpri("[%lu]: %p\n", ul, o); ++ } ++} ++ ++static int do_pri_inode(aufs_bindex_t bindex, struct inode *inode, int hn, ++ struct dentry *wh) ++{ ++ char *n = NULL; ++ int l = 0; ++ ++ if (!inode || IS_ERR(inode)) { ++ dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); ++ return -1; ++ } ++ ++ /* the type of i_blocks depends upon CONFIG_LBDAF */ ++ BUILD_BUG_ON(sizeof(inode->i_blocks) != sizeof(unsigned long) ++ && sizeof(inode->i_blocks) != sizeof(u64)); ++ if (wh) { ++ n = (void *)wh->d_name.name; ++ l = wh->d_name.len; ++ } ++ ++ dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," ++ " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", ++ bindex, inode, ++ inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", ++ atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, ++ i_size_read(inode), (unsigned long long)inode->i_blocks, ++ hn, (long long)timespec64_to_ns(&inode->i_ctime) & 0x0ffff, ++ inode->i_mapping ? inode->i_mapping->nrpages : 0, ++ inode->i_state, inode->i_flags, inode_peek_iversion(inode), ++ inode->i_generation, ++ l ? ", wh " : "", l, n); ++ return 0; ++} ++ ++void au_dpri_inode(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct au_hinode *hi; ++ aufs_bindex_t bindex; ++ int err, hn; ++ ++ err = do_pri_inode(-1, inode, -1, NULL); ++ if (err || !au_test_aufs(inode->i_sb) || au_is_bad_inode(inode)) ++ return; ++ ++ iinfo = au_ii(inode); ++ dpri("i-1: btop %d, bbot %d, gen %d\n", ++ iinfo->ii_btop, iinfo->ii_bbot, au_iigen(inode, NULL)); ++ if (iinfo->ii_btop < 0) ++ return; ++ hn = 0; ++ for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; bindex++) { ++ hi = au_hinode(iinfo, bindex); ++ hn = !!au_hn(hi); ++ do_pri_inode(bindex, hi->hi_inode, hn, hi->hi_whdentry); ++ } ++} ++ ++void au_dpri_dalias(struct inode *inode) ++{ ++ struct dentry *d; ++ ++ spin_lock(&inode->i_lock); ++ hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) ++ au_dpri_dentry(d); ++ spin_unlock(&inode->i_lock); ++} ++ ++static int do_pri_dentry(aufs_bindex_t bindex, struct dentry *dentry) ++{ ++ struct dentry *wh = NULL; ++ int hn; ++ struct inode *inode; ++ struct au_iinfo *iinfo; ++ struct au_hinode *hi; ++ ++ if (!dentry || IS_ERR(dentry)) { ++ dpri("d%d: err %ld\n", bindex, PTR_ERR(dentry)); ++ return -1; ++ } ++ /* do not call dget_parent() here */ ++ /* note: access d_xxx without d_lock */ ++ dpri("d%d: %p, %pd2?, %s, cnt %d, flags 0x%x, %shashed\n", ++ bindex, dentry, dentry, ++ dentry->d_sb ? au_sbtype(dentry->d_sb) : "??", ++ au_dcount(dentry), dentry->d_flags, ++ d_unhashed(dentry) ? "un" : ""); ++ hn = -1; ++ inode = NULL; ++ if (d_is_positive(dentry)) ++ inode = d_inode(dentry); ++ if (inode ++ && au_test_aufs(dentry->d_sb) ++ && bindex >= 0 ++ && !au_is_bad_inode(inode)) { ++ iinfo = au_ii(inode); ++ hi = au_hinode(iinfo, bindex); ++ hn = !!au_hn(hi); ++ wh = hi->hi_whdentry; ++ } ++ do_pri_inode(bindex, inode, hn, wh); ++ return 0; ++} ++ ++void au_dpri_dentry(struct dentry *dentry) ++{ ++ struct au_dinfo *dinfo; ++ aufs_bindex_t bindex; ++ int err; ++ ++ err = do_pri_dentry(-1, dentry); ++ if (err || !au_test_aufs(dentry->d_sb)) ++ return; ++ ++ dinfo = au_di(dentry); ++ if (!dinfo) ++ return; ++ dpri("d-1: btop %d, bbot %d, bwh %d, bdiropq %d, gen %d, tmp %d\n", ++ dinfo->di_btop, dinfo->di_bbot, ++ dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry), ++ dinfo->di_tmpfile); ++ if (dinfo->di_btop < 0) ++ return; ++ for (bindex = dinfo->di_btop; bindex <= dinfo->di_bbot; bindex++) ++ do_pri_dentry(bindex, au_hdentry(dinfo, bindex)->hd_dentry); ++} ++ ++static int do_pri_file(aufs_bindex_t bindex, struct file *file) ++{ ++ char a[32]; ++ ++ if (!file || IS_ERR(file)) { ++ dpri("f%d: err %ld\n", bindex, PTR_ERR(file)); ++ return -1; ++ } ++ a[0] = 0; ++ if (bindex < 0 ++ && !IS_ERR_OR_NULL(file->f_path.dentry) ++ && au_test_aufs(file->f_path.dentry->d_sb) ++ && au_fi(file)) ++ snprintf(a, sizeof(a), ", gen %d, mmapped %d", ++ au_figen(file), atomic_read(&au_fi(file)->fi_mmapped)); ++ dpri("f%d: mode 0x%x, flags 0%o, cnt %ld, v %llu, pos %llu%s\n", ++ bindex, file->f_mode, file->f_flags, (long)file_count(file), ++ file->f_version, file->f_pos, a); ++ if (!IS_ERR_OR_NULL(file->f_path.dentry)) ++ do_pri_dentry(bindex, file->f_path.dentry); ++ return 0; ++} ++ ++void au_dpri_file(struct file *file) ++{ ++ struct au_finfo *finfo; ++ struct au_fidir *fidir; ++ struct au_hfile *hfile; ++ aufs_bindex_t bindex; ++ int err; ++ ++ err = do_pri_file(-1, file); ++ if (err ++ || IS_ERR_OR_NULL(file->f_path.dentry) ++ || !au_test_aufs(file->f_path.dentry->d_sb)) ++ return; ++ ++ finfo = au_fi(file); ++ if (!finfo) ++ return; ++ if (finfo->fi_btop < 0) ++ return; ++ fidir = finfo->fi_hdir; ++ if (!fidir) ++ do_pri_file(finfo->fi_btop, finfo->fi_htop.hf_file); ++ else ++ for (bindex = finfo->fi_btop; ++ bindex >= 0 && bindex <= fidir->fd_bbot; ++ bindex++) { ++ hfile = fidir->fd_hfile + bindex; ++ do_pri_file(bindex, hfile ? hfile->hf_file : NULL); ++ } ++} ++ ++static int do_pri_br(aufs_bindex_t bindex, struct au_branch *br) ++{ ++ struct vfsmount *mnt; ++ struct super_block *sb; ++ ++ if (!br || IS_ERR(br)) ++ goto out; ++ mnt = au_br_mnt(br); ++ if (!mnt || IS_ERR(mnt)) ++ goto out; ++ sb = mnt->mnt_sb; ++ if (!sb || IS_ERR(sb)) ++ goto out; ++ ++ dpri("s%d: {perm 0x%x, id %d, wbr %p}, " ++ "%s, dev 0x%02x%02x, flags 0x%lx, cnt %d, active %d, " ++ "xino %d\n", ++ bindex, br->br_perm, br->br_id, br->br_wbr, ++ au_sbtype(sb), MAJOR(sb->s_dev), MINOR(sb->s_dev), ++ sb->s_flags, sb->s_count, ++ atomic_read(&sb->s_active), ++ !!au_xino_file(br->br_xino, /*idx*/-1)); ++ return 0; ++ ++out: ++ dpri("s%d: err %ld\n", bindex, PTR_ERR(br)); ++ return -1; ++} ++ ++void au_dpri_sb(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ aufs_bindex_t bindex; ++ int err; ++ /* to reduce stack size */ ++ struct { ++ struct vfsmount mnt; ++ struct au_branch fake; ++ } *a; ++ ++ /* this function can be called from magic sysrq */ ++ a = kzalloc(sizeof(*a), GFP_ATOMIC); ++ if (unlikely(!a)) { ++ dpri("no memory\n"); ++ return; ++ } ++ ++ a->mnt.mnt_sb = sb; ++ a->fake.br_path.mnt = &a->mnt; ++ err = do_pri_br(-1, &a->fake); ++ au_kfree_rcu(a); ++ dpri("dev 0x%x\n", sb->s_dev); ++ if (err || !au_test_aufs(sb)) ++ return; ++ ++ sbinfo = au_sbi(sb); ++ if (!sbinfo) ++ return; ++ dpri("nw %d, gen %u, kobj %d\n", ++ atomic_read(&sbinfo->si_nowait.nw_len), sbinfo->si_generation, ++ kref_read(&sbinfo->si_kobj.kref)); ++ for (bindex = 0; bindex <= sbinfo->si_bbot; bindex++) ++ do_pri_br(bindex, sbinfo->si_branch[0 + bindex]); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line) ++{ ++ struct inode *h_inode, *inode = d_inode(dentry); ++ struct dentry *h_dentry; ++ aufs_bindex_t bindex, bbot, bi; ++ ++ if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) ++ return; ++ ++ bbot = au_dbbot(dentry); ++ bi = au_ibbot(inode); ++ if (bi < bbot) ++ bbot = bi; ++ bindex = au_dbtop(dentry); ++ bi = au_ibtop(inode); ++ if (bi > bindex) ++ bindex = bi; ++ ++ for (; bindex <= bbot; bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (!h_dentry) ++ continue; ++ h_inode = au_h_iptr(inode, bindex); ++ if (unlikely(h_inode != d_inode(h_dentry))) { ++ au_debug_on(); ++ AuDbg("b%d, %s:%d\n", bindex, func, line); ++ AuDbgDentry(dentry); ++ AuDbgInode(inode); ++ au_debug_off(); ++ if (au_test_fuse(h_inode->i_sb)) ++ WARN_ON_ONCE(1); ++ else ++ BUG(); ++ } ++ } ++} ++ ++void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen) ++{ ++ int err, i, j; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ struct dentry **dentries; ++ ++ err = au_dpages_init(&dpages, GFP_NOFS); ++ AuDebugOn(err); ++ err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/1); ++ AuDebugOn(err); ++ for (i = dpages.ndpage - 1; !err && i >= 0; i--) { ++ dpage = dpages.dpages + i; ++ dentries = dpage->dentries; ++ for (j = dpage->ndentry - 1; !err && j >= 0; j--) ++ AuDebugOn(au_digen_test(dentries[j], sigen)); ++ } ++ au_dpages_free(&dpages); ++} ++ ++void au_dbg_verify_kthread(void) ++{ ++ if (au_wkq_test()) { ++ au_dbg_blocked(); ++ /* ++ * It may be recursive, but udba=notify between two aufs mounts, ++ * where a single ro branch is shared, is not a problem. ++ */ ++ /* WARN_ON(1); */ ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int __init au_debug_init(void) ++{ ++ aufs_bindex_t bindex; ++ struct au_vdir_destr destr; ++ ++ bindex = -1; ++ AuDebugOn(bindex >= 0); ++ ++ destr.len = -1; ++ AuDebugOn(destr.len < NAME_MAX); ++ ++#ifdef CONFIG_4KSTACKS ++ pr_warn("CONFIG_4KSTACKS is defined.\n"); ++#endif ++ ++ return 0; ++} +diff -Naur null/fs/aufs/debug.h linux-5.15.36/fs/aufs/debug.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/debug.h 2022-05-10 16:51:39.868744219 +0300 +@@ -0,0 +1,226 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * debug print functions ++ */ ++ ++#ifndef __AUFS_DEBUG_H__ ++#define __AUFS_DEBUG_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++#include ++ ++#ifdef CONFIG_AUFS_DEBUG ++#define AuDebugOn(a) BUG_ON(a) ++ ++/* module parameter */ ++extern atomic_t aufs_debug; ++static inline void au_debug_on(void) ++{ ++ atomic_inc(&aufs_debug); ++} ++static inline void au_debug_off(void) ++{ ++ atomic_dec_if_positive(&aufs_debug); ++} ++ ++static inline int au_debug_test(void) ++{ ++ return atomic_read(&aufs_debug) > 0; ++} ++#else ++#define AuDebugOn(a) do {} while (0) ++AuStubVoid(au_debug_on, void) ++AuStubVoid(au_debug_off, void) ++AuStubInt0(au_debug_test, void) ++#endif /* CONFIG_AUFS_DEBUG */ ++ ++#define param_check_atomic_t(name, p) __param_check(name, p, atomic_t) ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* debug print */ ++ ++#define AuDbg(fmt, ...) do { \ ++ if (au_debug_test()) \ ++ pr_debug("DEBUG: " fmt, ##__VA_ARGS__); \ ++} while (0) ++#define AuLabel(l) AuDbg(#l "\n") ++#define AuIOErr(fmt, ...) pr_err("I/O Error, " fmt, ##__VA_ARGS__) ++#define AuWarn1(fmt, ...) do { \ ++ static unsigned char _c; \ ++ if (!_c++) \ ++ pr_warn(fmt, ##__VA_ARGS__); \ ++} while (0) ++ ++#define AuErr1(fmt, ...) do { \ ++ static unsigned char _c; \ ++ if (!_c++) \ ++ pr_err(fmt, ##__VA_ARGS__); \ ++} while (0) ++ ++#define AuIOErr1(fmt, ...) do { \ ++ static unsigned char _c; \ ++ if (!_c++) \ ++ AuIOErr(fmt, ##__VA_ARGS__); \ ++} while (0) ++ ++#define AuUnsupportMsg "This operation is not supported." \ ++ " Please report this application to aufs-users ML." ++#define AuUnsupport(fmt, ...) do { \ ++ pr_err(AuUnsupportMsg "\n" fmt, ##__VA_ARGS__); \ ++ dump_stack(); \ ++} while (0) ++ ++#define AuTraceErr(e) do { \ ++ if (unlikely((e) < 0)) \ ++ AuDbg("err %d\n", (int)(e)); \ ++} while (0) ++ ++#define AuTraceErrPtr(p) do { \ ++ if (IS_ERR(p)) \ ++ AuDbg("err %ld\n", PTR_ERR(p)); \ ++} while (0) ++ ++/* dirty macros for debug print, use with "%.*s" and caution */ ++#define AuLNPair(qstr) (qstr)->len, (qstr)->name ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct dentry; ++#ifdef CONFIG_AUFS_DEBUG ++extern struct mutex au_dbg_mtx; ++extern char *au_plevel; ++struct au_nhash; ++void au_dpri_whlist(struct au_nhash *whlist); ++struct au_vdir; ++void au_dpri_vdir(struct au_vdir *vdir); ++struct inode; ++void au_dpri_inode(struct inode *inode); ++void au_dpri_dalias(struct inode *inode); ++void au_dpri_dentry(struct dentry *dentry); ++struct file; ++void au_dpri_file(struct file *filp); ++struct super_block; ++void au_dpri_sb(struct super_block *sb); ++ ++#define au_dbg_verify_dinode(d) __au_dbg_verify_dinode(d, __func__, __LINE__) ++void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line); ++void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen); ++void au_dbg_verify_kthread(void); ++ ++int __init au_debug_init(void); ++ ++#define AuDbgWhlist(w) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#w "\n"); \ ++ au_dpri_whlist(w); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgVdir(v) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#v "\n"); \ ++ au_dpri_vdir(v); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgInode(i) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#i "\n"); \ ++ au_dpri_inode(i); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgDAlias(i) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#i "\n"); \ ++ au_dpri_dalias(i); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgDentry(d) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#d "\n"); \ ++ au_dpri_dentry(d); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgFile(f) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#f "\n"); \ ++ au_dpri_file(f); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgSb(sb) do { \ ++ mutex_lock(&au_dbg_mtx); \ ++ AuDbg(#sb "\n"); \ ++ au_dpri_sb(sb); \ ++ mutex_unlock(&au_dbg_mtx); \ ++} while (0) ++ ++#define AuDbgSym(addr) do { \ ++ char sym[KSYM_SYMBOL_LEN]; \ ++ sprint_symbol(sym, (unsigned long)addr); \ ++ AuDbg("%s\n", sym); \ ++} while (0) ++#else ++AuStubVoid(au_dbg_verify_dinode, struct dentry *dentry) ++AuStubVoid(au_dbg_verify_gen, struct dentry *parent, unsigned int sigen) ++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) ++#endif /* CONFIG_AUFS_DEBUG */ ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_MAGIC_SYSRQ ++int __init au_sysrq_init(void); ++void au_sysrq_fin(void); ++ ++#ifdef CONFIG_HW_CONSOLE ++#define au_dbg_blocked() do { \ ++ WARN_ON(1); \ ++ handle_sysrq('w'); \ ++} while (0) ++#else ++AuStubVoid(au_dbg_blocked, void) ++#endif ++ ++#else ++AuStubInt0(__init au_sysrq_init, void) ++AuStubVoid(au_sysrq_fin, void) ++AuStubVoid(au_dbg_blocked, void) ++#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_DEBUG_H__ */ +diff -Naur null/fs/aufs/dentry.c linux-5.15.36/fs/aufs/dentry.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dentry.c 2022-05-10 16:51:39.868744219 +0300 +@@ -0,0 +1,1168 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * lookup and dentry operations ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* ++ * returns positive/negative dentry, NULL or an error. ++ * NULL means whiteout-ed or not-found. ++ */ ++static struct dentry* ++au_do_lookup(struct dentry *h_parent, struct dentry *dentry, ++ aufs_bindex_t bindex, struct au_do_lookup_args *args) ++{ ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct au_branch *br; ++ struct user_namespace *h_userns; ++ struct path h_path; ++ int wh_found, opq; ++ unsigned char wh_able; ++ const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG); ++ const unsigned char ignore_perm = !!au_ftest_lkup(args->flags, ++ IGNORE_PERM); ++ ++ wh_found = 0; ++ br = au_sbr(dentry->d_sb, bindex); ++ h_path.dentry = h_parent; ++ h_path.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); ++ wh_able = !!au_br_whable(br->br_perm); ++ if (wh_able) ++ wh_found = au_wh_test(h_userns, &h_path, &args->whname, ++ ignore_perm); ++ h_dentry = ERR_PTR(wh_found); ++ if (!wh_found) ++ goto real_lookup; ++ if (unlikely(wh_found < 0)) ++ goto out; ++ ++ /* We found a whiteout */ ++ /* au_set_dbbot(dentry, bindex); */ ++ au_set_dbwh(dentry, bindex); ++ if (!allow_neg) ++ return NULL; /* success */ ++ ++real_lookup: ++ if (!ignore_perm) ++ h_dentry = vfsub_lkup_one(args->name, &h_path); ++ else ++ h_dentry = au_sio_lkup_one(h_userns, args->name, &h_path); ++ if (IS_ERR(h_dentry)) { ++ if (PTR_ERR(h_dentry) == -ENAMETOOLONG ++ && !allow_neg) ++ h_dentry = NULL; ++ goto out; ++ } ++ ++ h_inode = d_inode(h_dentry); ++ if (d_is_negative(h_dentry)) { ++ if (!allow_neg) ++ goto out_neg; ++ } else if (wh_found ++ || (args->type && args->type != (h_inode->i_mode & S_IFMT))) ++ goto out_neg; ++ else if (au_ftest_lkup(args->flags, DIRREN) ++ /* && h_inode */ ++ && !au_dr_lkup_h_ino(args, bindex, h_inode->i_ino)) { ++ AuDbg("b%d %pd ignored hi%llu\n", bindex, h_dentry, ++ (unsigned long long)h_inode->i_ino); ++ goto out_neg; ++ } ++ ++ if (au_dbbot(dentry) <= bindex) ++ au_set_dbbot(dentry, bindex); ++ if (au_dbtop(dentry) < 0 || bindex < au_dbtop(dentry)) ++ au_set_dbtop(dentry, bindex); ++ au_set_h_dptr(dentry, bindex, h_dentry); ++ ++ if (!d_is_dir(h_dentry) ++ || !wh_able ++ || (d_really_is_positive(dentry) && !d_is_dir(dentry))) ++ goto out; /* success */ ++ ++ h_path.dentry = h_dentry; ++ inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); ++ opq = au_diropq_test(h_userns, &h_path); ++ inode_unlock_shared(h_inode); ++ if (opq > 0) ++ au_set_dbdiropq(dentry, bindex); ++ else if (unlikely(opq < 0)) { ++ au_set_h_dptr(dentry, bindex, NULL); ++ h_dentry = ERR_PTR(opq); ++ } ++ goto out; ++ ++out_neg: ++ dput(h_dentry); ++ h_dentry = NULL; ++out: ++ return h_dentry; ++} ++ ++static int au_test_shwh(struct super_block *sb, const struct qstr *name) ++{ ++ if (unlikely(!au_opt_test(au_mntflags(sb), SHWH) ++ && !strncmp(name->name, AUFS_WH_PFX, AUFS_WH_PFX_LEN))) ++ return -EPERM; ++ return 0; ++} ++ ++/* ++ * returns the number of lower positive dentries, ++ * otherwise an error. ++ * can be called at unlinking with @type is zero. ++ */ ++int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t btop, ++ unsigned int flags) ++{ ++ int npositive, err; ++ aufs_bindex_t bindex, btail, bdiropq; ++ unsigned char isdir, dirperm1, dirren; ++ struct au_do_lookup_args args = { ++ .flags = flags, ++ .name = &dentry->d_name ++ }; ++ struct dentry *parent; ++ struct super_block *sb; ++ ++ sb = dentry->d_sb; ++ err = au_test_shwh(sb, args.name); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_wh_name_alloc(&args.whname, args.name); ++ if (unlikely(err)) ++ goto out; ++ ++ isdir = !!d_is_dir(dentry); ++ dirperm1 = !!au_opt_test(au_mntflags(sb), DIRPERM1); ++ dirren = !!au_opt_test(au_mntflags(sb), DIRREN); ++ if (dirren) ++ au_fset_lkup(args.flags, DIRREN); ++ ++ npositive = 0; ++ parent = dget_parent(dentry); ++ btail = au_dbtaildir(parent); ++ for (bindex = btop; bindex <= btail; bindex++) { ++ struct dentry *h_parent, *h_dentry; ++ struct inode *h_inode, *h_dir; ++ struct au_branch *br; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry) { ++ if (d_is_positive(h_dentry)) ++ npositive++; ++ break; ++ } ++ h_parent = au_h_dptr(parent, bindex); ++ if (!h_parent || !d_is_dir(h_parent)) ++ continue; ++ ++ if (dirren) { ++ /* if the inum matches, then use the prepared name */ ++ err = au_dr_lkup_name(&args, bindex); ++ if (unlikely(err)) ++ goto out_parent; ++ } ++ ++ h_dir = d_inode(h_parent); ++ inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); ++ h_dentry = au_do_lookup(h_parent, dentry, bindex, &args); ++ inode_unlock_shared(h_dir); ++ err = PTR_ERR(h_dentry); ++ if (IS_ERR(h_dentry)) ++ goto out_parent; ++ if (h_dentry) ++ au_fclr_lkup(args.flags, ALLOW_NEG); ++ if (dirperm1) ++ au_fset_lkup(args.flags, IGNORE_PERM); ++ ++ if (au_dbwh(dentry) == bindex) ++ break; ++ if (!h_dentry) ++ continue; ++ if (d_is_negative(h_dentry)) ++ continue; ++ h_inode = d_inode(h_dentry); ++ npositive++; ++ if (!args.type) ++ args.type = h_inode->i_mode & S_IFMT; ++ if (args.type != S_IFDIR) ++ break; ++ else if (isdir) { ++ /* the type of lower may be different */ ++ bdiropq = au_dbdiropq(dentry); ++ if (bdiropq >= 0 && bdiropq <= bindex) ++ break; ++ } ++ br = au_sbr(sb, bindex); ++ if (dirren ++ && au_dr_hino_test_add(&br->br_dirren, h_inode->i_ino, ++ /*add_ent*/NULL)) { ++ /* prepare next name to lookup */ ++ err = au_dr_lkup(&args, dentry, bindex); ++ if (unlikely(err)) ++ goto out_parent; ++ } ++ } ++ ++ if (npositive) { ++ AuLabel(positive); ++ au_update_dbtop(dentry); ++ } ++ err = npositive; ++ if (unlikely(!au_opt_test(au_mntflags(sb), UDBA_NONE) ++ && au_dbtop(dentry) < 0)) { ++ err = -EIO; ++ AuIOErr("both of real entry and whiteout found, %pd, err %d\n", ++ dentry, err); ++ } ++ ++out_parent: ++ dput(parent); ++ au_kfree_try_rcu(args.whname.name); ++ if (dirren) ++ au_dr_lkup_fin(&args); ++out: ++ return err; ++} ++ ++struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, ++ struct path *ppath) ++{ ++ struct dentry *dentry; ++ int wkq_err; ++ ++ if (!au_test_h_perm_sio(userns, d_inode(ppath->dentry), MAY_EXEC)) ++ dentry = vfsub_lkup_one(name, ppath); ++ else { ++ struct vfsub_lkup_one_args args = { ++ .errp = &dentry, ++ .name = name, ++ .ppath = ppath ++ }; ++ ++ wkq_err = au_wkq_wait(vfsub_call_lkup_one, &args); ++ if (unlikely(wkq_err)) ++ dentry = ERR_PTR(wkq_err); ++ } ++ ++ return dentry; ++} ++ ++/* ++ * lookup @dentry on @bindex which should be negative. ++ */ ++int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh) ++{ ++ int err; ++ struct dentry *parent, *h_dentry; ++ struct au_branch *br; ++ struct user_namespace *h_userns; ++ struct path h_ppath; ++ ++ parent = dget_parent(dentry); ++ br = au_sbr(dentry->d_sb, bindex); ++ h_ppath.dentry = au_h_dptr(parent, bindex); ++ h_ppath.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); ++ if (wh) ++ h_dentry = au_whtmp_lkup(h_ppath.dentry, br, &dentry->d_name); ++ else ++ h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath); ++ err = PTR_ERR(h_dentry); ++ if (IS_ERR(h_dentry)) ++ goto out; ++ if (unlikely(d_is_positive(h_dentry))) { ++ err = -EIO; ++ AuIOErr("%pd should be negative on b%d.\n", h_dentry, bindex); ++ dput(h_dentry); ++ goto out; ++ } ++ ++ err = 0; ++ if (bindex < au_dbtop(dentry)) ++ au_set_dbtop(dentry, bindex); ++ if (au_dbbot(dentry) < bindex) ++ au_set_dbbot(dentry, bindex); ++ au_set_h_dptr(dentry, bindex, h_dentry); ++ ++out: ++ dput(parent); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* subset of struct inode */ ++struct au_iattr { ++ unsigned long i_ino; ++ /* unsigned int i_nlink; */ ++ kuid_t i_uid; ++ kgid_t i_gid; ++ u64 i_version; ++/* ++ loff_t i_size; ++ blkcnt_t i_blocks; ++*/ ++ umode_t i_mode; ++}; ++ ++static void au_iattr_save(struct au_iattr *ia, struct inode *h_inode) ++{ ++ ia->i_ino = h_inode->i_ino; ++ /* ia->i_nlink = h_inode->i_nlink; */ ++ ia->i_uid = h_inode->i_uid; ++ ia->i_gid = h_inode->i_gid; ++ ia->i_version = inode_query_iversion(h_inode); ++/* ++ ia->i_size = h_inode->i_size; ++ ia->i_blocks = h_inode->i_blocks; ++*/ ++ ia->i_mode = (h_inode->i_mode & S_IFMT); ++} ++ ++static int au_iattr_test(struct au_iattr *ia, struct inode *h_inode) ++{ ++ return ia->i_ino != h_inode->i_ino ++ /* || ia->i_nlink != h_inode->i_nlink */ ++ || !uid_eq(ia->i_uid, h_inode->i_uid) ++ || !gid_eq(ia->i_gid, h_inode->i_gid) ++ || !inode_eq_iversion(h_inode, ia->i_version) ++/* ++ || ia->i_size != h_inode->i_size ++ || ia->i_blocks != h_inode->i_blocks ++*/ ++ || ia->i_mode != (h_inode->i_mode & S_IFMT); ++} ++ ++static int au_h_verify_dentry(struct dentry *h_dentry, struct dentry *h_parent, ++ struct au_branch *br) ++{ ++ int err; ++ struct au_iattr ia; ++ struct inode *h_inode; ++ struct dentry *h_d; ++ struct super_block *h_sb; ++ struct path h_ppath; ++ ++ err = 0; ++ memset(&ia, -1, sizeof(ia)); ++ h_sb = h_dentry->d_sb; ++ h_inode = NULL; ++ if (d_is_positive(h_dentry)) { ++ h_inode = d_inode(h_dentry); ++ au_iattr_save(&ia, h_inode); ++ } else if (au_test_nfs(h_sb) || au_test_fuse(h_sb)) ++ /* nfs d_revalidate may return 0 for negative dentry */ ++ /* fuse d_revalidate always return 0 for negative dentry */ ++ goto out; ++ ++ /* main purpose is namei.c:cached_lookup() and d_revalidate */ ++ h_ppath.dentry = h_parent; ++ h_ppath.mnt = au_br_mnt(br); ++ h_d = vfsub_lkup_one(&h_dentry->d_name, &h_ppath); ++ err = PTR_ERR(h_d); ++ if (IS_ERR(h_d)) ++ goto out; ++ ++ err = 0; ++ if (unlikely(h_d != h_dentry ++ || d_inode(h_d) != h_inode ++ || (h_inode && au_iattr_test(&ia, h_inode)))) ++ err = au_busy_or_stale(); ++ dput(h_d); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, ++ struct dentry *h_parent, struct au_branch *br) ++{ ++ int err; ++ ++ err = 0; ++ if (udba == AuOpt_UDBA_REVAL ++ && !au_test_fs_remote(h_dentry->d_sb)) { ++ IMustLock(h_dir); ++ err = (d_inode(h_dentry->d_parent) != h_dir); ++ } else if (udba != AuOpt_UDBA_NONE) ++ err = au_h_verify_dentry(h_dentry, h_parent, br); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_do_refresh_hdentry(struct dentry *dentry, struct dentry *parent) ++{ ++ int err; ++ aufs_bindex_t new_bindex, bindex, bbot, bwh, bdiropq; ++ struct au_hdentry tmp, *p, *q; ++ struct au_dinfo *dinfo; ++ struct super_block *sb; ++ ++ DiMustWriteLock(dentry); ++ ++ sb = dentry->d_sb; ++ dinfo = au_di(dentry); ++ bbot = dinfo->di_bbot; ++ bwh = dinfo->di_bwh; ++ bdiropq = dinfo->di_bdiropq; ++ bindex = dinfo->di_btop; ++ p = au_hdentry(dinfo, bindex); ++ for (; bindex <= bbot; bindex++, p++) { ++ if (!p->hd_dentry) ++ continue; ++ ++ new_bindex = au_br_index(sb, p->hd_id); ++ if (new_bindex == bindex) ++ continue; ++ ++ if (dinfo->di_bwh == bindex) ++ bwh = new_bindex; ++ if (dinfo->di_bdiropq == bindex) ++ bdiropq = new_bindex; ++ if (new_bindex < 0) { ++ au_hdput(p); ++ p->hd_dentry = NULL; ++ continue; ++ } ++ ++ /* swap two lower dentries, and loop again */ ++ q = au_hdentry(dinfo, new_bindex); ++ tmp = *q; ++ *q = *p; ++ *p = tmp; ++ if (tmp.hd_dentry) { ++ bindex--; ++ p--; ++ } ++ } ++ ++ dinfo->di_bwh = -1; ++ if (bwh >= 0 && bwh <= au_sbbot(sb) && au_sbr_whable(sb, bwh)) ++ dinfo->di_bwh = bwh; ++ ++ dinfo->di_bdiropq = -1; ++ if (bdiropq >= 0 ++ && bdiropq <= au_sbbot(sb) ++ && au_sbr_whable(sb, bdiropq)) ++ dinfo->di_bdiropq = bdiropq; ++ ++ err = -EIO; ++ dinfo->di_btop = -1; ++ dinfo->di_bbot = -1; ++ bbot = au_dbbot(parent); ++ bindex = 0; ++ p = au_hdentry(dinfo, bindex); ++ for (; bindex <= bbot; bindex++, p++) ++ if (p->hd_dentry) { ++ dinfo->di_btop = bindex; ++ break; ++ } ++ ++ if (dinfo->di_btop >= 0) { ++ bindex = bbot; ++ p = au_hdentry(dinfo, bindex); ++ for (; bindex >= 0; bindex--, p--) ++ if (p->hd_dentry) { ++ dinfo->di_bbot = bindex; ++ err = 0; ++ break; ++ } ++ } ++ ++ return err; ++} ++ ++static void au_do_hide(struct dentry *dentry) ++{ ++ struct inode *inode; ++ ++ if (d_really_is_positive(dentry)) { ++ inode = d_inode(dentry); ++ if (!d_is_dir(dentry)) { ++ if (inode->i_nlink && !d_unhashed(dentry)) ++ drop_nlink(inode); ++ } else { ++ clear_nlink(inode); ++ /* stop next lookup */ ++ inode->i_flags |= S_DEAD; ++ } ++ smp_mb(); /* necessary? */ ++ } ++ d_drop(dentry); ++} ++ ++static int au_hide_children(struct dentry *parent) ++{ ++ int err, i, j, ndentry; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ struct dentry *dentry; ++ ++ err = au_dpages_init(&dpages, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ err = au_dcsub_pages(&dpages, parent, NULL, NULL); ++ if (unlikely(err)) ++ goto out_dpages; ++ ++ /* in reverse order */ ++ for (i = dpages.ndpage - 1; i >= 0; i--) { ++ dpage = dpages.dpages + i; ++ ndentry = dpage->ndentry; ++ for (j = ndentry - 1; j >= 0; j--) { ++ dentry = dpage->dentries[j]; ++ if (dentry != parent) ++ au_do_hide(dentry); ++ } ++ } ++ ++out_dpages: ++ au_dpages_free(&dpages); ++out: ++ return err; ++} ++ ++static void au_hide(struct dentry *dentry) ++{ ++ int err; ++ ++ AuDbgDentry(dentry); ++ if (d_is_dir(dentry)) { ++ /* shrink_dcache_parent(dentry); */ ++ err = au_hide_children(dentry); ++ if (unlikely(err)) ++ AuIOErr("%pd, failed hiding children, ignored %d\n", ++ dentry, err); ++ } ++ au_do_hide(dentry); ++} ++ ++/* ++ * By adding a dirty branch, a cached dentry may be affected in various ways. ++ * ++ * a dirty branch is added ++ * - on the top of layers ++ * - in the middle of layers ++ * - to the bottom of layers ++ * ++ * on the added branch there exists ++ * - a whiteout ++ * - a diropq ++ * - a same named entry ++ * + exist ++ * * negative --> positive ++ * * positive --> positive ++ * - type is unchanged ++ * - type is changed ++ * + doesn't exist ++ * * negative --> negative ++ * * positive --> negative (rejected by au_br_del() for non-dir case) ++ * - none ++ */ ++static int au_refresh_by_dinfo(struct dentry *dentry, struct au_dinfo *dinfo, ++ struct au_dinfo *tmp) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct { ++ struct dentry *dentry; ++ struct inode *inode; ++ mode_t mode; ++ } orig_h, tmp_h = { ++ .dentry = NULL ++ }; ++ struct au_hdentry *hd; ++ struct inode *inode, *h_inode; ++ struct dentry *h_dentry; ++ ++ err = 0; ++ AuDebugOn(dinfo->di_btop < 0); ++ orig_h.mode = 0; ++ orig_h.dentry = au_hdentry(dinfo, dinfo->di_btop)->hd_dentry; ++ orig_h.inode = NULL; ++ if (d_is_positive(orig_h.dentry)) { ++ orig_h.inode = d_inode(orig_h.dentry); ++ orig_h.mode = orig_h.inode->i_mode & S_IFMT; ++ } ++ if (tmp->di_btop >= 0) { ++ tmp_h.dentry = au_hdentry(tmp, tmp->di_btop)->hd_dentry; ++ if (d_is_positive(tmp_h.dentry)) { ++ tmp_h.inode = d_inode(tmp_h.dentry); ++ tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; ++ } ++ } ++ ++ inode = NULL; ++ if (d_really_is_positive(dentry)) ++ inode = d_inode(dentry); ++ if (!orig_h.inode) { ++ AuDbg("negative originally\n"); ++ if (inode) { ++ au_hide(dentry); ++ goto out; ++ } ++ AuDebugOn(inode); ++ AuDebugOn(dinfo->di_btop != dinfo->di_bbot); ++ AuDebugOn(dinfo->di_bdiropq != -1); ++ ++ if (!tmp_h.inode) { ++ AuDbg("negative --> negative\n"); ++ /* should have only one negative lower */ ++ if (tmp->di_btop >= 0 ++ && tmp->di_btop < dinfo->di_btop) { ++ AuDebugOn(tmp->di_btop != tmp->di_bbot); ++ AuDebugOn(dinfo->di_btop != dinfo->di_bbot); ++ au_set_h_dptr(dentry, dinfo->di_btop, NULL); ++ au_di_cp(dinfo, tmp); ++ hd = au_hdentry(tmp, tmp->di_btop); ++ au_set_h_dptr(dentry, tmp->di_btop, ++ dget(hd->hd_dentry)); ++ } ++ au_dbg_verify_dinode(dentry); ++ } else { ++ AuDbg("negative --> positive\n"); ++ /* ++ * similar to the behaviour of creating with bypassing ++ * aufs. ++ * unhash it in order to force an error in the ++ * succeeding create operation. ++ * we should not set S_DEAD here. ++ */ ++ d_drop(dentry); ++ /* au_di_swap(tmp, dinfo); */ ++ au_dbg_verify_dinode(dentry); ++ } ++ } else { ++ AuDbg("positive originally\n"); ++ /* inode may be NULL */ ++ AuDebugOn(inode && (inode->i_mode & S_IFMT) != orig_h.mode); ++ if (!tmp_h.inode) { ++ AuDbg("positive --> negative\n"); ++ /* or bypassing aufs */ ++ au_hide(dentry); ++ if (tmp->di_bwh >= 0 && tmp->di_bwh <= dinfo->di_btop) ++ dinfo->di_bwh = tmp->di_bwh; ++ if (inode) ++ err = au_refresh_hinode_self(inode); ++ au_dbg_verify_dinode(dentry); ++ } else if (orig_h.mode == tmp_h.mode) { ++ AuDbg("positive --> positive, same type\n"); ++ if (!S_ISDIR(orig_h.mode) ++ && dinfo->di_btop > tmp->di_btop) { ++ /* ++ * similar to the behaviour of removing and ++ * creating. ++ */ ++ au_hide(dentry); ++ if (inode) ++ err = au_refresh_hinode_self(inode); ++ au_dbg_verify_dinode(dentry); ++ } else { ++ /* fill empty slots */ ++ if (dinfo->di_btop > tmp->di_btop) ++ dinfo->di_btop = tmp->di_btop; ++ if (dinfo->di_bbot < tmp->di_bbot) ++ dinfo->di_bbot = tmp->di_bbot; ++ dinfo->di_bwh = tmp->di_bwh; ++ dinfo->di_bdiropq = tmp->di_bdiropq; ++ bbot = dinfo->di_bbot; ++ bindex = tmp->di_btop; ++ hd = au_hdentry(tmp, bindex); ++ for (; bindex <= bbot; bindex++, hd++) { ++ if (au_h_dptr(dentry, bindex)) ++ continue; ++ h_dentry = hd->hd_dentry; ++ if (!h_dentry) ++ continue; ++ AuDebugOn(d_is_negative(h_dentry)); ++ h_inode = d_inode(h_dentry); ++ AuDebugOn(orig_h.mode ++ != (h_inode->i_mode ++ & S_IFMT)); ++ au_set_h_dptr(dentry, bindex, ++ dget(h_dentry)); ++ } ++ if (inode) ++ err = au_refresh_hinode(inode, dentry); ++ au_dbg_verify_dinode(dentry); ++ } ++ } else { ++ AuDbg("positive --> positive, different type\n"); ++ /* similar to the behaviour of removing and creating */ ++ au_hide(dentry); ++ if (inode) ++ err = au_refresh_hinode_self(inode); ++ au_dbg_verify_dinode(dentry); ++ } ++ } ++ ++out: ++ return err; ++} ++ ++void au_refresh_dop(struct dentry *dentry, int force_reval) ++{ ++ const struct dentry_operations *dop ++ = force_reval ? &aufs_dop : dentry->d_sb->s_d_op; ++ static const unsigned int mask ++ = DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE; ++ ++ BUILD_BUG_ON(sizeof(mask) != sizeof(dentry->d_flags)); ++ ++ if (dentry->d_op == dop) ++ return; ++ ++ AuDbg("%pd\n", dentry); ++ spin_lock(&dentry->d_lock); ++ if (dop == &aufs_dop) ++ dentry->d_flags |= mask; ++ else ++ dentry->d_flags &= ~mask; ++ dentry->d_op = dop; ++ spin_unlock(&dentry->d_lock); ++} ++ ++int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) ++{ ++ int err, ebrange, nbr; ++ unsigned int sigen; ++ struct au_dinfo *dinfo, *tmp; ++ struct super_block *sb; ++ struct inode *inode; ++ ++ DiMustWriteLock(dentry); ++ AuDebugOn(IS_ROOT(dentry)); ++ AuDebugOn(d_really_is_negative(parent)); ++ ++ sb = dentry->d_sb; ++ sigen = au_sigen(sb); ++ err = au_digen_test(parent, sigen); ++ if (unlikely(err)) ++ goto out; ++ ++ nbr = au_sbbot(sb) + 1; ++ dinfo = au_di(dentry); ++ err = au_di_realloc(dinfo, nbr, /*may_shrink*/0); ++ if (unlikely(err)) ++ goto out; ++ ebrange = au_dbrange_test(dentry); ++ if (!ebrange) ++ ebrange = au_do_refresh_hdentry(dentry, parent); ++ ++ if (d_unhashed(dentry) || ebrange /* || dinfo->di_tmpfile */) { ++ AuDebugOn(au_dbtop(dentry) < 0 && au_dbbot(dentry) >= 0); ++ if (d_really_is_positive(dentry)) { ++ inode = d_inode(dentry); ++ err = au_refresh_hinode_self(inode); ++ } ++ au_dbg_verify_dinode(dentry); ++ if (!err) ++ goto out_dgen; /* success */ ++ goto out; ++ } ++ ++ /* temporary dinfo */ ++ AuDbgDentry(dentry); ++ err = -ENOMEM; ++ tmp = au_di_alloc(sb, AuLsc_DI_TMP); ++ if (unlikely(!tmp)) ++ goto out; ++ au_di_swap(tmp, dinfo); ++ /* returns the number of positive dentries */ ++ /* ++ * if current working dir is removed, it returns an error. ++ * but the dentry is legal. ++ */ ++ err = au_lkup_dentry(dentry, /*btop*/0, AuLkup_ALLOW_NEG); ++ AuDbgDentry(dentry); ++ au_di_swap(tmp, dinfo); ++ if (err == -ENOENT) ++ err = 0; ++ if (err >= 0) { ++ /* compare/refresh by dinfo */ ++ AuDbgDentry(dentry); ++ err = au_refresh_by_dinfo(dentry, dinfo, tmp); ++ au_dbg_verify_dinode(dentry); ++ AuTraceErr(err); ++ } ++ au_di_realloc(dinfo, nbr, /*may_shrink*/1); /* harmless if err */ ++ au_rw_write_unlock(&tmp->di_rwsem); ++ au_di_free(tmp); ++ if (unlikely(err)) ++ goto out; ++ ++out_dgen: ++ au_update_digen(dentry); ++out: ++ if (unlikely(err && !(dentry->d_flags & DCACHE_NFSFS_RENAMED))) { ++ AuIOErr("failed refreshing %pd, %d\n", dentry, err); ++ AuDbgDentry(dentry); ++ } ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_do_h_d_reval(struct dentry *h_dentry, unsigned int flags, ++ struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ int err, valid; ++ ++ err = 0; ++ if (!(h_dentry->d_flags & DCACHE_OP_REVALIDATE)) ++ goto out; ++ ++ AuDbg("b%d\n", bindex); ++ /* ++ * gave up supporting LOOKUP_CREATE/OPEN for lower fs, ++ * due to whiteout and branch permission. ++ */ ++ flags &= ~(/*LOOKUP_PARENT |*/ LOOKUP_OPEN | LOOKUP_CREATE ++ | LOOKUP_FOLLOW | LOOKUP_EXCL); ++ /* it may return tri-state */ ++ valid = h_dentry->d_op->d_revalidate(h_dentry, flags); ++ ++ if (unlikely(valid < 0)) ++ err = valid; ++ else if (!valid) ++ err = -EINVAL; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* todo: remove this */ ++static int h_d_revalidate(struct dentry *dentry, struct inode *inode, ++ unsigned int flags, int do_udba, int dirren) ++{ ++ int err; ++ umode_t mode, h_mode; ++ aufs_bindex_t bindex, btail, btop, ibs, ibe; ++ unsigned char plus, unhashed, is_root, h_plus, h_nfs, tmpfile; ++ struct inode *h_inode, *h_cached_inode; ++ struct dentry *h_dentry; ++ struct qstr *name, *h_name; ++ ++ err = 0; ++ plus = 0; ++ mode = 0; ++ ibs = -1; ++ ibe = -1; ++ unhashed = !!d_unhashed(dentry); ++ is_root = !!IS_ROOT(dentry); ++ name = &dentry->d_name; ++ tmpfile = au_di(dentry)->di_tmpfile; ++ ++ /* ++ * Theoretically, REVAL test should be unnecessary in case of ++ * {FS,I}NOTIFY. ++ * But {fs,i}notify doesn't fire some necessary events, ++ * IN_ATTRIB for atime/nlink/pageio ++ * Let's do REVAL test too. ++ */ ++ if (do_udba && inode) { ++ mode = (inode->i_mode & S_IFMT); ++ plus = (inode->i_nlink > 0); ++ ibs = au_ibtop(inode); ++ ibe = au_ibbot(inode); ++ } ++ ++ btop = au_dbtop(dentry); ++ 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) ++ continue; ++ ++ AuDbg("b%d, %pd\n", bindex, h_dentry); ++ h_nfs = !!au_test_nfs(h_dentry->d_sb); ++ spin_lock(&h_dentry->d_lock); ++ h_name = &h_dentry->d_name; ++ if (unlikely(do_udba ++ && !is_root ++ && ((!h_nfs ++ && (unhashed != !!d_unhashed(h_dentry) ++ || (!tmpfile && !dirren ++ && !au_qstreq(name, h_name)) ++ )) ++ || (h_nfs ++ && !(flags & LOOKUP_OPEN) ++ && (h_dentry->d_flags ++ & DCACHE_NFSFS_RENAMED))) ++ )) { ++ int h_unhashed; ++ ++ h_unhashed = d_unhashed(h_dentry); ++ spin_unlock(&h_dentry->d_lock); ++ AuDbg("unhash 0x%x 0x%x, %pd %pd\n", ++ unhashed, h_unhashed, dentry, h_dentry); ++ goto err; ++ } ++ spin_unlock(&h_dentry->d_lock); ++ ++ err = au_do_h_d_reval(h_dentry, flags, dentry, bindex); ++ if (unlikely(err)) ++ /* do not goto err, to keep the errno */ ++ break; ++ ++ /* todo: plink too? */ ++ if (!do_udba) ++ continue; ++ ++ /* UDBA tests */ ++ if (unlikely(!!inode != d_is_positive(h_dentry))) ++ goto err; ++ ++ h_inode = NULL; ++ if (d_is_positive(h_dentry)) ++ h_inode = d_inode(h_dentry); ++ h_plus = plus; ++ h_mode = mode; ++ h_cached_inode = h_inode; ++ if (h_inode) { ++ h_mode = (h_inode->i_mode & S_IFMT); ++ h_plus = (h_inode->i_nlink > 0); ++ } ++ if (inode && ibs <= bindex && bindex <= ibe) ++ h_cached_inode = au_h_iptr(inode, bindex); ++ ++ if (!h_nfs) { ++ if (unlikely(plus != h_plus && !tmpfile)) ++ goto err; ++ } else { ++ if (unlikely(!(h_dentry->d_flags & DCACHE_NFSFS_RENAMED) ++ && !is_root ++ && !IS_ROOT(h_dentry) ++ && unhashed != d_unhashed(h_dentry))) ++ goto err; ++ } ++ if (unlikely(mode != h_mode ++ || h_cached_inode != h_inode)) ++ goto err; ++ continue; ++ ++err: ++ err = -EINVAL; ++ break; ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++/* todo: consolidate with do_refresh() and au_reval_for_attr() */ ++static int simple_reval_dpath(struct dentry *dentry, unsigned int sigen) ++{ ++ int err; ++ struct dentry *parent; ++ ++ if (!au_digen_test(dentry, sigen)) ++ return 0; ++ ++ parent = dget_parent(dentry); ++ di_read_lock_parent(parent, AuLock_IR); ++ AuDebugOn(au_digen_test(parent, sigen)); ++ au_dbg_verify_gen(parent, sigen); ++ err = au_refresh_dentry(dentry, parent); ++ di_read_unlock(parent, AuLock_IR); ++ dput(parent); ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_reval_dpath(struct dentry *dentry, unsigned int sigen) ++{ ++ int err; ++ struct dentry *d, *parent; ++ ++ if (!au_ftest_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR)) ++ return simple_reval_dpath(dentry, sigen); ++ ++ /* slow loop, keep it simple and stupid */ ++ /* cf: au_cpup_dirs() */ ++ err = 0; ++ parent = NULL; ++ while (au_digen_test(dentry, sigen)) { ++ d = dentry; ++ while (1) { ++ dput(parent); ++ parent = dget_parent(d); ++ if (!au_digen_test(parent, sigen)) ++ break; ++ d = parent; ++ } ++ ++ if (d != dentry) ++ di_write_lock_child2(d); ++ ++ /* someone might update our dentry while we were sleeping */ ++ if (au_digen_test(d, sigen)) { ++ /* ++ * todo: consolidate with simple_reval_dpath(), ++ * do_refresh() and au_reval_for_attr(). ++ */ ++ di_read_lock_parent(parent, AuLock_IR); ++ err = au_refresh_dentry(d, parent); ++ di_read_unlock(parent, AuLock_IR); ++ } ++ ++ if (d != dentry) ++ di_write_unlock(d); ++ dput(parent); ++ if (unlikely(err)) ++ break; ++ } ++ ++ return err; ++} ++ ++/* ++ * if valid returns 1, otherwise 0. ++ */ ++static int aufs_d_revalidate(struct dentry *dentry, unsigned int flags) ++{ ++ int valid, err; ++ unsigned int sigen; ++ unsigned char do_udba, dirren; ++ struct super_block *sb; ++ struct inode *inode; ++ ++ /* todo: support rcu-walk? */ ++ if (flags & LOOKUP_RCU) ++ return -ECHILD; ++ ++ valid = 0; ++ if (unlikely(!au_di(dentry))) ++ goto out; ++ ++ valid = 1; ++ sb = dentry->d_sb; ++ /* ++ * todo: very ugly ++ * i_mutex of parent dir may be held, ++ * but we should not return 'invalid' due to busy. ++ */ ++ err = aufs_read_lock(dentry, AuLock_FLUSH | AuLock_DW | AuLock_NOPLM); ++ if (unlikely(err)) { ++ valid = err; ++ AuTraceErr(err); ++ goto out; ++ } ++ inode = NULL; ++ if (d_really_is_positive(dentry)) ++ inode = d_inode(dentry); ++ if (unlikely(inode && au_is_bad_inode(inode))) { ++ err = -EINVAL; ++ AuTraceErr(err); ++ goto out_dgrade; ++ } ++ if (unlikely(au_dbrange_test(dentry))) { ++ err = -EINVAL; ++ AuTraceErr(err); ++ goto out_dgrade; ++ } ++ ++ sigen = au_sigen(sb); ++ if (au_digen_test(dentry, sigen)) { ++ AuDebugOn(IS_ROOT(dentry)); ++ err = au_reval_dpath(dentry, sigen); ++ if (unlikely(err)) { ++ AuTraceErr(err); ++ goto out_dgrade; ++ } ++ } ++ di_downgrade_lock(dentry, AuLock_IR); ++ ++ err = -EINVAL; ++ if (!(flags & (LOOKUP_OPEN | LOOKUP_EMPTY)) ++ && inode ++ && !(inode->i_state && I_LINKABLE) ++ && (IS_DEADDIR(inode) || !inode->i_nlink)) { ++ AuTraceErr(err); ++ goto out_inval; ++ } ++ ++ do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); ++ if (do_udba && inode) { ++ aufs_bindex_t btop = au_ibtop(inode); ++ struct inode *h_inode; ++ ++ if (btop >= 0) { ++ h_inode = au_h_iptr(inode, btop); ++ if (h_inode && au_test_higen(inode, h_inode)) { ++ AuTraceErr(err); ++ goto out_inval; ++ } ++ } ++ } ++ ++ dirren = !!au_opt_test(au_mntflags(sb), DIRREN); ++ err = h_d_revalidate(dentry, inode, flags, do_udba, dirren); ++ if (unlikely(!err && do_udba && au_dbtop(dentry) < 0)) { ++ err = -EIO; ++ AuDbg("both of real entry and whiteout found, %p, err %d\n", ++ dentry, err); ++ } ++ goto out_inval; ++ ++out_dgrade: ++ di_downgrade_lock(dentry, AuLock_IR); ++out_inval: ++ aufs_read_unlock(dentry, AuLock_IR); ++ AuTraceErr(err); ++ valid = !err; ++out: ++ if (!valid) { ++ AuDbg("%pd invalid, %d\n", dentry, valid); ++ d_drop(dentry); ++ } ++ return valid; ++} ++ ++static void aufs_d_release(struct dentry *dentry) ++{ ++ if (au_di(dentry)) { ++ au_di_fin(dentry); ++ au_hn_di_reinit(dentry); ++ } ++} ++ ++const struct dentry_operations aufs_dop = { ++ .d_revalidate = aufs_d_revalidate, ++ .d_weak_revalidate = aufs_d_revalidate, ++ .d_release = aufs_d_release ++}; ++ ++/* aufs_dop without d_revalidate */ ++const struct dentry_operations aufs_dop_noreval = { ++ .d_release = aufs_d_release ++}; +diff -Naur null/fs/aufs/dentry.h linux-5.15.36/fs/aufs/dentry.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/dentry.h 2022-05-10 16:51:39.868744219 +0300 +@@ -0,0 +1,269 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * lookup and dentry operations ++ */ ++ ++#ifndef __AUFS_DENTRY_H__ ++#define __AUFS_DENTRY_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include "dirren.h" ++#include "rwsem.h" ++ ++struct au_hdentry { ++ struct dentry *hd_dentry; ++ aufs_bindex_t hd_id; ++}; ++ ++struct au_dinfo { ++ atomic_t di_generation; ++ ++ struct au_rwsem di_rwsem; ++ aufs_bindex_t di_btop, di_bbot, di_bwh, di_bdiropq; ++ unsigned char di_tmpfile; /* to allow the different name */ ++ struct au_hdentry *di_hdentry; ++ struct rcu_head rcu; ++} ____cacheline_aligned_in_smp; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* flags for au_lkup_dentry() */ ++#define AuLkup_ALLOW_NEG 1 ++#define AuLkup_IGNORE_PERM (1 << 1) ++#define AuLkup_DIRREN (1 << 2) ++#define au_ftest_lkup(flags, name) ((flags) & AuLkup_##name) ++#define au_fset_lkup(flags, name) \ ++ do { (flags) |= AuLkup_##name; } while (0) ++#define au_fclr_lkup(flags, name) \ ++ do { (flags) &= ~AuLkup_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_DIRREN ++#undef AuLkup_DIRREN ++#define AuLkup_DIRREN 0 ++#endif ++ ++struct au_do_lookup_args { ++ unsigned int flags; ++ mode_t type; ++ struct qstr whname, *name; ++ struct au_dr_lookup dirren; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* dentry.c */ ++extern const struct dentry_operations aufs_dop, aufs_dop_noreval; ++struct au_branch; ++struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, ++ struct path *ppath); ++int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, ++ struct dentry *h_parent, struct au_branch *br); ++ ++int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t btop, ++ unsigned int flags); ++int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh); ++int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); ++int au_reval_dpath(struct dentry *dentry, unsigned int sigen); ++void au_refresh_dop(struct dentry *dentry, int force_reval); ++ ++/* dinfo.c */ ++void au_di_init_once(void *_di); ++struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc); ++void au_di_free(struct au_dinfo *dinfo); ++void au_di_swap(struct au_dinfo *a, struct au_dinfo *b); ++void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src); ++int au_di_init(struct dentry *dentry); ++void au_di_fin(struct dentry *dentry); ++int au_di_realloc(struct au_dinfo *dinfo, int nbr, int may_shrink); ++ ++void di_read_lock(struct dentry *d, int flags, unsigned int lsc); ++void di_read_unlock(struct dentry *d, int flags); ++void di_downgrade_lock(struct dentry *d, int flags); ++void di_write_lock(struct dentry *d, unsigned int lsc); ++void di_write_unlock(struct dentry *d); ++void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir); ++void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir); ++void di_write_unlock2(struct dentry *d1, struct dentry *d2); ++ ++struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex); ++struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex); ++aufs_bindex_t au_dbtail(struct dentry *dentry); ++aufs_bindex_t au_dbtaildir(struct dentry *dentry); ++ ++void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_dentry); ++int au_digen_test(struct dentry *dentry, unsigned int sigen); ++int au_dbrange_test(struct dentry *dentry); ++void au_update_digen(struct dentry *dentry); ++void au_update_dbrange(struct dentry *dentry, int do_put_zero); ++void au_update_dbtop(struct dentry *dentry); ++void au_update_dbbot(struct dentry *dentry); ++int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct au_dinfo *au_di(struct dentry *dentry) ++{ ++ return dentry->d_fsdata; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* lock subclass for dinfo */ ++enum { ++ AuLsc_DI_CHILD, /* child first */ ++ AuLsc_DI_CHILD2, /* rename(2), link(2), and cpup at hnotify */ ++ AuLsc_DI_CHILD3, /* copyup dirs */ ++ AuLsc_DI_PARENT, ++ AuLsc_DI_PARENT2, ++ AuLsc_DI_PARENT3, ++ AuLsc_DI_TMP /* temp for replacing dinfo */ ++}; ++ ++/* ++ * di_read_lock_child, di_write_lock_child, ++ * di_read_lock_child2, di_write_lock_child2, ++ * di_read_lock_child3, di_write_lock_child3, ++ * di_read_lock_parent, di_write_lock_parent, ++ * di_read_lock_parent2, di_write_lock_parent2, ++ * di_read_lock_parent3, di_write_lock_parent3, ++ */ ++#define AuReadLockFunc(name, lsc) \ ++static inline void di_read_lock_##name(struct dentry *d, int flags) \ ++{ di_read_lock(d, flags, AuLsc_DI_##lsc); } ++ ++#define AuWriteLockFunc(name, lsc) \ ++static inline void di_write_lock_##name(struct dentry *d) \ ++{ di_write_lock(d, AuLsc_DI_##lsc); } ++ ++#define AuRWLockFuncs(name, lsc) \ ++ AuReadLockFunc(name, lsc) \ ++ AuWriteLockFunc(name, lsc) ++ ++AuRWLockFuncs(child, CHILD); ++AuRWLockFuncs(child2, CHILD2); ++AuRWLockFuncs(child3, CHILD3); ++AuRWLockFuncs(parent, PARENT); ++AuRWLockFuncs(parent2, PARENT2); ++AuRWLockFuncs(parent3, PARENT3); ++ ++#undef AuReadLockFunc ++#undef AuWriteLockFunc ++#undef AuRWLockFuncs ++ ++#define DiMustNoWaiters(d) AuRwMustNoWaiters(&au_di(d)->di_rwsem) ++#define DiMustAnyLock(d) AuRwMustAnyLock(&au_di(d)->di_rwsem) ++#define DiMustWriteLock(d) AuRwMustWriteLock(&au_di(d)->di_rwsem) ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* todo: memory barrier? */ ++static inline unsigned int au_digen(struct dentry *d) ++{ ++ return atomic_read(&au_di(d)->di_generation); ++} ++ ++static inline void au_h_dentry_init(struct au_hdentry *hdentry) ++{ ++ hdentry->hd_dentry = NULL; ++} ++ ++static inline struct au_hdentry *au_hdentry(struct au_dinfo *di, ++ aufs_bindex_t bindex) ++{ ++ return di->di_hdentry + bindex; ++} ++ ++static inline void au_hdput(struct au_hdentry *hd) ++{ ++ if (hd) ++ dput(hd->hd_dentry); ++} ++ ++static inline aufs_bindex_t au_dbtop(struct dentry *dentry) ++{ ++ DiMustAnyLock(dentry); ++ return au_di(dentry)->di_btop; ++} ++ ++static inline aufs_bindex_t au_dbbot(struct dentry *dentry) ++{ ++ DiMustAnyLock(dentry); ++ return au_di(dentry)->di_bbot; ++} ++ ++static inline aufs_bindex_t au_dbwh(struct dentry *dentry) ++{ ++ DiMustAnyLock(dentry); ++ return au_di(dentry)->di_bwh; ++} ++ ++static inline aufs_bindex_t au_dbdiropq(struct dentry *dentry) ++{ ++ DiMustAnyLock(dentry); ++ return au_di(dentry)->di_bdiropq; ++} ++ ++/* todo: hard/soft set? */ ++static inline void au_set_dbtop(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ DiMustWriteLock(dentry); ++ au_di(dentry)->di_btop = bindex; ++} ++ ++static inline void au_set_dbbot(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ DiMustWriteLock(dentry); ++ au_di(dentry)->di_bbot = bindex; ++} ++ ++static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ DiMustWriteLock(dentry); ++ /* dbwh can be outside of btop - bbot range */ ++ au_di(dentry)->di_bwh = bindex; ++} ++ ++static inline void au_set_dbdiropq(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ DiMustWriteLock(dentry); ++ au_di(dentry)->di_bdiropq = bindex; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_HNOTIFY ++static inline void au_digen_dec(struct dentry *d) ++{ ++ atomic_dec(&au_di(d)->di_generation); ++} ++ ++static inline void au_hn_di_reinit(struct dentry *dentry) ++{ ++ dentry->d_fsdata = NULL; ++} ++#else ++AuStubVoid(au_hn_di_reinit, struct dentry *dentry __maybe_unused) ++#endif /* CONFIG_AUFS_HNOTIFY */ ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_DENTRY_H__ */ +diff -Naur null/fs/aufs/dinfo.c linux-5.15.36/fs/aufs/dinfo.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dinfo.c 2022-05-10 16:51:39.869744219 +0300 +@@ -0,0 +1,554 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * dentry private data ++ */ ++ ++#include "aufs.h" ++ ++void au_di_init_once(void *_dinfo) ++{ ++ struct au_dinfo *dinfo = _dinfo; ++ ++ au_rw_init(&dinfo->di_rwsem); ++} ++ ++struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc) ++{ ++ struct au_dinfo *dinfo; ++ int nbr, i; ++ ++ dinfo = au_cache_alloc_dinfo(); ++ if (unlikely(!dinfo)) ++ goto out; ++ ++ nbr = au_sbbot(sb) + 1; ++ if (nbr <= 0) ++ nbr = 1; ++ dinfo->di_hdentry = kcalloc(nbr, sizeof(*dinfo->di_hdentry), GFP_NOFS); ++ if (dinfo->di_hdentry) { ++ au_rw_write_lock_nested(&dinfo->di_rwsem, lsc); ++ dinfo->di_btop = -1; ++ dinfo->di_bbot = -1; ++ dinfo->di_bwh = -1; ++ dinfo->di_bdiropq = -1; ++ dinfo->di_tmpfile = 0; ++ for (i = 0; i < nbr; i++) ++ dinfo->di_hdentry[i].hd_id = -1; ++ goto out; ++ } ++ ++ au_cache_free_dinfo(dinfo); ++ dinfo = NULL; ++ ++out: ++ return dinfo; ++} ++ ++void au_di_free(struct au_dinfo *dinfo) ++{ ++ struct au_hdentry *p; ++ aufs_bindex_t bbot, bindex; ++ ++ /* dentry may not be revalidated */ ++ bindex = dinfo->di_btop; ++ if (bindex >= 0) { ++ bbot = dinfo->di_bbot; ++ p = au_hdentry(dinfo, bindex); ++ while (bindex++ <= bbot) ++ au_hdput(p++); ++ } ++ au_kfree_try_rcu(dinfo->di_hdentry); ++ au_cache_free_dinfo(dinfo); ++} ++ ++void au_di_swap(struct au_dinfo *a, struct au_dinfo *b) ++{ ++ struct au_hdentry *p; ++ aufs_bindex_t bi; ++ ++ AuRwMustWriteLock(&a->di_rwsem); ++ AuRwMustWriteLock(&b->di_rwsem); ++ ++#define DiSwap(v, name) \ ++ do { \ ++ v = a->di_##name; \ ++ a->di_##name = b->di_##name; \ ++ b->di_##name = v; \ ++ } while (0) ++ ++ DiSwap(p, hdentry); ++ DiSwap(bi, btop); ++ DiSwap(bi, bbot); ++ DiSwap(bi, bwh); ++ DiSwap(bi, bdiropq); ++ /* smp_mb(); */ ++ ++#undef DiSwap ++} ++ ++void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src) ++{ ++ AuRwMustWriteLock(&dst->di_rwsem); ++ AuRwMustWriteLock(&src->di_rwsem); ++ ++ dst->di_btop = src->di_btop; ++ dst->di_bbot = src->di_bbot; ++ dst->di_bwh = src->di_bwh; ++ dst->di_bdiropq = src->di_bdiropq; ++ /* smp_mb(); */ ++} ++ ++int au_di_init(struct dentry *dentry) ++{ ++ int err; ++ struct super_block *sb; ++ struct au_dinfo *dinfo; ++ ++ err = 0; ++ sb = dentry->d_sb; ++ dinfo = au_di_alloc(sb, AuLsc_DI_CHILD); ++ if (dinfo) { ++ atomic_set(&dinfo->di_generation, au_sigen(sb)); ++ /* smp_mb(); */ /* atomic_set */ ++ dentry->d_fsdata = dinfo; ++ } else ++ err = -ENOMEM; ++ ++ return err; ++} ++ ++void au_di_fin(struct dentry *dentry) ++{ ++ struct au_dinfo *dinfo; ++ ++ dinfo = au_di(dentry); ++ AuRwDestroy(&dinfo->di_rwsem); ++ au_di_free(dinfo); ++} ++ ++int au_di_realloc(struct au_dinfo *dinfo, int nbr, int may_shrink) ++{ ++ int err, sz; ++ struct au_hdentry *hdp; ++ ++ AuRwMustWriteLock(&dinfo->di_rwsem); ++ ++ err = -ENOMEM; ++ sz = sizeof(*hdp) * (dinfo->di_bbot + 1); ++ if (!sz) ++ sz = sizeof(*hdp); ++ hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS, ++ may_shrink); ++ if (hdp) { ++ dinfo->di_hdentry = hdp; ++ err = 0; ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void do_ii_write_lock(struct inode *inode, unsigned int lsc) ++{ ++ switch (lsc) { ++ case AuLsc_DI_CHILD: ++ ii_write_lock_child(inode); ++ break; ++ case AuLsc_DI_CHILD2: ++ ii_write_lock_child2(inode); ++ break; ++ case AuLsc_DI_CHILD3: ++ ii_write_lock_child3(inode); ++ break; ++ case AuLsc_DI_PARENT: ++ ii_write_lock_parent(inode); ++ break; ++ case AuLsc_DI_PARENT2: ++ ii_write_lock_parent2(inode); ++ break; ++ case AuLsc_DI_PARENT3: ++ ii_write_lock_parent3(inode); ++ break; ++ default: ++ BUG(); ++ } ++} ++ ++static void do_ii_read_lock(struct inode *inode, unsigned int lsc) ++{ ++ switch (lsc) { ++ case AuLsc_DI_CHILD: ++ ii_read_lock_child(inode); ++ break; ++ case AuLsc_DI_CHILD2: ++ ii_read_lock_child2(inode); ++ break; ++ case AuLsc_DI_CHILD3: ++ ii_read_lock_child3(inode); ++ break; ++ case AuLsc_DI_PARENT: ++ ii_read_lock_parent(inode); ++ break; ++ case AuLsc_DI_PARENT2: ++ ii_read_lock_parent2(inode); ++ break; ++ case AuLsc_DI_PARENT3: ++ ii_read_lock_parent3(inode); ++ break; ++ default: ++ BUG(); ++ } ++} ++ ++void di_read_lock(struct dentry *d, int flags, unsigned int lsc) ++{ ++ struct inode *inode; ++ ++ au_rw_read_lock_nested(&au_di(d)->di_rwsem, lsc); ++ if (d_really_is_positive(d)) { ++ inode = d_inode(d); ++ if (au_ftest_lock(flags, IW)) ++ do_ii_write_lock(inode, lsc); ++ else if (au_ftest_lock(flags, IR)) ++ do_ii_read_lock(inode, lsc); ++ } ++} ++ ++void di_read_unlock(struct dentry *d, int flags) ++{ ++ struct inode *inode; ++ ++ if (d_really_is_positive(d)) { ++ inode = d_inode(d); ++ if (au_ftest_lock(flags, IW)) { ++ au_dbg_verify_dinode(d); ++ ii_write_unlock(inode); ++ } else if (au_ftest_lock(flags, IR)) { ++ au_dbg_verify_dinode(d); ++ ii_read_unlock(inode); ++ } ++ } ++ au_rw_read_unlock(&au_di(d)->di_rwsem); ++} ++ ++void di_downgrade_lock(struct dentry *d, int flags) ++{ ++ if (d_really_is_positive(d) && au_ftest_lock(flags, IR)) ++ ii_downgrade_lock(d_inode(d)); ++ au_rw_dgrade_lock(&au_di(d)->di_rwsem); ++} ++ ++void di_write_lock(struct dentry *d, unsigned int lsc) ++{ ++ au_rw_write_lock_nested(&au_di(d)->di_rwsem, lsc); ++ if (d_really_is_positive(d)) ++ do_ii_write_lock(d_inode(d), lsc); ++} ++ ++void di_write_unlock(struct dentry *d) ++{ ++ au_dbg_verify_dinode(d); ++ if (d_really_is_positive(d)) ++ ii_write_unlock(d_inode(d)); ++ au_rw_write_unlock(&au_di(d)->di_rwsem); ++} ++ ++void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir) ++{ ++ AuDebugOn(d1 == d2 ++ || d_inode(d1) == d_inode(d2) ++ || d1->d_sb != d2->d_sb); ++ ++ if ((isdir && au_test_subdir(d1, d2)) ++ || d1 < d2) { ++ di_write_lock_child(d1); ++ di_write_lock_child2(d2); ++ } else { ++ di_write_lock_child(d2); ++ di_write_lock_child2(d1); ++ } ++} ++ ++void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir) ++{ ++ AuDebugOn(d1 == d2 ++ || d_inode(d1) == d_inode(d2) ++ || d1->d_sb != d2->d_sb); ++ ++ if ((isdir && au_test_subdir(d1, d2)) ++ || d1 < d2) { ++ di_write_lock_parent(d1); ++ di_write_lock_parent2(d2); ++ } else { ++ di_write_lock_parent(d2); ++ di_write_lock_parent2(d1); ++ } ++} ++ ++void di_write_unlock2(struct dentry *d1, struct dentry *d2) ++{ ++ di_write_unlock(d1); ++ if (d_inode(d1) == d_inode(d2)) ++ au_rw_write_unlock(&au_di(d2)->di_rwsem); ++ else ++ di_write_unlock(d2); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ struct dentry *d; ++ ++ DiMustAnyLock(dentry); ++ ++ if (au_dbtop(dentry) < 0 || bindex < au_dbtop(dentry)) ++ return NULL; ++ AuDebugOn(bindex < 0); ++ d = au_hdentry(au_di(dentry), bindex)->hd_dentry; ++ AuDebugOn(d && au_dcount(d) <= 0); ++ return d; ++} ++ ++/* ++ * extended version of au_h_dptr(). ++ * returns a hashed and positive (or linkable) h_dentry in bindex, NULL, or ++ * error. ++ */ ++struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ struct dentry *h_dentry; ++ struct inode *inode, *h_inode; ++ ++ AuDebugOn(d_really_is_negative(dentry)); ++ ++ h_dentry = NULL; ++ if (au_dbtop(dentry) <= bindex ++ && bindex <= au_dbbot(dentry)) ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry && !au_d_linkable(h_dentry)) { ++ dget(h_dentry); ++ goto out; /* success */ ++ } ++ ++ inode = d_inode(dentry); ++ AuDebugOn(bindex < au_ibtop(inode)); ++ AuDebugOn(au_ibbot(inode) < bindex); ++ h_inode = au_h_iptr(inode, bindex); ++ h_dentry = d_find_alias(h_inode); ++ if (h_dentry) { ++ if (!IS_ERR(h_dentry)) { ++ if (!au_d_linkable(h_dentry)) ++ goto out; /* success */ ++ dput(h_dentry); ++ } else ++ goto out; ++ } ++ ++ if (au_opt_test(au_mntflags(dentry->d_sb), PLINK)) { ++ h_dentry = au_plink_lkup(inode, bindex); ++ AuDebugOn(!h_dentry); ++ if (!IS_ERR(h_dentry)) { ++ if (!au_d_hashed_positive(h_dentry)) ++ goto out; /* success */ ++ dput(h_dentry); ++ h_dentry = NULL; ++ } ++ } ++ ++out: ++ AuDbgDentry(h_dentry); ++ return h_dentry; ++} ++ ++aufs_bindex_t au_dbtail(struct dentry *dentry) ++{ ++ aufs_bindex_t bbot, bwh; ++ ++ bbot = au_dbbot(dentry); ++ if (0 <= bbot) { ++ bwh = au_dbwh(dentry); ++ if (!bwh) ++ return bwh; ++ if (0 < bwh && bwh < bbot) ++ return bwh - 1; ++ } ++ return bbot; ++} ++ ++aufs_bindex_t au_dbtaildir(struct dentry *dentry) ++{ ++ aufs_bindex_t bbot, bopq; ++ ++ bbot = au_dbtail(dentry); ++ if (0 <= bbot) { ++ bopq = au_dbdiropq(dentry); ++ if (0 <= bopq && bopq < bbot) ++ bbot = bopq; ++ } ++ return bbot; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_dentry) ++{ ++ struct au_dinfo *dinfo; ++ struct au_hdentry *hd; ++ struct au_branch *br; ++ ++ DiMustWriteLock(dentry); ++ ++ dinfo = au_di(dentry); ++ hd = au_hdentry(dinfo, bindex); ++ au_hdput(hd); ++ hd->hd_dentry = h_dentry; ++ if (h_dentry) { ++ br = au_sbr(dentry->d_sb, bindex); ++ hd->hd_id = br->br_id; ++ } ++} ++ ++int au_dbrange_test(struct dentry *dentry) ++{ ++ int err; ++ aufs_bindex_t btop, bbot; ++ ++ err = 0; ++ btop = au_dbtop(dentry); ++ bbot = au_dbbot(dentry); ++ if (btop >= 0) ++ AuDebugOn(bbot < 0 && btop > bbot); ++ else { ++ err = -EIO; ++ AuDebugOn(bbot >= 0); ++ } ++ ++ return err; ++} ++ ++int au_digen_test(struct dentry *dentry, unsigned int sigen) ++{ ++ int err; ++ ++ err = 0; ++ if (unlikely(au_digen(dentry) != sigen ++ || au_iigen_test(d_inode(dentry), sigen))) ++ err = -EIO; ++ ++ return err; ++} ++ ++void au_update_digen(struct dentry *dentry) ++{ ++ atomic_set(&au_di(dentry)->di_generation, au_sigen(dentry->d_sb)); ++ /* smp_mb(); */ /* atomic_set */ ++} ++ ++void au_update_dbrange(struct dentry *dentry, int do_put_zero) ++{ ++ struct au_dinfo *dinfo; ++ struct dentry *h_d; ++ struct au_hdentry *hdp; ++ aufs_bindex_t bindex, bbot; ++ ++ DiMustWriteLock(dentry); ++ ++ dinfo = au_di(dentry); ++ if (!dinfo || dinfo->di_btop < 0) ++ return; ++ ++ if (do_put_zero) { ++ bbot = dinfo->di_bbot; ++ bindex = dinfo->di_btop; ++ hdp = au_hdentry(dinfo, bindex); ++ for (; bindex <= bbot; bindex++, hdp++) { ++ h_d = hdp->hd_dentry; ++ if (h_d && d_is_negative(h_d)) ++ au_set_h_dptr(dentry, bindex, NULL); ++ } ++ } ++ ++ dinfo->di_btop = 0; ++ hdp = au_hdentry(dinfo, dinfo->di_btop); ++ for (; dinfo->di_btop <= dinfo->di_bbot; dinfo->di_btop++, hdp++) ++ if (hdp->hd_dentry) ++ break; ++ if (dinfo->di_btop > dinfo->di_bbot) { ++ dinfo->di_btop = -1; ++ dinfo->di_bbot = -1; ++ return; ++ } ++ ++ hdp = au_hdentry(dinfo, dinfo->di_bbot); ++ for (; dinfo->di_bbot >= 0; dinfo->di_bbot--, hdp--) ++ if (hdp->hd_dentry) ++ break; ++ AuDebugOn(dinfo->di_btop > dinfo->di_bbot || dinfo->di_bbot < 0); ++} ++ ++void au_update_dbtop(struct dentry *dentry) ++{ ++ aufs_bindex_t bindex, bbot; ++ struct dentry *h_dentry; ++ ++ bbot = au_dbbot(dentry); ++ for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (!h_dentry) ++ continue; ++ if (d_is_positive(h_dentry)) { ++ au_set_dbtop(dentry, bindex); ++ return; ++ } ++ au_set_h_dptr(dentry, bindex, NULL); ++ } ++} ++ ++void au_update_dbbot(struct dentry *dentry) ++{ ++ aufs_bindex_t bindex, btop; ++ struct dentry *h_dentry; ++ ++ btop = au_dbtop(dentry); ++ for (bindex = au_dbbot(dentry); bindex >= btop; bindex--) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (!h_dentry) ++ continue; ++ if (d_is_positive(h_dentry)) { ++ au_set_dbbot(dentry, bindex); ++ return; ++ } ++ au_set_h_dptr(dentry, bindex, NULL); ++ } ++} ++ ++int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry) ++{ ++ aufs_bindex_t bindex, bbot; ++ ++ bbot = au_dbbot(dentry); ++ for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) ++ if (au_h_dptr(dentry, bindex) == h_dentry) ++ return bindex; ++ return -1; ++} +diff -Naur null/fs/aufs/dir.c linux-5.15.36/fs/aufs/dir.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dir.c 2022-05-10 16:51:39.869744219 +0300 +@@ -0,0 +1,765 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * directory operations ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++void au_add_nlink(struct inode *dir, struct inode *h_dir) ++{ ++ unsigned int nlink; ++ ++ AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); ++ ++ nlink = dir->i_nlink; ++ nlink += h_dir->i_nlink - 2; ++ if (h_dir->i_nlink < 2) ++ nlink += 2; ++ smp_mb(); /* for i_nlink */ ++ /* 0 can happen in revaliding */ ++ set_nlink(dir, nlink); ++} ++ ++void au_sub_nlink(struct inode *dir, struct inode *h_dir) ++{ ++ unsigned int nlink; ++ ++ AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); ++ ++ nlink = dir->i_nlink; ++ nlink -= h_dir->i_nlink - 2; ++ if (h_dir->i_nlink < 2) ++ nlink -= 2; ++ smp_mb(); /* for i_nlink */ ++ /* nlink == 0 means the branch-fs is broken */ ++ set_nlink(dir, nlink); ++} ++ ++loff_t au_dir_size(struct file *file, struct dentry *dentry) ++{ ++ loff_t sz; ++ aufs_bindex_t bindex, bbot; ++ struct file *h_file; ++ struct dentry *h_dentry; ++ ++ sz = 0; ++ if (file) { ++ AuDebugOn(!d_is_dir(file->f_path.dentry)); ++ ++ bbot = au_fbbot_dir(file); ++ for (bindex = au_fbtop(file); ++ bindex <= bbot && sz < KMALLOC_MAX_SIZE; ++ bindex++) { ++ h_file = au_hf_dir(file, bindex); ++ if (h_file && file_inode(h_file)) ++ sz += vfsub_f_size_read(h_file); ++ } ++ } else { ++ AuDebugOn(!dentry); ++ AuDebugOn(!d_is_dir(dentry)); ++ ++ bbot = au_dbtaildir(dentry); ++ for (bindex = au_dbtop(dentry); ++ bindex <= bbot && sz < KMALLOC_MAX_SIZE; ++ bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry && d_is_positive(h_dentry)) ++ sz += i_size_read(d_inode(h_dentry)); ++ } ++ } ++ if (sz < KMALLOC_MAX_SIZE) ++ sz = roundup_pow_of_two(sz); ++ if (sz > KMALLOC_MAX_SIZE) ++ sz = KMALLOC_MAX_SIZE; ++ else if (sz < NAME_MAX) { ++ BUILD_BUG_ON(AUFS_RDBLK_DEF < NAME_MAX); ++ sz = AUFS_RDBLK_DEF; ++ } ++ return sz; ++} ++ ++struct au_dir_ts_arg { ++ struct dentry *dentry; ++ aufs_bindex_t brid; ++}; ++ ++static void au_do_dir_ts(void *arg) ++{ ++ struct au_dir_ts_arg *a = arg; ++ struct au_dtime dt; ++ struct path h_path; ++ struct inode *dir, *h_dir; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_hinode *hdir; ++ int err; ++ aufs_bindex_t btop, bindex; ++ ++ sb = a->dentry->d_sb; ++ if (d_really_is_negative(a->dentry)) ++ goto out; ++ /* no dir->i_mutex lock */ ++ aufs_read_lock(a->dentry, AuLock_DW); /* noflush */ ++ ++ dir = d_inode(a->dentry); ++ btop = au_ibtop(dir); ++ bindex = au_br_index(sb, a->brid); ++ if (bindex < btop) ++ goto out_unlock; ++ ++ br = au_sbr(sb, bindex); ++ h_path.dentry = au_h_dptr(a->dentry, bindex); ++ if (!h_path.dentry) ++ goto out_unlock; ++ h_path.mnt = au_br_mnt(br); ++ au_dtime_store(&dt, a->dentry, &h_path); ++ ++ br = au_sbr(sb, btop); ++ if (!au_br_writable(br->br_perm)) ++ goto out_unlock; ++ h_path.dentry = au_h_dptr(a->dentry, btop); ++ h_path.mnt = au_br_mnt(br); ++ err = vfsub_mnt_want_write(h_path.mnt); ++ if (err) ++ goto out_unlock; ++ hdir = au_hi(dir, btop); ++ au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); ++ h_dir = au_h_iptr(dir, btop); ++ if (h_dir->i_nlink ++ && timespec64_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) { ++ dt.dt_h_path = h_path; ++ au_dtime_revert(&dt); ++ } ++ au_hn_inode_unlock(hdir); ++ vfsub_mnt_drop_write(h_path.mnt); ++ au_cpup_attr_timesizes(dir); ++ ++out_unlock: ++ aufs_read_unlock(a->dentry, AuLock_DW); ++out: ++ dput(a->dentry); ++ au_nwt_done(&au_sbi(sb)->si_nowait); ++ au_kfree_try_rcu(arg); ++} ++ ++void au_dir_ts(struct inode *dir, aufs_bindex_t bindex) ++{ ++ int perm, wkq_err; ++ aufs_bindex_t btop; ++ struct au_dir_ts_arg *arg; ++ struct dentry *dentry; ++ struct super_block *sb; ++ ++ IMustLock(dir); ++ ++ dentry = d_find_any_alias(dir); ++ AuDebugOn(!dentry); ++ sb = dentry->d_sb; ++ btop = au_ibtop(dir); ++ if (btop == bindex) { ++ au_cpup_attr_timesizes(dir); ++ goto out; ++ } ++ ++ perm = au_sbr_perm(sb, btop); ++ if (!au_br_writable(perm)) ++ goto out; ++ ++ arg = kmalloc(sizeof(*arg), GFP_NOFS); ++ if (!arg) ++ goto out; ++ ++ arg->dentry = dget(dentry); /* will be dput-ted by au_do_dir_ts() */ ++ arg->brid = au_sbr_id(sb, bindex); ++ wkq_err = au_wkq_nowait(au_do_dir_ts, arg, sb, /*flags*/0); ++ if (unlikely(wkq_err)) { ++ pr_err("wkq %d\n", wkq_err); ++ dput(dentry); ++ au_kfree_try_rcu(arg); ++ } ++ ++out: ++ dput(dentry); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int reopen_dir(struct file *file) ++{ ++ int err; ++ unsigned int flags; ++ aufs_bindex_t bindex, btail, btop; ++ struct dentry *dentry, *h_dentry; ++ struct file *h_file; ++ ++ /* open all lower dirs */ ++ dentry = file->f_path.dentry; ++ btop = au_dbtop(dentry); ++ for (bindex = au_fbtop(file); bindex < btop; bindex++) ++ au_set_h_fptr(file, bindex, NULL); ++ au_set_fbtop(file, btop); ++ ++ btail = au_dbtaildir(dentry); ++ for (bindex = au_fbbot_dir(file); btail < bindex; bindex--) ++ au_set_h_fptr(file, bindex, NULL); ++ au_set_fbbot_dir(file, btail); ++ ++ flags = vfsub_file_flags(file); ++ for (bindex = btop; bindex <= btail; bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (!h_dentry) ++ continue; ++ h_file = au_hf_dir(file, bindex); ++ if (h_file) ++ continue; ++ ++ h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; /* close all? */ ++ au_set_h_fptr(file, bindex, h_file); ++ } ++ au_update_figen(file); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ err = 0; ++ ++out: ++ return err; ++} ++ ++static int do_open_dir(struct file *file, int flags, struct file *h_file) ++{ ++ int err; ++ aufs_bindex_t bindex, btail; ++ struct dentry *dentry, *h_dentry; ++ struct vfsmount *mnt; ++ ++ FiMustWriteLock(file); ++ AuDebugOn(h_file); ++ ++ err = 0; ++ mnt = file->f_path.mnt; ++ dentry = file->f_path.dentry; ++ file->f_version = inode_query_iversion(d_inode(dentry)); ++ bindex = au_dbtop(dentry); ++ au_set_fbtop(file, bindex); ++ btail = au_dbtaildir(dentry); ++ au_set_fbbot_dir(file, btail); ++ for (; !err && bindex <= btail; bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (!h_dentry) ++ continue; ++ ++ err = vfsub_test_mntns(mnt, h_dentry->d_sb); ++ if (unlikely(err)) ++ break; ++ h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); ++ if (IS_ERR(h_file)) { ++ err = PTR_ERR(h_file); ++ break; ++ } ++ au_set_h_fptr(file, bindex, h_file); ++ } ++ au_update_figen(file); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ if (!err) ++ return 0; /* success */ ++ ++ /* close all */ ++ for (bindex = au_fbtop(file); bindex <= btail; bindex++) ++ au_set_h_fptr(file, bindex, NULL); ++ au_set_fbtop(file, -1); ++ au_set_fbbot_dir(file, -1); ++ ++ return err; ++} ++ ++static int aufs_open_dir(struct inode *inode __maybe_unused, ++ struct file *file) ++{ ++ int err; ++ struct super_block *sb; ++ struct au_fidir *fidir; ++ ++ err = -ENOMEM; ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ fidir = au_fidir_alloc(sb); ++ if (fidir) { ++ struct au_do_open_args args = { ++ .open = do_open_dir, ++ .fidir = fidir ++ }; ++ err = au_do_open(file, &args); ++ if (unlikely(err)) ++ au_kfree_rcu(fidir); ++ } ++ si_read_unlock(sb); ++ return err; ++} ++ ++static int aufs_release_dir(struct inode *inode __maybe_unused, ++ struct file *file) ++{ ++ struct au_vdir *vdir_cache; ++ struct au_finfo *finfo; ++ struct au_fidir *fidir; ++ struct au_hfile *hf; ++ aufs_bindex_t bindex, bbot; ++ ++ finfo = au_fi(file); ++ fidir = finfo->fi_hdir; ++ if (fidir) { ++ au_hbl_del(&finfo->fi_hlist, ++ &au_sbi(file->f_path.dentry->d_sb)->si_files); ++ vdir_cache = fidir->fd_vdir_cache; /* lock-free */ ++ if (vdir_cache) ++ au_vdir_free(vdir_cache); ++ ++ bindex = finfo->fi_btop; ++ if (bindex >= 0) { ++ hf = fidir->fd_hfile + bindex; ++ /* ++ * calls fput() instead of filp_close(), ++ * since no dnotify or lock for the lower file. ++ */ ++ bbot = fidir->fd_bbot; ++ for (; bindex <= bbot; bindex++, hf++) ++ if (hf->hf_file) ++ au_hfput(hf, /*execed*/0); ++ } ++ au_kfree_rcu(fidir); ++ finfo->fi_hdir = NULL; ++ } ++ au_finfo_fin(file); ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_do_flush_dir(struct file *file, fl_owner_t id) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct file *h_file; ++ ++ err = 0; ++ bbot = au_fbbot_dir(file); ++ for (bindex = au_fbtop(file); !err && bindex <= bbot; bindex++) { ++ h_file = au_hf_dir(file, bindex); ++ if (h_file) ++ err = vfsub_flush(h_file, id); ++ } ++ return err; ++} ++ ++static int aufs_flush_dir(struct file *file, fl_owner_t id) ++{ ++ return au_do_flush(file, id, au_do_flush_dir); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_do_fsync_dir_no_file(struct dentry *dentry, int datasync) ++{ ++ int err; ++ aufs_bindex_t bbot, bindex; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ err = 0; ++ sb = dentry->d_sb; ++ inode = d_inode(dentry); ++ IMustLock(inode); ++ bbot = au_dbbot(dentry); ++ for (bindex = au_dbtop(dentry); !err && bindex <= bbot; bindex++) { ++ struct path h_path; ++ ++ if (au_test_ro(sb, bindex, inode)) ++ continue; ++ h_path.dentry = au_h_dptr(dentry, bindex); ++ if (!h_path.dentry) ++ continue; ++ ++ h_path.mnt = au_sbr_mnt(sb, bindex); ++ err = vfsub_fsync(NULL, &h_path, datasync); ++ } ++ ++ return err; ++} ++ ++static int au_do_fsync_dir(struct file *file, int datasync) ++{ ++ int err; ++ aufs_bindex_t bbot, bindex; ++ struct file *h_file; ++ struct super_block *sb; ++ struct inode *inode; ++ ++ err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1, /*fi_lsc*/0); ++ if (unlikely(err)) ++ goto out; ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ bbot = au_fbbot_dir(file); ++ for (bindex = au_fbtop(file); !err && bindex <= bbot; bindex++) { ++ h_file = au_hf_dir(file, bindex); ++ if (!h_file || au_test_ro(sb, bindex, inode)) ++ continue; ++ ++ err = vfsub_fsync(h_file, &h_file->f_path, datasync); ++ } ++ ++out: ++ return err; ++} ++ ++/* ++ * @file may be NULL ++ */ ++static int aufs_fsync_dir(struct file *file, loff_t start, loff_t end, ++ int datasync) ++{ ++ int err; ++ struct dentry *dentry; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ err = 0; ++ dentry = file->f_path.dentry; ++ inode = d_inode(dentry); ++ inode_lock(inode); ++ sb = dentry->d_sb; ++ si_noflush_read_lock(sb); ++ if (file) ++ err = au_do_fsync_dir(file, datasync); ++ else { ++ di_write_lock_child(dentry); ++ err = au_do_fsync_dir_no_file(dentry, datasync); ++ } ++ au_cpup_attr_timesizes(inode); ++ di_write_unlock(dentry); ++ if (file) ++ fi_write_unlock(file); ++ ++ si_read_unlock(sb); ++ inode_unlock(inode); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int aufs_iterate_shared(struct file *file, struct dir_context *ctx) ++{ ++ int err; ++ struct dentry *dentry; ++ struct inode *inode, *h_inode; ++ struct super_block *sb; ++ ++ AuDbg("%pD, ctx{%ps, %llu}\n", file, ctx->actor, ctx->pos); ++ ++ dentry = file->f_path.dentry; ++ inode = d_inode(dentry); ++ IMustLock(inode); ++ ++ sb = dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1, /*fi_lsc*/0); ++ if (unlikely(err)) ++ goto out; ++ err = au_alive_dir(dentry); ++ if (!err) ++ err = au_vdir_init(file); ++ di_downgrade_lock(dentry, AuLock_IR); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ h_inode = au_h_iptr(inode, au_ibtop(inode)); ++ if (!au_test_nfsd()) { ++ err = au_vdir_fill_de(file, ctx); ++ fsstack_copy_attr_atime(inode, h_inode); ++ } else { ++ /* ++ * nfsd filldir may call lookup_one_len(), vfs_getattr(), ++ * encode_fh() and others. ++ */ ++ atomic_inc(&h_inode->i_count); ++ di_read_unlock(dentry, AuLock_IR); ++ si_read_unlock(sb); ++ err = au_vdir_fill_de(file, ctx); ++ fsstack_copy_attr_atime(inode, h_inode); ++ fi_write_unlock(file); ++ iput(h_inode); ++ ++ AuTraceErr(err); ++ return err; ++ } ++ ++out_unlock: ++ di_read_unlock(dentry, AuLock_IR); ++ fi_write_unlock(file); ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define AuTestEmpty_WHONLY 1 ++#define AuTestEmpty_CALLED (1 << 1) ++#define AuTestEmpty_SHWH (1 << 2) ++#define au_ftest_testempty(flags, name) ((flags) & AuTestEmpty_##name) ++#define au_fset_testempty(flags, name) \ ++ do { (flags) |= AuTestEmpty_##name; } while (0) ++#define au_fclr_testempty(flags, name) \ ++ do { (flags) &= ~AuTestEmpty_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_SHWH ++#undef AuTestEmpty_SHWH ++#define AuTestEmpty_SHWH 0 ++#endif ++ ++struct test_empty_arg { ++ struct dir_context ctx; ++ struct au_nhash *whlist; ++ unsigned int flags; ++ int err; ++ aufs_bindex_t bindex; ++}; ++ ++static int test_empty_cb(struct dir_context *ctx, const char *__name, ++ int namelen, loff_t offset __maybe_unused, u64 ino, ++ unsigned int d_type) ++{ ++ struct test_empty_arg *arg = container_of(ctx, struct test_empty_arg, ++ ctx); ++ char *name = (void *)__name; ++ ++ arg->err = 0; ++ au_fset_testempty(arg->flags, CALLED); ++ /* smp_mb(); */ ++ if (name[0] == '.' ++ && (namelen == 1 || (name[1] == '.' && namelen == 2))) ++ goto out; /* success */ ++ ++ if (namelen <= AUFS_WH_PFX_LEN ++ || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { ++ if (au_ftest_testempty(arg->flags, WHONLY) ++ && !au_nhash_test_known_wh(arg->whlist, name, namelen)) ++ arg->err = -ENOTEMPTY; ++ goto out; ++ } ++ ++ name += AUFS_WH_PFX_LEN; ++ namelen -= AUFS_WH_PFX_LEN; ++ if (!au_nhash_test_known_wh(arg->whlist, name, namelen)) ++ arg->err = au_nhash_append_wh ++ (arg->whlist, name, namelen, ino, d_type, arg->bindex, ++ au_ftest_testempty(arg->flags, SHWH)); ++ ++out: ++ /* smp_mb(); */ ++ AuTraceErr(arg->err); ++ return arg->err; ++} ++ ++static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) ++{ ++ int err; ++ struct file *h_file; ++ struct au_branch *br; ++ ++ h_file = au_h_open(dentry, arg->bindex, ++ O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_LARGEFILE, ++ /*file*/NULL, /*force_wr*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = 0; ++ if (!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) ++ && !file_inode(h_file)->i_nlink) ++ goto out_put; ++ ++ do { ++ arg->err = 0; ++ au_fclr_testempty(arg->flags, CALLED); ++ /* smp_mb(); */ ++ err = vfsub_iterate_dir(h_file, &arg->ctx); ++ if (err >= 0) ++ err = arg->err; ++ } while (!err && au_ftest_testempty(arg->flags, CALLED)); ++ ++out_put: ++ fput(h_file); ++ br = au_sbr(dentry->d_sb, arg->bindex); ++ au_lcnt_dec(&br->br_nfiles); ++out: ++ return err; ++} ++ ++struct do_test_empty_args { ++ int *errp; ++ struct dentry *dentry; ++ struct test_empty_arg *arg; ++}; ++ ++static void call_do_test_empty(void *args) ++{ ++ struct do_test_empty_args *a = args; ++ *a->errp = do_test_empty(a->dentry, a->arg); ++} ++ ++static int sio_test_empty(struct dentry *dentry, struct test_empty_arg *arg) ++{ ++ int err, wkq_err; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct user_namespace *h_userns; ++ ++ h_userns = au_sbr_userns(dentry->d_sb, arg->bindex); ++ h_dentry = au_h_dptr(dentry, arg->bindex); ++ h_inode = d_inode(h_dentry); ++ /* todo: i_mode changes anytime? */ ++ inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); ++ err = au_test_h_perm_sio(h_userns, h_inode, MAY_EXEC | MAY_READ); ++ inode_unlock_shared(h_inode); ++ if (!err) ++ err = do_test_empty(dentry, arg); ++ else { ++ struct do_test_empty_args args = { ++ .errp = &err, ++ .dentry = dentry, ++ .arg = arg ++ }; ++ unsigned int flags = arg->flags; ++ ++ wkq_err = au_wkq_wait(call_do_test_empty, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ arg->flags = flags; ++ } ++ ++ return err; ++} ++ ++int au_test_empty_lower(struct dentry *dentry) ++{ ++ int err; ++ unsigned int rdhash; ++ aufs_bindex_t bindex, btop, btail; ++ struct au_nhash whlist; ++ struct test_empty_arg arg = { ++ .ctx = { ++ .actor = test_empty_cb ++ } ++ }; ++ int (*test_empty)(struct dentry *dentry, struct test_empty_arg *arg); ++ ++ SiMustAnyLock(dentry->d_sb); ++ ++ rdhash = au_sbi(dentry->d_sb)->si_rdhash; ++ if (!rdhash) ++ rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, dentry)); ++ err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ ++ arg.flags = 0; ++ arg.whlist = &whlist; ++ btop = au_dbtop(dentry); ++ if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) ++ au_fset_testempty(arg.flags, SHWH); ++ test_empty = do_test_empty; ++ if (au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1)) ++ test_empty = sio_test_empty; ++ arg.bindex = btop; ++ err = test_empty(dentry, &arg); ++ if (unlikely(err)) ++ goto out_whlist; ++ ++ au_fset_testempty(arg.flags, WHONLY); ++ btail = au_dbtaildir(dentry); ++ for (bindex = btop + 1; !err && bindex <= btail; bindex++) { ++ struct dentry *h_dentry; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry && d_is_positive(h_dentry)) { ++ arg.bindex = bindex; ++ err = test_empty(dentry, &arg); ++ } ++ } ++ ++out_whlist: ++ au_nhash_wh_free(&whlist); ++out: ++ return err; ++} ++ ++int au_test_empty(struct dentry *dentry, struct au_nhash *whlist) ++{ ++ int err; ++ struct test_empty_arg arg = { ++ .ctx = { ++ .actor = test_empty_cb ++ } ++ }; ++ aufs_bindex_t bindex, btail; ++ ++ err = 0; ++ arg.whlist = whlist; ++ arg.flags = AuTestEmpty_WHONLY; ++ if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) ++ au_fset_testempty(arg.flags, SHWH); ++ btail = au_dbtaildir(dentry); ++ for (bindex = au_dbtop(dentry); !err && bindex <= btail; bindex++) { ++ struct dentry *h_dentry; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry && d_is_positive(h_dentry)) { ++ arg.bindex = bindex; ++ err = sio_test_empty(dentry, &arg); ++ } ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++const struct file_operations aufs_dir_fop = { ++ .owner = THIS_MODULE, ++ .llseek = default_llseek, ++ .read = generic_read_dir, ++ .iterate_shared = aufs_iterate_shared, ++ .unlocked_ioctl = aufs_ioctl_dir, ++#ifdef CONFIG_COMPAT ++ .compat_ioctl = aufs_compat_ioctl_dir, ++#endif ++ .open = aufs_open_dir, ++ .release = aufs_release_dir, ++ .flush = aufs_flush_dir, ++ .fsync = aufs_fsync_dir ++}; +diff -Naur null/fs/aufs/dir.h linux-5.15.36/fs/aufs/dir.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/dir.h 2022-05-10 16:51:39.869744219 +0300 +@@ -0,0 +1,134 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * directory operations ++ */ ++ ++#ifndef __AUFS_DIR_H__ ++#define __AUFS_DIR_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* need to be faster and smaller */ ++ ++struct au_nhash { ++ unsigned int nh_num; ++ struct hlist_head *nh_head; ++}; ++ ++struct au_vdir_destr { ++ unsigned char len; ++ unsigned char name[]; ++} __packed; ++ ++struct au_vdir_dehstr { ++ struct hlist_node hash; ++ struct au_vdir_destr *str; ++ struct rcu_head rcu; ++} ____cacheline_aligned_in_smp; ++ ++struct au_vdir_de { ++ ino_t de_ino; ++ unsigned char de_type; ++ /* caution: packed */ ++ struct au_vdir_destr de_str; ++} __packed; ++ ++struct au_vdir_wh { ++ struct hlist_node wh_hash; ++#ifdef CONFIG_AUFS_SHWH ++ ino_t wh_ino; ++ aufs_bindex_t wh_bindex; ++ unsigned char wh_type; ++#else ++ aufs_bindex_t wh_bindex; ++#endif ++ /* caution: packed */ ++ struct au_vdir_destr wh_str; ++} __packed; ++ ++union au_vdir_deblk_p { ++ unsigned char *deblk; ++ struct au_vdir_de *de; ++}; ++ ++struct au_vdir { ++ unsigned char **vd_deblk; ++ unsigned long vd_nblk; ++ struct { ++ unsigned long ul; ++ union au_vdir_deblk_p p; ++ } vd_last; ++ ++ u64 vd_version; ++ unsigned int vd_deblk_sz; ++ unsigned long vd_jiffy; ++ struct rcu_head rcu; ++} ____cacheline_aligned_in_smp; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* dir.c */ ++extern const struct file_operations aufs_dir_fop; ++void au_add_nlink(struct inode *dir, struct inode *h_dir); ++void au_sub_nlink(struct inode *dir, struct inode *h_dir); ++loff_t au_dir_size(struct file *file, struct dentry *dentry); ++void au_dir_ts(struct inode *dir, aufs_bindex_t bsrc); ++int au_test_empty_lower(struct dentry *dentry); ++int au_test_empty(struct dentry *dentry, struct au_nhash *whlist); ++ ++/* vdir.c */ ++unsigned int au_rdhash_est(loff_t sz); ++int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp); ++void au_nhash_wh_free(struct au_nhash *whlist); ++int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, ++ int limit); ++int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); ++int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, ++ unsigned int d_type, aufs_bindex_t bindex, ++ unsigned char shwh); ++void au_vdir_free(struct au_vdir *vdir); ++int au_vdir_init(struct file *file); ++int au_vdir_fill_de(struct file *file, struct dir_context *ctx); ++ ++/* ioctl.c */ ++long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg); ++ ++#ifdef CONFIG_AUFS_RDU ++/* rdu.c */ ++long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); ++#ifdef CONFIG_COMPAT ++long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, ++ unsigned long arg); ++#endif ++#else ++AuStub(long, au_rdu_ioctl, return -EINVAL, struct file *file, ++ unsigned int cmd, unsigned long arg) ++#ifdef CONFIG_COMPAT ++AuStub(long, au_rdu_compat_ioctl, return -EINVAL, struct file *file, ++ unsigned int cmd, unsigned long arg) ++#endif ++#endif ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_DIR_H__ */ +diff -Naur null/fs/aufs/dirren.c linux-5.15.36/fs/aufs/dirren.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dirren.c 2022-05-10 16:51:39.869744219 +0300 +@@ -0,0 +1,1315 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2017-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * special handling in renaming a directory ++ * in order to support looking-up the before-renamed name on the lower readonly ++ * branches ++ */ ++ ++#include ++#include "aufs.h" ++ ++static void au_dr_hino_del(struct au_dr_br *dr, struct au_dr_hino *ent) ++{ ++ int idx; ++ ++ idx = au_dr_ihash(ent->dr_h_ino); ++ au_hbl_del(&ent->dr_hnode, dr->dr_h_ino + idx); ++} ++ ++static int au_dr_hino_test_empty(struct au_dr_br *dr) ++{ ++ int ret, i; ++ struct hlist_bl_head *hbl; ++ ++ ret = 1; ++ for (i = 0; ret && i < AuDirren_NHASH; i++) { ++ hbl = dr->dr_h_ino + i; ++ hlist_bl_lock(hbl); ++ ret &= hlist_bl_empty(hbl); ++ hlist_bl_unlock(hbl); ++ } ++ ++ return ret; ++} ++ ++static struct au_dr_hino *au_dr_hino_find(struct au_dr_br *dr, ino_t ino) ++{ ++ struct au_dr_hino *found, *ent; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ int idx; ++ ++ found = NULL; ++ idx = au_dr_ihash(ino); ++ hbl = dr->dr_h_ino + idx; ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(ent, pos, hbl, dr_hnode) ++ if (ent->dr_h_ino == ino) { ++ found = ent; ++ break; ++ } ++ hlist_bl_unlock(hbl); ++ ++ return found; ++} ++ ++int au_dr_hino_test_add(struct au_dr_br *dr, ino_t ino, ++ struct au_dr_hino *add_ent) ++{ ++ int found, idx; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ struct au_dr_hino *ent; ++ ++ found = 0; ++ idx = au_dr_ihash(ino); ++ hbl = dr->dr_h_ino + idx; ++#if 0 /* debug print */ ++ { ++ struct hlist_bl_node *tmp; ++ ++ hlist_bl_for_each_entry_safe(ent, pos, tmp, hbl, dr_hnode) ++ AuDbg("hi%llu\n", (unsigned long long)ent->dr_h_ino); ++ } ++#endif ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(ent, pos, hbl, dr_hnode) ++ if (ent->dr_h_ino == ino) { ++ found = 1; ++ break; ++ } ++ if (!found && add_ent) ++ hlist_bl_add_head(&add_ent->dr_hnode, hbl); ++ hlist_bl_unlock(hbl); ++ ++ if (!found && add_ent) ++ AuDbg("i%llu added\n", (unsigned long long)add_ent->dr_h_ino); ++ ++ return found; ++} ++ ++void au_dr_hino_free(struct au_dr_br *dr) ++{ ++ int i; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos, *tmp; ++ struct au_dr_hino *ent; ++ ++ /* SiMustWriteLock(sb); */ ++ ++ for (i = 0; i < AuDirren_NHASH; i++) { ++ hbl = dr->dr_h_ino + i; ++ /* no spinlock since sbinfo must be write-locked */ ++ hlist_bl_for_each_entry_safe(ent, pos, tmp, hbl, dr_hnode) ++ au_kfree_rcu(ent); ++ INIT_HLIST_BL_HEAD(hbl); ++ } ++} ++ ++/* returns the number of inodes or an error */ ++static int au_dr_hino_store(struct super_block *sb, struct au_branch *br, ++ struct file *hinofile) ++{ ++ int err, i; ++ ssize_t ssz; ++ loff_t pos, oldsize; ++ __be64 u64; ++ struct inode *hinoinode; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *n1, *n2; ++ struct au_dr_hino *ent; ++ ++ SiMustWriteLock(sb); ++ AuDebugOn(!au_br_writable(br->br_perm)); ++ ++ hinoinode = file_inode(hinofile); ++ oldsize = i_size_read(hinoinode); ++ ++ err = 0; ++ pos = 0; ++ hbl = br->br_dirren.dr_h_ino; ++ for (i = 0; !err && i < AuDirren_NHASH; i++, hbl++) { ++ /* no bit-lock since sbinfo must be write-locked */ ++ hlist_bl_for_each_entry_safe(ent, n1, n2, hbl, dr_hnode) { ++ AuDbg("hi%llu, %pD2\n", ++ (unsigned long long)ent->dr_h_ino, hinofile); ++ u64 = cpu_to_be64(ent->dr_h_ino); ++ ssz = vfsub_write_k(hinofile, &u64, sizeof(u64), &pos); ++ if (ssz == sizeof(u64)) ++ continue; ++ ++ /* write error */ ++ pr_err("ssz %zd, %pD2\n", ssz, hinofile); ++ err = -ENOSPC; ++ if (ssz < 0) ++ err = ssz; ++ break; ++ } ++ } ++ /* regardless the error */ ++ if (pos < oldsize) { ++ err = vfsub_trunc(&hinofile->f_path, pos, /*attr*/0, hinofile); ++ AuTraceErr(err); ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_dr_hino_load(struct au_dr_br *dr, struct file *hinofile) ++{ ++ int err, hidx; ++ ssize_t ssz; ++ size_t sz, n; ++ loff_t pos; ++ uint64_t u64; ++ struct au_dr_hino *ent; ++ struct inode *hinoinode; ++ struct hlist_bl_head *hbl; ++ ++ err = 0; ++ pos = 0; ++ hbl = dr->dr_h_ino; ++ hinoinode = file_inode(hinofile); ++ sz = i_size_read(hinoinode); ++ AuDebugOn(sz % sizeof(u64)); ++ n = sz / sizeof(u64); ++ while (n--) { ++ ssz = vfsub_read_k(hinofile, &u64, sizeof(u64), &pos); ++ if (unlikely(ssz != sizeof(u64))) { ++ pr_err("ssz %zd, %pD2\n", ssz, hinofile); ++ err = -EINVAL; ++ if (ssz < 0) ++ err = ssz; ++ goto out_free; ++ } ++ ++ ent = kmalloc(sizeof(*ent), GFP_NOFS); ++ if (!ent) { ++ err = -ENOMEM; ++ AuTraceErr(err); ++ goto out_free; ++ } ++ ent->dr_h_ino = be64_to_cpu((__force __be64)u64); ++ AuDbg("hi%llu, %pD2\n", ++ (unsigned long long)ent->dr_h_ino, hinofile); ++ hidx = au_dr_ihash(ent->dr_h_ino); ++ au_hbl_add(&ent->dr_hnode, hbl + hidx); ++ } ++ goto out; /* success */ ++ ++out_free: ++ au_dr_hino_free(dr); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * @bindex/@br is a switch to distinguish whether suspending hnotify or not. ++ * @path is a switch to distinguish load and store. ++ */ ++static int au_dr_hino(struct super_block *sb, aufs_bindex_t bindex, ++ struct au_branch *br, const struct path *path) ++{ ++ int err, flags; ++ unsigned char load, suspend; ++ struct file *hinofile; ++ struct au_hinode *hdir; ++ struct inode *dir, *delegated; ++ struct path hinopath; ++ struct qstr hinoname = QSTR_INIT(AUFS_WH_DR_BRHINO, ++ sizeof(AUFS_WH_DR_BRHINO) - 1); ++ ++ AuDebugOn(bindex < 0 && !br); ++ AuDebugOn(bindex >= 0 && br); ++ ++ err = -EINVAL; ++ suspend = !br; ++ if (suspend) ++ br = au_sbr(sb, bindex); ++ load = !!path; ++ if (!load) { ++ path = &br->br_path; ++ AuDebugOn(!au_br_writable(br->br_perm)); ++ if (unlikely(!au_br_writable(br->br_perm))) ++ goto out; ++ } ++ ++ hdir = NULL; ++ if (suspend) { ++ dir = d_inode(sb->s_root); ++ hdir = au_hinode(au_ii(dir), bindex); ++ dir = hdir->hi_inode; ++ au_hn_inode_lock_nested(hdir, AuLsc_I_CHILD); ++ } else { ++ dir = d_inode(path->dentry); ++ inode_lock_nested(dir, AuLsc_I_CHILD); ++ } ++ hinopath.mnt = path->mnt; ++ hinopath.dentry = vfsub_lkup_one(&hinoname, (struct path *)path); ++ err = PTR_ERR(hinopath.dentry); ++ if (IS_ERR(hinopath.dentry)) ++ goto out_unlock; ++ ++ err = 0; ++ flags = O_RDONLY; ++ if (load) { ++ if (d_is_negative(hinopath.dentry)) ++ goto out_dput; /* success */ ++ } else { ++ if (au_dr_hino_test_empty(&br->br_dirren)) { ++ if (d_is_positive(hinopath.dentry)) { ++ delegated = NULL; ++ err = vfsub_unlink(dir, &hinopath, &delegated, ++ /*force*/0); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ pr_err("ignored err %d, %pd2\n", ++ err, hinopath.dentry); ++ if (unlikely(err == -EWOULDBLOCK)) ++ iput(delegated); ++ err = 0; ++ } ++ goto out_dput; ++ } else if (!d_is_positive(hinopath.dentry)) { ++ err = vfsub_create(dir, &hinopath, 0600, ++ /*want_excl*/false); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ goto out_dput; ++ } ++ flags = O_WRONLY; ++ } ++ hinofile = vfsub_dentry_open(&hinopath, flags); ++ if (suspend) ++ au_hn_inode_unlock(hdir); ++ else ++ inode_unlock(dir); ++ dput(hinopath.dentry); ++ AuTraceErrPtr(hinofile); ++ if (IS_ERR(hinofile)) { ++ err = PTR_ERR(hinofile); ++ goto out; ++ } ++ ++ if (load) ++ err = au_dr_hino_load(&br->br_dirren, hinofile); ++ else ++ err = au_dr_hino_store(sb, br, hinofile); ++ fput(hinofile); ++ goto out; ++ ++out_dput: ++ dput(hinopath.dentry); ++out_unlock: ++ if (suspend) ++ au_hn_inode_unlock(hdir); ++ else ++ inode_unlock(dir); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_dr_brid_init(struct au_dr_brid *brid, const struct path *path) ++{ ++ int err; ++ struct kstatfs kstfs; ++ dev_t dev; ++ struct dentry *dentry; ++ struct super_block *sb; ++ ++ err = vfs_statfs((void *)path, &kstfs); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ goto out; ++ ++ /* todo: support for UUID */ ++ ++ if (kstfs.f_fsid.val[0] || kstfs.f_fsid.val[1]) { ++ brid->type = AuBrid_FSID; ++ brid->fsid = kstfs.f_fsid; ++ } else { ++ dentry = path->dentry; ++ sb = dentry->d_sb; ++ dev = sb->s_dev; ++ if (dev) { ++ brid->type = AuBrid_DEV; ++ brid->dev = dev; ++ } ++ } ++ ++out: ++ return err; ++} ++ ++int au_dr_br_init(struct super_block *sb, struct au_branch *br, ++ const struct path *path) ++{ ++ int err, i; ++ struct au_dr_br *dr; ++ struct hlist_bl_head *hbl; ++ ++ dr = &br->br_dirren; ++ hbl = dr->dr_h_ino; ++ for (i = 0; i < AuDirren_NHASH; i++, hbl++) ++ INIT_HLIST_BL_HEAD(hbl); ++ ++ err = au_dr_brid_init(&dr->dr_brid, path); ++ if (unlikely(err)) ++ goto out; ++ ++ if (au_opt_test(au_mntflags(sb), DIRREN)) ++ err = au_dr_hino(sb, /*bindex*/-1, br, path); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_dr_br_fin(struct super_block *sb, struct au_branch *br) ++{ ++ int err; ++ ++ err = 0; ++ if (au_br_writable(br->br_perm)) ++ err = au_dr_hino(sb, /*bindex*/-1, br, /*path*/NULL); ++ if (!err) ++ au_dr_hino_free(&br->br_dirren); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_brid_str(struct au_dr_brid *brid, struct inode *h_inode, ++ char *buf, size_t sz) ++{ ++ int err; ++ unsigned int major, minor; ++ char *p; ++ ++ p = buf; ++ err = snprintf(p, sz, "%d_", brid->type); ++ AuDebugOn(err > sz); ++ p += err; ++ sz -= err; ++ switch (brid->type) { ++ case AuBrid_Unset: ++ return -EINVAL; ++ case AuBrid_UUID: ++ err = snprintf(p, sz, "%pU", brid->uuid.b); ++ break; ++ case AuBrid_FSID: ++ err = snprintf(p, sz, "%08x-%08x", ++ brid->fsid.val[0], brid->fsid.val[1]); ++ break; ++ case AuBrid_DEV: ++ major = MAJOR(brid->dev); ++ minor = MINOR(brid->dev); ++ if (major <= 0xff && minor <= 0xff) ++ err = snprintf(p, sz, "%02x%02x", major, minor); ++ else ++ err = snprintf(p, sz, "%03x:%05x", major, minor); ++ break; ++ } ++ AuDebugOn(err > sz); ++ p += err; ++ sz -= err; ++ err = snprintf(p, sz, "_%llu", (unsigned long long)h_inode->i_ino); ++ AuDebugOn(err > sz); ++ p += err; ++ sz -= err; ++ ++ return p - buf; ++} ++ ++static int au_drinfo_name(struct au_branch *br, char *name, int len) ++{ ++ int rlen; ++ struct dentry *br_dentry; ++ struct inode *br_inode; ++ ++ br_dentry = au_br_dentry(br); ++ br_inode = d_inode(br_dentry); ++ rlen = au_brid_str(&br->br_dirren.dr_brid, br_inode, name, len); ++ AuDebugOn(rlen >= AUFS_DIRREN_ENV_VAL_SZ); ++ AuDebugOn(rlen > len); ++ ++ return rlen; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * from the given @h_dentry, construct drinfo at @*fdata. ++ * when the size of @*fdata is not enough, reallocate and return new @fdata and ++ * @allocated. ++ */ ++static int au_drinfo_construct(struct au_drinfo_fdata **fdata, ++ struct dentry *h_dentry, ++ unsigned char *allocated) ++{ ++ int err, v; ++ struct au_drinfo_fdata *f, *p; ++ struct au_drinfo *drinfo; ++ struct inode *h_inode; ++ struct qstr *qname; ++ ++ err = 0; ++ f = *fdata; ++ h_inode = d_inode(h_dentry); ++ qname = &h_dentry->d_name; ++ drinfo = &f->drinfo; ++ drinfo->ino = (__force uint64_t)cpu_to_be64(h_inode->i_ino); ++ drinfo->oldnamelen = qname->len; ++ if (*allocated < sizeof(*f) + qname->len) { ++ v = roundup_pow_of_two(*allocated + qname->len); ++ p = au_krealloc(f, v, GFP_NOFS, /*may_shrink*/0); ++ if (unlikely(!p)) { ++ err = -ENOMEM; ++ AuTraceErr(err); ++ goto out; ++ } ++ f = p; ++ *fdata = f; ++ *allocated = v; ++ drinfo = &f->drinfo; ++ } ++ memcpy(drinfo->oldname, qname->name, qname->len); ++ AuDbg("i%llu, %.*s\n", ++ be64_to_cpu((__force __be64)drinfo->ino), drinfo->oldnamelen, ++ drinfo->oldname); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* callers have to free the return value */ ++static struct au_drinfo *au_drinfo_read_k(struct file *file, ino_t h_ino) ++{ ++ struct au_drinfo *ret, *drinfo; ++ struct au_drinfo_fdata fdata; ++ int len; ++ loff_t pos; ++ ssize_t ssz; ++ ++ ret = ERR_PTR(-EIO); ++ pos = 0; ++ ssz = vfsub_read_k(file, &fdata, sizeof(fdata), &pos); ++ if (unlikely(ssz != sizeof(fdata))) { ++ AuIOErr("ssz %zd, %u, %pD2\n", ++ ssz, (unsigned int)sizeof(fdata), file); ++ goto out; ++ } ++ ++ fdata.magic = ntohl((__force __be32)fdata.magic); ++ switch (fdata.magic) { ++ case AUFS_DRINFO_MAGIC_V1: ++ break; ++ default: ++ AuIOErr("magic-num 0x%x, 0x%x, %pD2\n", ++ fdata.magic, AUFS_DRINFO_MAGIC_V1, file); ++ goto out; ++ } ++ ++ drinfo = &fdata.drinfo; ++ len = drinfo->oldnamelen; ++ if (!len) { ++ AuIOErr("broken drinfo %pD2\n", file); ++ goto out; ++ } ++ ++ ret = NULL; ++ drinfo->ino = be64_to_cpu((__force __be64)drinfo->ino); ++ if (unlikely(h_ino && drinfo->ino != h_ino)) { ++ AuDbg("ignored i%llu, i%llu, %pD2\n", ++ (unsigned long long)drinfo->ino, ++ (unsigned long long)h_ino, file); ++ goto out; /* success */ ++ } ++ ++ ret = kmalloc(sizeof(*ret) + len, GFP_NOFS); ++ if (unlikely(!ret)) { ++ ret = ERR_PTR(-ENOMEM); ++ AuTraceErrPtr(ret); ++ goto out; ++ } ++ ++ *ret = *drinfo; ++ ssz = vfsub_read_k(file, (void *)ret->oldname, len, &pos); ++ if (unlikely(ssz != len)) { ++ au_kfree_rcu(ret); ++ ret = ERR_PTR(-EIO); ++ AuIOErr("ssz %zd, %u, %pD2\n", ssz, len, file); ++ goto out; ++ } ++ ++ AuDbg("oldname %.*s\n", ret->oldnamelen, ret->oldname); ++ ++out: ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* in order to be revertible */ ++struct au_drinfo_rev_elm { ++ int created; ++ struct dentry *info_dentry; ++ struct au_drinfo *info_last; ++}; ++ ++struct au_drinfo_rev { ++ unsigned char already; ++ aufs_bindex_t nelm; ++ struct au_drinfo_rev_elm elm[]; ++}; ++ ++/* todo: isn't it too large? */ ++struct au_drinfo_store { ++ struct path h_ppath; ++ struct dentry *h_dentry; ++ struct au_drinfo_fdata *fdata; ++ char *infoname; /* inside of whname, just after PFX */ ++ char whname[sizeof(AUFS_WH_DR_INFO_PFX) + AUFS_DIRREN_ENV_VAL_SZ]; ++ aufs_bindex_t btgt, btail; ++ unsigned char no_sio, ++ allocated, /* current size of *fdata */ ++ infonamelen, /* room size for p */ ++ whnamelen, /* length of the generated name */ ++ renameback; /* renamed back */ ++}; ++ ++/* on rename(2) error, the caller should revert it using @elm */ ++static int au_drinfo_do_store(struct au_drinfo_store *w, ++ struct au_drinfo_rev_elm *elm) ++{ ++ int err, len; ++ ssize_t ssz; ++ loff_t pos; ++ struct path infopath = { ++ .mnt = w->h_ppath.mnt ++ }; ++ struct inode *h_dir, *h_inode, *delegated; ++ struct file *infofile; ++ struct qstr *qname; ++ ++ AuDebugOn(elm ++ && memcmp(elm, page_address(ZERO_PAGE(0)), sizeof(*elm))); ++ ++ infopath.dentry = vfsub_lookup_one_len(w->whname, &w->h_ppath, ++ w->whnamelen); ++ AuTraceErrPtr(infopath.dentry); ++ if (IS_ERR(infopath.dentry)) { ++ err = PTR_ERR(infopath.dentry); ++ goto out; ++ } ++ ++ err = 0; ++ h_dir = d_inode(w->h_ppath.dentry); ++ if (elm && d_is_negative(infopath.dentry)) { ++ err = vfsub_create(h_dir, &infopath, 0600, /*want_excl*/true); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ goto out_dput; ++ elm->created = 1; ++ elm->info_dentry = dget(infopath.dentry); ++ } ++ ++ infofile = vfsub_dentry_open(&infopath, O_RDWR); ++ AuTraceErrPtr(infofile); ++ if (IS_ERR(infofile)) { ++ err = PTR_ERR(infofile); ++ goto out_dput; ++ } ++ ++ h_inode = d_inode(infopath.dentry); ++ if (elm && i_size_read(h_inode)) { ++ h_inode = d_inode(w->h_dentry); ++ elm->info_last = au_drinfo_read_k(infofile, h_inode->i_ino); ++ AuTraceErrPtr(elm->info_last); ++ if (IS_ERR(elm->info_last)) { ++ err = PTR_ERR(elm->info_last); ++ elm->info_last = NULL; ++ AuDebugOn(elm->info_dentry); ++ goto out_fput; ++ } ++ } ++ ++ if (elm && w->renameback) { ++ delegated = NULL; ++ err = vfsub_unlink(h_dir, &infopath, &delegated, /*force*/0); ++ AuTraceErr(err); ++ if (unlikely(err == -EWOULDBLOCK)) ++ iput(delegated); ++ goto out_fput; ++ } ++ ++ pos = 0; ++ qname = &w->h_dentry->d_name; ++ len = sizeof(*w->fdata) + qname->len; ++ if (!elm) ++ len = sizeof(*w->fdata) + w->fdata->drinfo.oldnamelen; ++ ssz = vfsub_write_k(infofile, w->fdata, len, &pos); ++ if (ssz == len) { ++ AuDbg("hi%llu, %.*s\n", w->fdata->drinfo.ino, ++ w->fdata->drinfo.oldnamelen, w->fdata->drinfo.oldname); ++ goto out_fput; /* success */ ++ } else { ++ err = -EIO; ++ if (ssz < 0) ++ err = ssz; ++ /* the caller should revert it using @elm */ ++ } ++ ++out_fput: ++ fput(infofile); ++out_dput: ++ dput(infopath.dentry); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++struct au_call_drinfo_do_store_args { ++ int *errp; ++ struct au_drinfo_store *w; ++ struct au_drinfo_rev_elm *elm; ++}; ++ ++static void au_call_drinfo_do_store(void *args) ++{ ++ struct au_call_drinfo_do_store_args *a = args; ++ ++ *a->errp = au_drinfo_do_store(a->w, a->elm); ++} ++ ++static int au_drinfo_store_sio(struct au_drinfo_store *w, ++ struct au_drinfo_rev_elm *elm) ++{ ++ int err, wkq_err; ++ ++ if (w->no_sio) ++ err = au_drinfo_do_store(w, elm); ++ else { ++ struct au_call_drinfo_do_store_args a = { ++ .errp = &err, ++ .w = w, ++ .elm = elm ++ }; ++ wkq_err = au_wkq_wait(au_call_drinfo_do_store, &a); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ AuTraceErr(err); ++ ++ return err; ++} ++ ++static int au_drinfo_store_work_init(struct au_drinfo_store *w, ++ aufs_bindex_t btgt) ++{ ++ int err; ++ ++ memset(w, 0, sizeof(*w)); ++ w->allocated = roundup_pow_of_two(sizeof(*w->fdata) + 40); ++ strcpy(w->whname, AUFS_WH_DR_INFO_PFX); ++ w->infoname = w->whname + sizeof(AUFS_WH_DR_INFO_PFX) - 1; ++ w->infonamelen = sizeof(w->whname) - sizeof(AUFS_WH_DR_INFO_PFX); ++ w->btgt = btgt; ++ w->no_sio = !!uid_eq(current_fsuid(), GLOBAL_ROOT_UID); ++ ++ err = -ENOMEM; ++ w->fdata = kcalloc(1, w->allocated, GFP_NOFS); ++ if (unlikely(!w->fdata)) { ++ AuTraceErr(err); ++ goto out; ++ } ++ w->fdata->magic = (__force uint32_t)htonl(AUFS_DRINFO_MAGIC_V1); ++ err = 0; ++ ++out: ++ return err; ++} ++ ++static void au_drinfo_store_work_fin(struct au_drinfo_store *w) ++{ ++ au_kfree_rcu(w->fdata); ++} ++ ++static void au_drinfo_store_rev(struct au_drinfo_rev *rev, ++ struct au_drinfo_store *w) ++{ ++ struct au_drinfo_rev_elm *elm; ++ struct inode *h_dir, *delegated; ++ int err, nelm; ++ struct path infopath = { ++ .mnt = w->h_ppath.mnt ++ }; ++ ++ h_dir = d_inode(w->h_ppath.dentry); ++ IMustLock(h_dir); ++ ++ err = 0; ++ elm = rev->elm; ++ for (nelm = rev->nelm; nelm > 0; nelm--, elm++) { ++ AuDebugOn(elm->created && elm->info_last); ++ if (elm->created) { ++ AuDbg("here\n"); ++ delegated = NULL; ++ infopath.dentry = elm->info_dentry; ++ err = vfsub_unlink(h_dir, &infopath, &delegated, ++ !w->no_sio); ++ AuTraceErr(err); ++ if (unlikely(err == -EWOULDBLOCK)) ++ iput(delegated); ++ dput(elm->info_dentry); ++ } else if (elm->info_last) { ++ AuDbg("here\n"); ++ w->fdata->drinfo = *elm->info_last; ++ memcpy(w->fdata->drinfo.oldname, ++ elm->info_last->oldname, ++ elm->info_last->oldnamelen); ++ err = au_drinfo_store_sio(w, /*elm*/NULL); ++ au_kfree_rcu(elm->info_last); ++ } ++ if (unlikely(err)) ++ AuIOErr("%d, %s\n", err, w->whname); ++ /* go on even if err */ ++ } ++} ++ ++/* caller has to call au_dr_rename_fin() later */ ++static int au_drinfo_store(struct dentry *dentry, aufs_bindex_t btgt, ++ struct qstr *dst_name, void *_rev) ++{ ++ int err, sz, nelm; ++ aufs_bindex_t bindex, btail; ++ struct au_drinfo_store work; ++ struct au_drinfo_rev *rev, **p; ++ struct au_drinfo_rev_elm *elm; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_hinode *hdir; ++ ++ err = au_drinfo_store_work_init(&work, btgt); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ goto out; ++ ++ err = -ENOMEM; ++ btail = au_dbtaildir(dentry); ++ nelm = btail - btgt; ++ sz = sizeof(*rev) + sizeof(*elm) * nelm; ++ rev = kcalloc(1, sz, GFP_NOFS); ++ if (unlikely(!rev)) { ++ AuTraceErr(err); ++ goto out_args; ++ } ++ rev->nelm = nelm; ++ elm = rev->elm; ++ p = _rev; ++ *p = rev; ++ ++ err = 0; ++ sb = dentry->d_sb; ++ work.h_ppath.dentry = au_h_dptr(dentry, btgt); ++ work.h_ppath.mnt = au_sbr_mnt(sb, btgt); ++ hdir = au_hi(d_inode(dentry), btgt); ++ au_hn_inode_lock_nested(hdir, AuLsc_I_CHILD); ++ for (bindex = btgt + 1; bindex <= btail; bindex++, elm++) { ++ work.h_dentry = au_h_dptr(dentry, bindex); ++ if (!work.h_dentry) ++ continue; ++ ++ err = au_drinfo_construct(&work.fdata, work.h_dentry, ++ &work.allocated); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ break; ++ ++ work.renameback = au_qstreq(&work.h_dentry->d_name, dst_name); ++ br = au_sbr(sb, bindex); ++ work.whnamelen = sizeof(AUFS_WH_DR_INFO_PFX) - 1; ++ work.whnamelen += au_drinfo_name(br, work.infoname, ++ work.infonamelen); ++ AuDbg("whname %.*s, i%llu, %.*s\n", ++ work.whnamelen, work.whname, ++ be64_to_cpu((__force __be64)work.fdata->drinfo.ino), ++ work.fdata->drinfo.oldnamelen, ++ work.fdata->drinfo.oldname); ++ ++ err = au_drinfo_store_sio(&work, elm); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ break; ++ } ++ if (unlikely(err)) { ++ /* revert all drinfo */ ++ au_drinfo_store_rev(rev, &work); ++ au_kfree_try_rcu(rev); ++ *p = NULL; ++ } ++ au_hn_inode_unlock(hdir); ++ ++out_args: ++ au_drinfo_store_work_fin(&work); ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_dr_rename(struct dentry *src, aufs_bindex_t bindex, ++ struct qstr *dst_name, void *_rev) ++{ ++ int err, already; ++ ino_t ino; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_dr_br *dr; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct au_dr_hino *ent; ++ struct au_drinfo_rev *rev, **p; ++ ++ AuDbg("bindex %d\n", bindex); ++ ++ err = -ENOMEM; ++ ent = kmalloc(sizeof(*ent), GFP_NOFS); ++ if (unlikely(!ent)) ++ goto out; ++ ++ sb = src->d_sb; ++ br = au_sbr(sb, bindex); ++ dr = &br->br_dirren; ++ h_dentry = au_h_dptr(src, bindex); ++ h_inode = d_inode(h_dentry); ++ ino = h_inode->i_ino; ++ ent->dr_h_ino = ino; ++ already = au_dr_hino_test_add(dr, ino, ent); ++ AuDbg("b%d, hi%llu, already %d\n", ++ bindex, (unsigned long long)ino, already); ++ ++ err = au_drinfo_store(src, bindex, dst_name, _rev); ++ AuTraceErr(err); ++ if (!err) { ++ p = _rev; ++ rev = *p; ++ rev->already = already; ++ goto out; /* success */ ++ } ++ ++ /* revert */ ++ if (!already) ++ au_dr_hino_del(dr, ent); ++ au_kfree_rcu(ent); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_dr_rename_fin(struct dentry *src, aufs_bindex_t btgt, void *_rev) ++{ ++ struct au_drinfo_rev *rev; ++ struct au_drinfo_rev_elm *elm; ++ int nelm; ++ ++ rev = _rev; ++ elm = rev->elm; ++ for (nelm = rev->nelm; nelm > 0; nelm--, elm++) { ++ dput(elm->info_dentry); ++ au_kfree_rcu(elm->info_last); ++ } ++ au_kfree_try_rcu(rev); ++} ++ ++void au_dr_rename_rev(struct dentry *src, aufs_bindex_t btgt, void *_rev) ++{ ++ int err; ++ struct au_drinfo_store work; ++ struct au_drinfo_rev *rev = _rev; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct inode *h_inode; ++ struct au_dr_br *dr; ++ struct au_dr_hino *ent; ++ ++ err = au_drinfo_store_work_init(&work, btgt); ++ if (unlikely(err)) ++ goto out; ++ ++ sb = src->d_sb; ++ br = au_sbr(sb, btgt); ++ work.h_ppath.dentry = au_h_dptr(src, btgt); ++ work.h_ppath.mnt = au_br_mnt(br); ++ au_drinfo_store_rev(rev, &work); ++ au_drinfo_store_work_fin(&work); ++ if (rev->already) ++ goto out; ++ ++ dr = &br->br_dirren; ++ h_inode = d_inode(work.h_ppath.dentry); ++ ent = au_dr_hino_find(dr, h_inode->i_ino); ++ BUG_ON(!ent); ++ au_dr_hino_del(dr, ent); ++ au_kfree_rcu(ent); ++ ++out: ++ au_kfree_try_rcu(rev); ++ if (unlikely(err)) ++ pr_err("failed to remove dirren info\n"); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct au_drinfo *au_drinfo_do_load(struct path *h_ppath, ++ char *whname, int whnamelen, ++ struct dentry **info_dentry) ++{ ++ struct au_drinfo *drinfo; ++ struct file *f; ++ struct inode *h_dir; ++ struct path infopath; ++ int unlocked; ++ ++ AuDbg("%pd/%.*s\n", h_ppath->dentry, whnamelen, whname); ++ ++ *info_dentry = NULL; ++ drinfo = NULL; ++ unlocked = 0; ++ h_dir = d_inode(h_ppath->dentry); ++ inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); ++ infopath.dentry = vfsub_lookup_one_len(whname, h_ppath, whnamelen); ++ if (IS_ERR(infopath.dentry)) { ++ drinfo = (void *)infopath.dentry; ++ goto out; ++ } ++ ++ if (d_is_negative(infopath.dentry)) ++ goto out_dput; /* success */ ++ ++ infopath.mnt = h_ppath->mnt; ++ f = vfsub_dentry_open(&infopath, O_RDONLY); ++ inode_unlock_shared(h_dir); ++ unlocked = 1; ++ if (IS_ERR(f)) { ++ drinfo = (void *)f; ++ goto out_dput; ++ } ++ ++ drinfo = au_drinfo_read_k(f, /*h_ino*/0); ++ if (IS_ERR_OR_NULL(drinfo)) ++ goto out_fput; ++ ++ AuDbg("oldname %.*s\n", drinfo->oldnamelen, drinfo->oldname); ++ *info_dentry = dget(infopath.dentry); /* keep it alive */ ++ ++out_fput: ++ fput(f); ++out_dput: ++ dput(infopath.dentry); ++out: ++ if (!unlocked) ++ inode_unlock_shared(h_dir); ++ AuTraceErrPtr(drinfo); ++ return drinfo; ++} ++ ++struct au_drinfo_do_load_args { ++ struct au_drinfo **drinfop; ++ struct path *h_ppath; ++ char *whname; ++ int whnamelen; ++ struct dentry **info_dentry; ++}; ++ ++static void au_call_drinfo_do_load(void *args) ++{ ++ struct au_drinfo_do_load_args *a = args; ++ ++ *a->drinfop = au_drinfo_do_load(a->h_ppath, a->whname, a->whnamelen, ++ a->info_dentry); ++} ++ ++struct au_drinfo_load { ++ struct path h_ppath; ++ struct qstr *qname; ++ unsigned char no_sio; ++ ++ aufs_bindex_t ninfo; ++ struct au_drinfo **drinfo; ++}; ++ ++static int au_drinfo_load(struct au_drinfo_load *w, aufs_bindex_t bindex, ++ struct au_branch *br) ++{ ++ int err, wkq_err, whnamelen, e; ++ char whname[sizeof(AUFS_WH_DR_INFO_PFX) + AUFS_DIRREN_ENV_VAL_SZ] ++ = AUFS_WH_DR_INFO_PFX; ++ struct au_drinfo *drinfo; ++ struct qstr oldname; ++ struct inode *h_dir, *delegated; ++ struct dentry *info_dentry; ++ struct path infopath; ++ ++ whnamelen = sizeof(AUFS_WH_DR_INFO_PFX) - 1; ++ whnamelen += au_drinfo_name(br, whname + whnamelen, ++ sizeof(whname) - whnamelen); ++ if (w->no_sio) ++ drinfo = au_drinfo_do_load(&w->h_ppath, whname, whnamelen, ++ &info_dentry); ++ else { ++ struct au_drinfo_do_load_args args = { ++ .drinfop = &drinfo, ++ .h_ppath = &w->h_ppath, ++ .whname = whname, ++ .whnamelen = whnamelen, ++ .info_dentry = &info_dentry ++ }; ++ wkq_err = au_wkq_wait(au_call_drinfo_do_load, &args); ++ if (unlikely(wkq_err)) ++ drinfo = ERR_PTR(wkq_err); ++ } ++ err = PTR_ERR(drinfo); ++ if (IS_ERR_OR_NULL(drinfo)) ++ goto out; ++ ++ err = 0; ++ oldname.len = drinfo->oldnamelen; ++ oldname.name = drinfo->oldname; ++ if (au_qstreq(w->qname, &oldname)) { ++ /* the name is renamed back */ ++ au_kfree_rcu(drinfo); ++ drinfo = NULL; ++ ++ infopath.dentry = info_dentry; ++ infopath.mnt = w->h_ppath.mnt; ++ h_dir = d_inode(w->h_ppath.dentry); ++ delegated = NULL; ++ inode_lock_nested(h_dir, AuLsc_I_PARENT); ++ e = vfsub_unlink(h_dir, &infopath, &delegated, !w->no_sio); ++ inode_unlock(h_dir); ++ if (unlikely(e)) ++ AuIOErr("ignored %d, %pd2\n", e, &infopath.dentry); ++ if (unlikely(e == -EWOULDBLOCK)) ++ iput(delegated); ++ } ++ au_kfree_rcu(w->drinfo[bindex]); ++ w->drinfo[bindex] = drinfo; ++ dput(info_dentry); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_dr_lkup_free(struct au_drinfo **drinfo, int n) ++{ ++ struct au_drinfo **p = drinfo; ++ ++ while (n-- > 0) ++ au_kfree_rcu(*drinfo++); ++ au_kfree_try_rcu(p); ++} ++ ++int au_dr_lkup(struct au_do_lookup_args *lkup, struct dentry *dentry, ++ aufs_bindex_t btgt) ++{ ++ int err, ninfo; ++ struct au_drinfo_load w; ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ struct inode *h_dir; ++ struct au_dr_hino *ent; ++ struct super_block *sb; ++ ++ AuDbg("%.*s, name %.*s, whname %.*s, b%d\n", ++ AuLNPair(&dentry->d_name), AuLNPair(&lkup->dirren.dr_name), ++ AuLNPair(&lkup->whname), btgt); ++ ++ sb = dentry->d_sb; ++ bbot = au_sbbot(sb); ++ w.ninfo = bbot + 1; ++ if (!lkup->dirren.drinfo) { ++ lkup->dirren.drinfo = kcalloc(w.ninfo, ++ sizeof(*lkup->dirren.drinfo), ++ GFP_NOFS); ++ if (unlikely(!lkup->dirren.drinfo)) { ++ err = -ENOMEM; ++ goto out; ++ } ++ lkup->dirren.ninfo = w.ninfo; ++ } ++ w.drinfo = lkup->dirren.drinfo; ++ w.no_sio = !!uid_eq(current_fsuid(), GLOBAL_ROOT_UID); ++ w.h_ppath.dentry = au_h_dptr(dentry, btgt); ++ AuDebugOn(!w.h_ppath.dentry); ++ w.h_ppath.mnt = au_sbr_mnt(sb, btgt); ++ w.qname = &dentry->d_name; ++ ++ ninfo = 0; ++ for (bindex = btgt + 1; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ err = au_drinfo_load(&w, bindex, br); ++ if (unlikely(err)) ++ goto out_free; ++ if (w.drinfo[bindex]) ++ ninfo++; ++ } ++ if (!ninfo) { ++ br = au_sbr(sb, btgt); ++ h_dir = d_inode(w.h_ppath.dentry); ++ ent = au_dr_hino_find(&br->br_dirren, h_dir->i_ino); ++ AuDebugOn(!ent); ++ au_dr_hino_del(&br->br_dirren, ent); ++ au_kfree_rcu(ent); ++ } ++ goto out; /* success */ ++ ++out_free: ++ au_dr_lkup_free(lkup->dirren.drinfo, lkup->dirren.ninfo); ++ lkup->dirren.ninfo = 0; ++ lkup->dirren.drinfo = NULL; ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_dr_lkup_fin(struct au_do_lookup_args *lkup) ++{ ++ au_dr_lkup_free(lkup->dirren.drinfo, lkup->dirren.ninfo); ++} ++ ++int au_dr_lkup_name(struct au_do_lookup_args *lkup, aufs_bindex_t btgt) ++{ ++ int err; ++ struct au_drinfo *drinfo; ++ ++ err = 0; ++ if (!lkup->dirren.drinfo) ++ goto out; ++ AuDebugOn(lkup->dirren.ninfo <= btgt); ++ drinfo = lkup->dirren.drinfo[btgt]; ++ if (!drinfo) ++ goto out; ++ ++ au_kfree_try_rcu(lkup->whname.name); ++ lkup->whname.name = NULL; ++ lkup->dirren.dr_name.len = drinfo->oldnamelen; ++ lkup->dirren.dr_name.name = drinfo->oldname; ++ lkup->name = &lkup->dirren.dr_name; ++ err = au_wh_name_alloc(&lkup->whname, lkup->name); ++ if (!err) ++ AuDbg("name %.*s, whname %.*s, b%d\n", ++ AuLNPair(lkup->name), AuLNPair(&lkup->whname), ++ btgt); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_dr_lkup_h_ino(struct au_do_lookup_args *lkup, aufs_bindex_t bindex, ++ ino_t h_ino) ++{ ++ int match; ++ struct au_drinfo *drinfo; ++ ++ match = 1; ++ if (!lkup->dirren.drinfo) ++ goto out; ++ AuDebugOn(lkup->dirren.ninfo <= bindex); ++ drinfo = lkup->dirren.drinfo[bindex]; ++ if (!drinfo) ++ goto out; ++ ++ match = (drinfo->ino == h_ino); ++ AuDbg("match %d\n", match); ++ ++out: ++ return match; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_dr_opt_set(struct super_block *sb) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ ++ err = 0; ++ bbot = au_sbbot(sb); ++ for (bindex = 0; !err && bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ err = au_dr_hino(sb, bindex, /*br*/NULL, &br->br_path); ++ } ++ ++ return err; ++} ++ ++int au_dr_opt_flush(struct super_block *sb) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ ++ err = 0; ++ bbot = au_sbbot(sb); ++ for (bindex = 0; !err && bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_writable(br->br_perm)) ++ err = au_dr_hino(sb, bindex, /*br*/NULL, /*path*/NULL); ++ } ++ ++ return err; ++} ++ ++int au_dr_opt_clr(struct super_block *sb, int no_flush) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ ++ err = 0; ++ if (!no_flush) { ++ err = au_dr_opt_flush(sb); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ au_dr_hino_free(&br->br_dirren); ++ } ++ ++out: ++ return err; ++} +diff -Naur null/fs/aufs/dirren.h linux-5.15.36/fs/aufs/dirren.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/dirren.h 2022-05-10 16:51:39.869744219 +0300 +@@ -0,0 +1,140 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2017-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * renamed dir info ++ */ ++ ++#ifndef __AUFS_DIRREN_H__ ++#define __AUFS_DIRREN_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++#include "hbl.h" ++ ++#define AuDirren_NHASH 100 ++ ++#ifdef CONFIG_AUFS_DIRREN ++enum au_brid_type { ++ AuBrid_Unset, ++ AuBrid_UUID, ++ AuBrid_FSID, ++ AuBrid_DEV ++}; ++ ++struct au_dr_brid { ++ enum au_brid_type type; ++ union { ++ uuid_t uuid; /* unimplemented yet */ ++ fsid_t fsid; ++ dev_t dev; ++ }; ++}; ++ ++/* 20 is the max digits length of ulong 64 */ ++/* brid-type "_" uuid "_" inum */ ++#define AUFS_DIRREN_FNAME_SZ (1 + 1 + UUID_STRING_LEN + 20) ++#define AUFS_DIRREN_ENV_VAL_SZ (AUFS_DIRREN_FNAME_SZ + 1 + 20) ++ ++struct au_dr_hino { ++ struct hlist_bl_node dr_hnode; ++ ino_t dr_h_ino; ++}; ++ ++struct au_dr_br { ++ struct hlist_bl_head dr_h_ino[AuDirren_NHASH]; ++ struct au_dr_brid dr_brid; ++}; ++ ++struct au_dr_lookup { ++ /* dr_name is pointed by struct au_do_lookup_args.name */ ++ struct qstr dr_name; /* subset of dr_info */ ++ aufs_bindex_t ninfo; ++ struct au_drinfo **drinfo; ++}; ++#else ++struct au_dr_hino; ++/* empty */ ++struct au_dr_br { }; ++struct au_dr_lookup { }; ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_branch; ++struct au_do_lookup_args; ++struct au_hinode; ++#ifdef CONFIG_AUFS_DIRREN ++int au_dr_hino_test_add(struct au_dr_br *dr, ino_t h_ino, ++ struct au_dr_hino *add_ent); ++void au_dr_hino_free(struct au_dr_br *dr); ++int au_dr_br_init(struct super_block *sb, struct au_branch *br, ++ const struct path *path); ++int au_dr_br_fin(struct super_block *sb, struct au_branch *br); ++int au_dr_rename(struct dentry *src, aufs_bindex_t bindex, ++ struct qstr *dst_name, void *_rev); ++void au_dr_rename_fin(struct dentry *src, aufs_bindex_t btgt, void *rev); ++void au_dr_rename_rev(struct dentry *src, aufs_bindex_t bindex, void *rev); ++int au_dr_lkup(struct au_do_lookup_args *lkup, struct dentry *dentry, ++ aufs_bindex_t bindex); ++int au_dr_lkup_name(struct au_do_lookup_args *lkup, aufs_bindex_t btgt); ++int au_dr_lkup_h_ino(struct au_do_lookup_args *lkup, aufs_bindex_t bindex, ++ ino_t h_ino); ++void au_dr_lkup_fin(struct au_do_lookup_args *lkup); ++int au_dr_opt_set(struct super_block *sb); ++int au_dr_opt_flush(struct super_block *sb); ++int au_dr_opt_clr(struct super_block *sb, int no_flush); ++#else ++AuStubInt0(au_dr_hino_test_add, struct au_dr_br *dr, ino_t h_ino, ++ struct au_dr_hino *add_ent); ++AuStubVoid(au_dr_hino_free, struct au_dr_br *dr); ++AuStubInt0(au_dr_br_init, struct super_block *sb, struct au_branch *br, ++ const struct path *path); ++AuStubInt0(au_dr_br_fin, struct super_block *sb, struct au_branch *br); ++AuStubInt0(au_dr_rename, struct dentry *src, aufs_bindex_t bindex, ++ struct qstr *dst_name, void *_rev); ++AuStubVoid(au_dr_rename_fin, struct dentry *src, aufs_bindex_t btgt, void *rev); ++AuStubVoid(au_dr_rename_rev, struct dentry *src, aufs_bindex_t bindex, ++ void *rev); ++AuStubInt0(au_dr_lkup, struct au_do_lookup_args *lkup, struct dentry *dentry, ++ aufs_bindex_t bindex); ++AuStubInt0(au_dr_lkup_name, struct au_do_lookup_args *lkup, aufs_bindex_t btgt); ++AuStubInt0(au_dr_lkup_h_ino, struct au_do_lookup_args *lkup, ++ aufs_bindex_t bindex, ino_t h_ino); ++AuStubVoid(au_dr_lkup_fin, struct au_do_lookup_args *lkup); ++AuStubInt0(au_dr_opt_set, struct super_block *sb); ++AuStubInt0(au_dr_opt_flush, struct super_block *sb); ++AuStubInt0(au_dr_opt_clr, struct super_block *sb, int no_flush); ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_DIRREN ++static inline int au_dr_ihash(ino_t h_ino) ++{ ++ return h_ino % AuDirren_NHASH; ++} ++#else ++AuStubInt0(au_dr_ihash, ino_t h_ino); ++#endif ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_DIRREN_H__ */ +diff -Naur null/fs/aufs/dynop.c linux-5.15.36/fs/aufs/dynop.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/dynop.c 2022-05-10 16:51:39.869744219 +0300 +@@ -0,0 +1,368 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * dynamically customizable operations for regular files ++ */ ++ ++#include "aufs.h" ++ ++#define DyPrSym(key) AuDbgSym(key->dk_op.dy_hop) ++ ++/* ++ * How large will these lists be? ++ * Usually just a few elements, 20-30 at most for each, I guess. ++ */ ++static struct hlist_bl_head dynop[AuDyLast]; ++ ++static struct au_dykey *dy_gfind_get(struct hlist_bl_head *hbl, ++ const void *h_op) ++{ ++ struct au_dykey *key, *tmp; ++ struct hlist_bl_node *pos; ++ ++ key = NULL; ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(tmp, pos, hbl, dk_hnode) ++ if (tmp->dk_op.dy_hop == h_op) { ++ if (kref_get_unless_zero(&tmp->dk_kref)) ++ key = tmp; ++ break; ++ } ++ hlist_bl_unlock(hbl); ++ ++ return key; ++} ++ ++static struct au_dykey *dy_bradd(struct au_branch *br, struct au_dykey *key) ++{ ++ struct au_dykey **k, *found; ++ const void *h_op = key->dk_op.dy_hop; ++ int i; ++ ++ found = NULL; ++ k = br->br_dykey; ++ for (i = 0; i < AuBrDynOp; i++) ++ if (k[i]) { ++ if (k[i]->dk_op.dy_hop == h_op) { ++ found = k[i]; ++ break; ++ } ++ } else ++ break; ++ if (!found) { ++ spin_lock(&br->br_dykey_lock); ++ for (; i < AuBrDynOp; i++) ++ if (k[i]) { ++ if (k[i]->dk_op.dy_hop == h_op) { ++ found = k[i]; ++ break; ++ } ++ } else { ++ k[i] = key; ++ break; ++ } ++ spin_unlock(&br->br_dykey_lock); ++ BUG_ON(i == AuBrDynOp); /* expand the array */ ++ } ++ ++ return found; ++} ++ ++/* kref_get() if @key is already added */ ++static struct au_dykey *dy_gadd(struct hlist_bl_head *hbl, struct au_dykey *key) ++{ ++ struct au_dykey *tmp, *found; ++ struct hlist_bl_node *pos; ++ const void *h_op = key->dk_op.dy_hop; ++ ++ found = NULL; ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(tmp, pos, hbl, dk_hnode) ++ if (tmp->dk_op.dy_hop == h_op) { ++ if (kref_get_unless_zero(&tmp->dk_kref)) ++ found = tmp; ++ break; ++ } ++ if (!found) ++ hlist_bl_add_head(&key->dk_hnode, hbl); ++ hlist_bl_unlock(hbl); ++ ++ if (!found) ++ DyPrSym(key); ++ return found; ++} ++ ++static void dy_free_rcu(struct rcu_head *rcu) ++{ ++ struct au_dykey *key; ++ ++ key = container_of(rcu, struct au_dykey, dk_rcu); ++ DyPrSym(key); ++ kfree(key); ++} ++ ++static void dy_free(struct kref *kref) ++{ ++ struct au_dykey *key; ++ struct hlist_bl_head *hbl; ++ ++ key = container_of(kref, struct au_dykey, dk_kref); ++ hbl = dynop + key->dk_op.dy_type; ++ au_hbl_del(&key->dk_hnode, hbl); ++ call_rcu(&key->dk_rcu, dy_free_rcu); ++} ++ ++void au_dy_put(struct au_dykey *key) ++{ ++ kref_put(&key->dk_kref, dy_free); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define DyDbgSize(cnt, op) AuDebugOn(cnt != sizeof(op)/sizeof(void *)) ++ ++#ifdef CONFIG_AUFS_DEBUG ++#define DyDbgDeclare(cnt) unsigned int cnt = 0 ++#define DyDbgInc(cnt) do { cnt++; } while (0) ++#else ++#define DyDbgDeclare(cnt) do {} while (0) ++#define DyDbgInc(cnt) do {} while (0) ++#endif ++ ++#define DySet(func, dst, src, h_op, h_sb) do { \ ++ DyDbgInc(cnt); \ ++ if (h_op->func) { \ ++ if (src.func) \ ++ dst.func = src.func; \ ++ else \ ++ AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ ++ } \ ++} while (0) ++ ++#define DySetForce(func, dst, src) do { \ ++ AuDebugOn(!src.func); \ ++ DyDbgInc(cnt); \ ++ dst.func = src.func; \ ++} while (0) ++ ++#define DySetAop(func) \ ++ DySet(func, dyaop->da_op, aufs_aop, h_aop, h_sb) ++#define DySetAopForce(func) \ ++ DySetForce(func, dyaop->da_op, aufs_aop) ++ ++static void dy_aop(struct au_dykey *key, const void *h_op, ++ struct super_block *h_sb __maybe_unused) ++{ ++ struct au_dyaop *dyaop = (void *)key; ++ const struct address_space_operations *h_aop = h_op; ++ DyDbgDeclare(cnt); ++ ++ AuDbg("%s\n", au_sbtype(h_sb)); ++ ++ DySetAop(writepage); ++ DySetAopForce(readpage); /* force */ ++ DySetAop(writepages); ++ DySetAop(set_page_dirty); ++ DySetAop(readpages); ++ DySetAop(readahead); ++ DySetAop(write_begin); ++ DySetAop(write_end); ++ DySetAop(bmap); ++ DySetAop(invalidatepage); ++ DySetAop(releasepage); ++ DySetAop(freepage); ++ /* this one will be changed according to an aufs mount option */ ++ DySetAop(direct_IO); ++ DySetAop(migratepage); ++ DySetAop(isolate_page); ++ DySetAop(putback_page); ++ DySetAop(launder_page); ++ DySetAop(is_partially_uptodate); ++ DySetAop(is_dirty_writeback); ++ DySetAop(error_remove_page); ++ DySetAop(swap_activate); ++ DySetAop(swap_deactivate); ++ ++ DyDbgSize(cnt, *h_aop); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void dy_bug(struct kref *kref) ++{ ++ BUG(); ++} ++ ++static struct au_dykey *dy_get(struct au_dynop *op, struct au_branch *br) ++{ ++ struct au_dykey *key, *old; ++ struct hlist_bl_head *hbl; ++ struct op { ++ unsigned int sz; ++ void (*set)(struct au_dykey *key, const void *h_op, ++ struct super_block *h_sb __maybe_unused); ++ }; ++ static const struct op a[] = { ++ [AuDy_AOP] = { ++ .sz = sizeof(struct au_dyaop), ++ .set = dy_aop ++ } ++ }; ++ const struct op *p; ++ ++ hbl = dynop + op->dy_type; ++ key = dy_gfind_get(hbl, op->dy_hop); ++ if (key) ++ goto out_add; /* success */ ++ ++ p = a + op->dy_type; ++ key = kzalloc(p->sz, GFP_NOFS); ++ if (unlikely(!key)) { ++ key = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ key->dk_op.dy_hop = op->dy_hop; ++ kref_init(&key->dk_kref); ++ p->set(key, op->dy_hop, au_br_sb(br)); ++ old = dy_gadd(hbl, key); ++ if (old) { ++ au_kfree_rcu(key); ++ key = old; ++ } ++ ++out_add: ++ old = dy_bradd(br, key); ++ if (old) ++ /* its ref-count should never be zero here */ ++ kref_put(&key->dk_kref, dy_bug); ++out: ++ return key; ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * Aufs prohibits O_DIRECT by default even if the branch supports it. ++ * This behaviour is necessary to return an error from open(O_DIRECT) instead ++ * of the succeeding I/O. The dio mount option enables O_DIRECT and makes ++ * open(O_DIRECT) always succeed, but the succeeding I/O may return an error. ++ * See the aufs manual in detail. ++ */ ++static void dy_adx(struct au_dyaop *dyaop, int do_dx) ++{ ++ if (!do_dx) ++ dyaop->da_op.direct_IO = NULL; ++ else ++ dyaop->da_op.direct_IO = aufs_aop.direct_IO; ++} ++ ++static struct au_dyaop *dy_aget(struct au_branch *br, ++ const struct address_space_operations *h_aop, ++ int do_dx) ++{ ++ struct au_dyaop *dyaop; ++ struct au_dynop op; ++ ++ op.dy_type = AuDy_AOP; ++ op.dy_haop = h_aop; ++ dyaop = (void *)dy_get(&op, br); ++ if (IS_ERR(dyaop)) ++ goto out; ++ dy_adx(dyaop, do_dx); ++ ++out: ++ return dyaop; ++} ++ ++int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, ++ struct inode *h_inode) ++{ ++ int err, do_dx; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_dyaop *dyaop; ++ ++ AuDebugOn(!S_ISREG(h_inode->i_mode)); ++ IiMustWriteLock(inode); ++ ++ sb = inode->i_sb; ++ br = au_sbr(sb, bindex); ++ do_dx = !!au_opt_test(au_mntflags(sb), DIO); ++ dyaop = dy_aget(br, h_inode->i_mapping->a_ops, do_dx); ++ err = PTR_ERR(dyaop); ++ if (IS_ERR(dyaop)) ++ /* unnecessary to call dy_fput() */ ++ goto out; ++ ++ err = 0; ++ inode->i_mapping->a_ops = &dyaop->da_op; ++ ++out: ++ return err; ++} ++ ++/* ++ * Is it safe to replace a_ops during the inode/file is in operation? ++ * Yes, I hope so. ++ */ ++int au_dy_irefresh(struct inode *inode) ++{ ++ int err; ++ aufs_bindex_t btop; ++ struct inode *h_inode; ++ ++ err = 0; ++ if (S_ISREG(inode->i_mode)) { ++ btop = au_ibtop(inode); ++ h_inode = au_h_iptr(inode, btop); ++ err = au_dy_iaop(inode, btop, h_inode); ++ } ++ return err; ++} ++ ++void au_dy_arefresh(int do_dx) ++{ ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ struct au_dykey *key; ++ ++ hbl = dynop + AuDy_AOP; ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(key, pos, hbl, dk_hnode) ++ dy_adx((void *)key, do_dx); ++ hlist_bl_unlock(hbl); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void __init au_dy_init(void) ++{ ++ int i; ++ ++ for (i = 0; i < AuDyLast; i++) ++ INIT_HLIST_BL_HEAD(dynop + i); ++} ++ ++void au_dy_fin(void) ++{ ++ int i; ++ ++ for (i = 0; i < AuDyLast; i++) ++ WARN_ON(!hlist_bl_empty(dynop + i)); ++} +diff -Naur null/fs/aufs/dynop.h linux-5.15.36/fs/aufs/dynop.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/dynop.h 2022-05-10 16:51:39.870744219 +0300 +@@ -0,0 +1,77 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * dynamically customizable operations (for regular files only) ++ */ ++ ++#ifndef __AUFS_DYNOP_H__ ++#define __AUFS_DYNOP_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++ ++enum {AuDy_AOP, AuDyLast}; ++ ++struct au_dynop { ++ int dy_type; ++ union { ++ const void *dy_hop; ++ const struct address_space_operations *dy_haop; ++ }; ++}; ++ ++struct au_dykey { ++ union { ++ struct hlist_bl_node dk_hnode; ++ struct rcu_head dk_rcu; ++ }; ++ struct au_dynop dk_op; ++ ++ /* ++ * during I am in the branch local array, kref is gotten. when the ++ * branch is removed, kref is put. ++ */ ++ struct kref dk_kref; ++}; ++ ++/* stop unioning since their sizes are very different from each other */ ++struct au_dyaop { ++ struct au_dykey da_key; ++ struct address_space_operations da_op; /* not const */ ++}; ++/* make sure that 'struct au_dykey *' can be any type */ ++static_assert(!offsetof(struct au_dyaop, da_key)); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* dynop.c */ ++struct au_branch; ++void au_dy_put(struct au_dykey *key); ++int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, ++ struct inode *h_inode); ++int au_dy_irefresh(struct inode *inode); ++void au_dy_arefresh(int do_dio); ++ ++void __init au_dy_init(void); ++void au_dy_fin(void); ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_DYNOP_H__ */ +diff -Naur null/fs/aufs/export.c linux-5.15.36/fs/aufs/export.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/export.c 2022-05-10 16:51:39.870744219 +0300 +@@ -0,0 +1,830 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * export via nfs ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++union conv { ++#ifdef CONFIG_AUFS_INO_T_64 ++ __u32 a[2]; ++#else ++ __u32 a[1]; ++#endif ++ ino_t ino; ++}; ++ ++static ino_t decode_ino(__u32 *a) ++{ ++ union conv u; ++ ++ BUILD_BUG_ON(sizeof(u.ino) != sizeof(u.a)); ++ u.a[0] = a[0]; ++#ifdef CONFIG_AUFS_INO_T_64 ++ u.a[1] = a[1]; ++#endif ++ return u.ino; ++} ++ ++static void encode_ino(__u32 *a, ino_t ino) ++{ ++ union conv u; ++ ++ u.ino = ino; ++ a[0] = u.a[0]; ++#ifdef CONFIG_AUFS_INO_T_64 ++ a[1] = u.a[1]; ++#endif ++} ++ ++/* NFS file handle */ ++enum { ++ Fh_br_id, ++ Fh_sigen, ++#ifdef CONFIG_AUFS_INO_T_64 ++ /* support 64bit inode number */ ++ Fh_ino1, ++ Fh_ino2, ++ Fh_dir_ino1, ++ Fh_dir_ino2, ++#else ++ Fh_ino1, ++ Fh_dir_ino1, ++#endif ++ Fh_igen, ++ Fh_h_type, ++ Fh_tail, ++ ++ Fh_ino = Fh_ino1, ++ Fh_dir_ino = Fh_dir_ino1 ++}; ++ ++static int au_test_anon(struct dentry *dentry) ++{ ++ /* note: read d_flags without d_lock */ ++ return !!(dentry->d_flags & DCACHE_DISCONNECTED); ++} ++ ++int au_test_nfsd(void) ++{ ++ int ret; ++ struct task_struct *tsk = current; ++ char comm[sizeof(tsk->comm)]; ++ ++ ret = 0; ++ if (tsk->flags & PF_KTHREAD) { ++ get_task_comm(comm, tsk); ++ ret = !strcmp(comm, "nfsd"); ++ } ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* inode generation external table */ ++ ++void au_xigen_inc(struct inode *inode) ++{ ++ loff_t pos; ++ ssize_t sz; ++ __u32 igen; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ ++ sb = inode->i_sb; ++ AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); ++ ++ sbinfo = au_sbi(sb); ++ pos = inode->i_ino; ++ pos *= sizeof(igen); ++ igen = inode->i_generation + 1; ++ sz = xino_fwrite(sbinfo->si_xigen, &igen, sizeof(igen), &pos); ++ if (sz == sizeof(igen)) ++ return; /* success */ ++ ++ if (unlikely(sz >= 0)) ++ AuIOErr("xigen error (%zd)\n", sz); ++} ++ ++int au_xigen_new(struct inode *inode) ++{ ++ int err; ++ loff_t pos; ++ ssize_t sz; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ struct file *file; ++ ++ err = 0; ++ /* todo: dirty, at mount time */ ++ if (inode->i_ino == AUFS_ROOT_INO) ++ goto out; ++ sb = inode->i_sb; ++ SiMustAnyLock(sb); ++ if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) ++ goto out; ++ ++ err = -EFBIG; ++ pos = inode->i_ino; ++ if (unlikely(au_loff_max / sizeof(inode->i_generation) - 1 < pos)) { ++ AuIOErr1("too large i%lld\n", pos); ++ goto out; ++ } ++ pos *= sizeof(inode->i_generation); ++ ++ err = 0; ++ sbinfo = au_sbi(sb); ++ file = sbinfo->si_xigen; ++ BUG_ON(!file); ++ ++ if (vfsub_f_size_read(file) ++ < pos + sizeof(inode->i_generation)) { ++ inode->i_generation = atomic_inc_return(&sbinfo->si_xigen_next); ++ sz = xino_fwrite(file, &inode->i_generation, ++ sizeof(inode->i_generation), &pos); ++ } else ++ sz = xino_fread(file, &inode->i_generation, ++ sizeof(inode->i_generation), &pos); ++ if (sz == sizeof(inode->i_generation)) ++ goto out; /* success */ ++ ++ err = sz; ++ if (unlikely(sz >= 0)) { ++ err = -EIO; ++ AuIOErr("xigen error (%zd)\n", sz); ++ } ++ ++out: ++ return err; ++} ++ ++int au_xigen_set(struct super_block *sb, struct path *path) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ struct file *file; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ file = au_xino_create2(sb, path, sbinfo->si_xigen); ++ err = PTR_ERR(file); ++ if (IS_ERR(file)) ++ goto out; ++ err = 0; ++ if (sbinfo->si_xigen) ++ fput(sbinfo->si_xigen); ++ sbinfo->si_xigen = file; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_xigen_clr(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ if (sbinfo->si_xigen) { ++ fput(sbinfo->si_xigen); ++ sbinfo->si_xigen = NULL; ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino, ++ ino_t dir_ino) ++{ ++ struct dentry *dentry, *d; ++ struct inode *inode; ++ unsigned int sigen; ++ ++ dentry = NULL; ++ inode = ilookup(sb, ino); ++ if (!inode) ++ goto out; ++ ++ dentry = ERR_PTR(-ESTALE); ++ sigen = au_sigen(sb); ++ if (unlikely(au_is_bad_inode(inode) ++ || IS_DEADDIR(inode) ++ || sigen != au_iigen(inode, NULL))) ++ goto out_iput; ++ ++ dentry = NULL; ++ if (!dir_ino || S_ISDIR(inode->i_mode)) ++ dentry = d_find_alias(inode); ++ else { ++ spin_lock(&inode->i_lock); ++ hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { ++ spin_lock(&d->d_lock); ++ if (!au_test_anon(d) ++ && d_inode(d->d_parent)->i_ino == dir_ino) { ++ dentry = dget_dlock(d); ++ spin_unlock(&d->d_lock); ++ break; ++ } ++ spin_unlock(&d->d_lock); ++ } ++ spin_unlock(&inode->i_lock); ++ } ++ if (unlikely(dentry && au_digen_test(dentry, sigen))) { ++ /* need to refresh */ ++ dput(dentry); ++ dentry = NULL; ++ } ++ ++out_iput: ++ iput(inode); ++out: ++ AuTraceErrPtr(dentry); ++ return dentry; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* todo: dirty? */ ++/* if exportfs_decode_fh() passed vfsmount*, we could be happy */ ++ ++struct au_compare_mnt_args { ++ /* input */ ++ struct super_block *sb; ++ ++ /* output */ ++ struct vfsmount *mnt; ++}; ++ ++static int au_compare_mnt(struct vfsmount *mnt, void *arg) ++{ ++ struct au_compare_mnt_args *a = arg; ++ ++ if (mnt->mnt_sb != a->sb) ++ return 0; ++ a->mnt = mntget(mnt); ++ return 1; ++} ++ ++static struct vfsmount *au_mnt_get(struct super_block *sb) ++{ ++ int err; ++ struct path root; ++ struct au_compare_mnt_args args = { ++ .sb = sb ++ }; ++ ++ get_fs_root(current->fs, &root); ++ rcu_read_lock(); ++ err = iterate_mounts(au_compare_mnt, &args, root.mnt); ++ rcu_read_unlock(); ++ path_put(&root); ++ AuDebugOn(!err); ++ AuDebugOn(!args.mnt); ++ return args.mnt; ++} ++ ++struct au_nfsd_si_lock { ++ unsigned int sigen; ++ aufs_bindex_t bindex, br_id; ++ unsigned char force_lock; ++}; ++ ++static int si_nfsd_read_lock(struct super_block *sb, ++ struct au_nfsd_si_lock *nsi_lock) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ ++ si_read_lock(sb, AuLock_FLUSH); ++ ++ /* branch id may be wrapped around */ ++ err = 0; ++ bindex = au_br_index(sb, nsi_lock->br_id); ++ if (bindex >= 0 && nsi_lock->sigen + AUFS_BRANCH_MAX > au_sigen(sb)) ++ goto out; /* success */ ++ ++ err = -ESTALE; ++ bindex = -1; ++ if (!nsi_lock->force_lock) ++ si_read_unlock(sb); ++ ++out: ++ nsi_lock->bindex = bindex; ++ return err; ++} ++ ++struct find_name_by_ino { ++ struct dir_context ctx; ++ int called, found; ++ ino_t ino; ++ char *name; ++ int namelen; ++}; ++ ++static int ++find_name_by_ino(struct dir_context *ctx, const char *name, int namelen, ++ loff_t offset, u64 ino, unsigned int d_type) ++{ ++ struct find_name_by_ino *a = container_of(ctx, struct find_name_by_ino, ++ ctx); ++ ++ a->called++; ++ if (a->ino != ino) ++ return 0; ++ ++ memcpy(a->name, name, namelen); ++ a->namelen = namelen; ++ a->found = 1; ++ return 1; ++} ++ ++static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, ++ struct au_nfsd_si_lock *nsi_lock) ++{ ++ struct dentry *dentry, *parent; ++ struct file *file; ++ struct inode *dir; ++ struct find_name_by_ino arg = { ++ .ctx = { ++ .actor = find_name_by_ino ++ } ++ }; ++ int err; ++ ++ parent = path->dentry; ++ if (nsi_lock) ++ si_read_unlock(parent->d_sb); ++ file = vfsub_dentry_open(path, au_dir_roflags); ++ dentry = (void *)file; ++ if (IS_ERR(file)) ++ goto out; ++ ++ dentry = ERR_PTR(-ENOMEM); ++ arg.name = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!arg.name)) ++ goto out_file; ++ arg.ino = ino; ++ arg.found = 0; ++ do { ++ arg.called = 0; ++ /* smp_mb(); */ ++ err = vfsub_iterate_dir(file, &arg.ctx); ++ } while (!err && !arg.found && arg.called); ++ dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_name; ++ /* instead of ENOENT */ ++ dentry = ERR_PTR(-ESTALE); ++ if (!arg.found) ++ goto out_name; ++ ++ /* do not call vfsub_lkup_one() */ ++ dir = d_inode(parent); ++ dentry = vfsub_lookup_one_len_unlocked(arg.name, path, arg.namelen); ++ AuTraceErrPtr(dentry); ++ if (IS_ERR(dentry)) ++ goto out_name; ++ AuDebugOn(au_test_anon(dentry)); ++ if (unlikely(d_really_is_negative(dentry))) { ++ dput(dentry); ++ dentry = ERR_PTR(-ENOENT); ++ } ++ ++out_name: ++ free_page((unsigned long)arg.name); ++out_file: ++ fput(file); ++out: ++ if (unlikely(nsi_lock ++ && si_nfsd_read_lock(parent->d_sb, nsi_lock) < 0)) ++ if (!IS_ERR(dentry)) { ++ dput(dentry); ++ dentry = ERR_PTR(-ESTALE); ++ } ++ AuTraceErrPtr(dentry); ++ return dentry; ++} ++ ++static struct dentry *decode_by_dir_ino(struct super_block *sb, ino_t ino, ++ ino_t dir_ino, ++ struct au_nfsd_si_lock *nsi_lock) ++{ ++ struct dentry *dentry; ++ struct path path; ++ ++ if (dir_ino != AUFS_ROOT_INO) { ++ path.dentry = decode_by_ino(sb, dir_ino, 0); ++ dentry = path.dentry; ++ if (!path.dentry || IS_ERR(path.dentry)) ++ goto out; ++ AuDebugOn(au_test_anon(path.dentry)); ++ } else ++ path.dentry = dget(sb->s_root); ++ ++ path.mnt = au_mnt_get(sb); ++ dentry = au_lkup_by_ino(&path, ino, nsi_lock); ++ path_put(&path); ++ ++out: ++ AuTraceErrPtr(dentry); ++ return dentry; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int h_acceptable(void *expv, struct dentry *dentry) ++{ ++ return 1; ++} ++ ++static char *au_build_path(struct dentry *h_parent, struct path *h_rootpath, ++ char *buf, int len, struct super_block *sb) ++{ ++ char *p; ++ int n; ++ struct path path; ++ ++ p = d_path(h_rootpath, buf, len); ++ if (IS_ERR(p)) ++ goto out; ++ n = strlen(p); ++ ++ path.mnt = h_rootpath->mnt; ++ path.dentry = h_parent; ++ p = d_path(&path, buf, len); ++ if (IS_ERR(p)) ++ goto out; ++ if (n != 1) ++ p += n; ++ ++ path.mnt = au_mnt_get(sb); ++ path.dentry = sb->s_root; ++ p = d_path(&path, buf, len - strlen(p)); ++ mntput(path.mnt); ++ if (IS_ERR(p)) ++ goto out; ++ if (n != 1) ++ p[strlen(p)] = '/'; ++ ++out: ++ AuTraceErrPtr(p); ++ return p; ++} ++ ++static ++struct dentry *decode_by_path(struct super_block *sb, ino_t ino, __u32 *fh, ++ int fh_len, struct au_nfsd_si_lock *nsi_lock) ++{ ++ struct dentry *dentry, *h_parent, *root; ++ struct super_block *h_sb; ++ char *pathname, *p; ++ struct vfsmount *h_mnt; ++ struct au_branch *br; ++ int err; ++ struct path path; ++ ++ br = au_sbr(sb, nsi_lock->bindex); ++ h_mnt = au_br_mnt(br); ++ h_sb = h_mnt->mnt_sb; ++ /* todo: call lower fh_to_dentry()? fh_to_parent()? */ ++ lockdep_off(); ++ h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), ++ fh_len - Fh_tail, fh[Fh_h_type], ++ h_acceptable, /*context*/NULL); ++ lockdep_on(); ++ dentry = h_parent; ++ if (unlikely(!h_parent || IS_ERR(h_parent))) { ++ AuWarn1("%s decode_fh failed, %ld\n", ++ au_sbtype(h_sb), PTR_ERR(h_parent)); ++ goto out; ++ } ++ dentry = NULL; ++ if (unlikely(au_test_anon(h_parent))) { ++ AuWarn1("%s decode_fh returned a disconnected dentry\n", ++ au_sbtype(h_sb)); ++ goto out_h_parent; ++ } ++ ++ dentry = ERR_PTR(-ENOMEM); ++ pathname = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!pathname)) ++ goto out_h_parent; ++ ++ root = sb->s_root; ++ path.mnt = h_mnt; ++ di_read_lock_parent(root, !AuLock_IR); ++ path.dentry = au_h_dptr(root, nsi_lock->bindex); ++ di_read_unlock(root, !AuLock_IR); ++ p = au_build_path(h_parent, &path, pathname, PAGE_SIZE, sb); ++ dentry = (void *)p; ++ if (IS_ERR(p)) ++ goto out_pathname; ++ ++ si_read_unlock(sb); ++ err = vfsub_kern_path(p, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path); ++ dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_relock; ++ ++ dentry = ERR_PTR(-ENOENT); ++ AuDebugOn(au_test_anon(path.dentry)); ++ if (unlikely(d_really_is_negative(path.dentry))) ++ goto out_path; ++ ++ if (ino != d_inode(path.dentry)->i_ino) ++ dentry = au_lkup_by_ino(&path, ino, /*nsi_lock*/NULL); ++ else ++ dentry = dget(path.dentry); ++ ++out_path: ++ path_put(&path); ++out_relock: ++ if (unlikely(si_nfsd_read_lock(sb, nsi_lock) < 0)) ++ if (!IS_ERR(dentry)) { ++ dput(dentry); ++ dentry = ERR_PTR(-ESTALE); ++ } ++out_pathname: ++ free_page((unsigned long)pathname); ++out_h_parent: ++ dput(h_parent); ++out: ++ AuTraceErrPtr(dentry); ++ return dentry; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct dentry * ++aufs_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, ++ int fh_type) ++{ ++ struct dentry *dentry; ++ __u32 *fh = fid->raw; ++ struct au_branch *br; ++ ino_t ino, dir_ino; ++ struct au_nfsd_si_lock nsi_lock = { ++ .force_lock = 0 ++ }; ++ ++ dentry = ERR_PTR(-ESTALE); ++ /* it should never happen, but the file handle is unreliable */ ++ if (unlikely(fh_len < Fh_tail)) ++ goto out; ++ nsi_lock.sigen = fh[Fh_sigen]; ++ nsi_lock.br_id = fh[Fh_br_id]; ++ ++ /* branch id may be wrapped around */ ++ br = NULL; ++ if (unlikely(si_nfsd_read_lock(sb, &nsi_lock))) ++ goto out; ++ nsi_lock.force_lock = 1; ++ ++ /* is this inode still cached? */ ++ ino = decode_ino(fh + Fh_ino); ++ /* it should never happen */ ++ if (unlikely(ino == AUFS_ROOT_INO)) ++ goto out_unlock; ++ ++ dir_ino = decode_ino(fh + Fh_dir_ino); ++ dentry = decode_by_ino(sb, ino, dir_ino); ++ if (IS_ERR(dentry)) ++ goto out_unlock; ++ if (dentry) ++ goto accept; ++ ++ /* is the parent dir cached? */ ++ br = au_sbr(sb, nsi_lock.bindex); ++ au_lcnt_inc(&br->br_nfiles); ++ dentry = decode_by_dir_ino(sb, ino, dir_ino, &nsi_lock); ++ if (IS_ERR(dentry)) ++ goto out_unlock; ++ if (dentry) ++ goto accept; ++ ++ /* lookup path */ ++ dentry = decode_by_path(sb, ino, fh, fh_len, &nsi_lock); ++ if (IS_ERR(dentry)) ++ goto out_unlock; ++ if (unlikely(!dentry)) ++ /* todo?: make it ESTALE */ ++ goto out_unlock; ++ ++accept: ++ if (!au_digen_test(dentry, au_sigen(sb)) ++ && d_inode(dentry)->i_generation == fh[Fh_igen]) ++ goto out_unlock; /* success */ ++ ++ dput(dentry); ++ dentry = ERR_PTR(-ESTALE); ++out_unlock: ++ if (br) ++ au_lcnt_dec(&br->br_nfiles); ++ si_read_unlock(sb); ++out: ++ AuTraceErrPtr(dentry); ++ return dentry; ++} ++ ++#if 0 /* reserved for future use */ ++/* support subtreecheck option */ ++static struct dentry *aufs_fh_to_parent(struct super_block *sb, struct fid *fid, ++ int fh_len, int fh_type) ++{ ++ struct dentry *parent; ++ __u32 *fh = fid->raw; ++ ino_t dir_ino; ++ ++ dir_ino = decode_ino(fh + Fh_dir_ino); ++ parent = decode_by_ino(sb, dir_ino, 0); ++ if (IS_ERR(parent)) ++ goto out; ++ if (!parent) ++ parent = decode_by_path(sb, au_br_index(sb, fh[Fh_br_id]), ++ dir_ino, fh, fh_len); ++ ++out: ++ AuTraceErrPtr(parent); ++ return parent; ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int aufs_encode_fh(struct inode *inode, __u32 *fh, int *max_len, ++ struct inode *dir) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct super_block *sb, *h_sb; ++ struct dentry *dentry, *parent, *h_parent; ++ struct inode *h_dir; ++ struct au_branch *br; ++ ++ err = -ENOSPC; ++ if (unlikely(*max_len <= Fh_tail)) { ++ AuWarn1("NFSv2 client (max_len %d)?\n", *max_len); ++ goto out; ++ } ++ ++ err = FILEID_ROOT; ++ if (inode->i_ino == AUFS_ROOT_INO) { ++ AuDebugOn(inode->i_ino != AUFS_ROOT_INO); ++ goto out; ++ } ++ ++ h_parent = NULL; ++ sb = inode->i_sb; ++ err = si_read_lock(sb, AuLock_FLUSH); ++ if (unlikely(err)) ++ goto out; ++ ++#ifdef CONFIG_AUFS_DEBUG ++ if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) ++ AuWarn1("NFS-exporting requires xino\n"); ++#endif ++ err = -EIO; ++ parent = NULL; ++ ii_read_lock_child(inode); ++ bindex = au_ibtop(inode); ++ if (!dir) { ++ dentry = d_find_any_alias(inode); ++ if (unlikely(!dentry)) ++ goto out_unlock; ++ AuDebugOn(au_test_anon(dentry)); ++ parent = dget_parent(dentry); ++ dput(dentry); ++ if (unlikely(!parent)) ++ goto out_unlock; ++ if (d_really_is_positive(parent)) ++ dir = d_inode(parent); ++ } ++ ++ ii_read_lock_parent(dir); ++ h_dir = au_h_iptr(dir, bindex); ++ ii_read_unlock(dir); ++ if (unlikely(!h_dir)) ++ goto out_parent; ++ h_parent = d_find_any_alias(h_dir); ++ if (unlikely(!h_parent)) ++ goto out_hparent; ++ ++ err = -EPERM; ++ br = au_sbr(sb, bindex); ++ h_sb = au_br_sb(br); ++ if (unlikely(!h_sb->s_export_op)) { ++ AuErr1("%s branch is not exportable\n", au_sbtype(h_sb)); ++ goto out_hparent; ++ } ++ ++ fh[Fh_br_id] = br->br_id; ++ fh[Fh_sigen] = au_sigen(sb); ++ encode_ino(fh + Fh_ino, inode->i_ino); ++ encode_ino(fh + Fh_dir_ino, dir->i_ino); ++ fh[Fh_igen] = inode->i_generation; ++ ++ *max_len -= Fh_tail; ++ fh[Fh_h_type] = exportfs_encode_fh(h_parent, (void *)(fh + Fh_tail), ++ max_len, ++ /*connectable or subtreecheck*/0); ++ err = fh[Fh_h_type]; ++ *max_len += Fh_tail; ++ /* todo: macros? */ ++ if (err != FILEID_INVALID) ++ err = 99; ++ else ++ AuWarn1("%s encode_fh failed\n", au_sbtype(h_sb)); ++ ++out_hparent: ++ dput(h_parent); ++out_parent: ++ dput(parent); ++out_unlock: ++ ii_read_unlock(inode); ++ si_read_unlock(sb); ++out: ++ if (unlikely(err < 0)) ++ err = FILEID_INVALID; ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int aufs_commit_metadata(struct inode *inode) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct super_block *sb; ++ struct inode *h_inode; ++ int (*f)(struct inode *inode); ++ ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ii_write_lock_child(inode); ++ bindex = au_ibtop(inode); ++ AuDebugOn(bindex < 0); ++ h_inode = au_h_iptr(inode, bindex); ++ ++ f = h_inode->i_sb->s_export_op->commit_metadata; ++ if (f) ++ err = f(h_inode); ++ else ++ err = sync_inode_metadata(h_inode, /*wait*/1); ++ ++ au_cpup_attr_timesizes(inode); ++ ii_write_unlock(inode); ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct export_operations aufs_export_op = { ++ .fh_to_dentry = aufs_fh_to_dentry, ++ /* .fh_to_parent = aufs_fh_to_parent, */ ++ .encode_fh = aufs_encode_fh, ++ .commit_metadata = aufs_commit_metadata ++}; ++ ++void au_export_init(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ __u32 u; ++ ++ BUILD_BUG_ON_MSG(IS_BUILTIN(CONFIG_AUFS_FS) ++ && IS_MODULE(CONFIG_EXPORTFS), ++ AUFS_NAME ": unsupported configuration " ++ "CONFIG_EXPORTFS=m and CONFIG_AUFS_FS=y"); ++ ++ sb->s_export_op = &aufs_export_op; ++ sbinfo = au_sbi(sb); ++ sbinfo->si_xigen = NULL; ++ get_random_bytes(&u, sizeof(u)); ++ BUILD_BUG_ON(sizeof(u) != sizeof(int)); ++ atomic_set(&sbinfo->si_xigen_next, u); ++} +diff -Naur null/fs/aufs/fhsm.c linux-5.15.36/fs/aufs/fhsm.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/fhsm.c 2022-05-10 16:51:39.870744219 +0300 +@@ -0,0 +1,427 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2011-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++/* ++ * File-based Hierarchy Storage Management ++ */ ++ ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++static aufs_bindex_t au_fhsm_bottom(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ ++ SiMustAnyLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ fhsm = &sbinfo->si_fhsm; ++ AuDebugOn(!fhsm); ++ return fhsm->fhsm_bottom; ++} ++ ++void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ fhsm = &sbinfo->si_fhsm; ++ AuDebugOn(!fhsm); ++ fhsm->fhsm_bottom = bindex; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_fhsm_test_jiffy(struct au_sbinfo *sbinfo, struct au_branch *br) ++{ ++ struct au_br_fhsm *bf; ++ ++ bf = br->br_fhsm; ++ MtxMustLock(&bf->bf_lock); ++ ++ return !bf->bf_readable ++ || time_after(jiffies, ++ bf->bf_jiffy + sbinfo->si_fhsm.fhsm_expire); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_fhsm_notify(struct super_block *sb, int val) ++{ ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ ++ SiMustAnyLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ fhsm = &sbinfo->si_fhsm; ++ if (au_fhsm_pid(fhsm) ++ && atomic_read(&fhsm->fhsm_readable) != -1) { ++ atomic_set(&fhsm->fhsm_readable, val); ++ if (val) ++ wake_up(&fhsm->fhsm_wqh); ++ } ++} ++ ++static int au_fhsm_stfs(struct super_block *sb, aufs_bindex_t bindex, ++ struct aufs_stfs *rstfs, int do_lock, int do_notify) ++{ ++ int err; ++ struct au_branch *br; ++ struct au_br_fhsm *bf; ++ ++ br = au_sbr(sb, bindex); ++ AuDebugOn(au_br_rdonly(br)); ++ bf = br->br_fhsm; ++ AuDebugOn(!bf); ++ ++ if (do_lock) ++ mutex_lock(&bf->bf_lock); ++ else ++ MtxMustLock(&bf->bf_lock); ++ ++ /* sb->s_root for NFS is unreliable */ ++ err = au_br_stfs(br, &bf->bf_stfs); ++ if (unlikely(err)) { ++ AuErr1("FHSM failed (%d), b%d, ignored.\n", bindex, err); ++ goto out; ++ } ++ ++ bf->bf_jiffy = jiffies; ++ bf->bf_readable = 1; ++ if (do_notify) ++ au_fhsm_notify(sb, /*val*/1); ++ if (rstfs) ++ *rstfs = bf->bf_stfs; ++ ++out: ++ if (do_lock) ++ mutex_unlock(&bf->bf_lock); ++ au_fhsm_notify(sb, /*val*/1); ++ ++ return err; ++} ++ ++void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ struct au_branch *br; ++ struct au_br_fhsm *bf; ++ ++ AuDbg("b%d, force %d\n", bindex, force); ++ SiMustAnyLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ fhsm = &sbinfo->si_fhsm; ++ if (!au_ftest_si(sbinfo, FHSM) ++ || fhsm->fhsm_bottom == bindex) ++ return; ++ ++ br = au_sbr(sb, bindex); ++ bf = br->br_fhsm; ++ AuDebugOn(!bf); ++ mutex_lock(&bf->bf_lock); ++ if (force ++ || au_fhsm_pid(fhsm) ++ || au_fhsm_test_jiffy(sbinfo, br)) ++ err = au_fhsm_stfs(sb, bindex, /*rstfs*/NULL, /*do_lock*/0, ++ /*do_notify*/1); ++ mutex_unlock(&bf->bf_lock); ++} ++ ++void au_fhsm_wrote_all(struct super_block *sb, int force) ++{ ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ ++ /* exclude the bottom */ ++ bbot = au_fhsm_bottom(sb); ++ for (bindex = 0; bindex < bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_fhsm(br->br_perm)) ++ au_fhsm_wrote(sb, bindex, force); ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static __poll_t au_fhsm_poll(struct file *file, struct poll_table_struct *wait) ++{ ++ __poll_t mask; ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ ++ mask = 0; ++ sbinfo = file->private_data; ++ fhsm = &sbinfo->si_fhsm; ++ poll_wait(file, &fhsm->fhsm_wqh, wait); ++ if (atomic_read(&fhsm->fhsm_readable)) ++ mask = EPOLLIN /* | EPOLLRDNORM */; ++ ++ if (!mask) ++ AuDbg("mask 0x%x\n", mask); ++ return mask; ++} ++ ++static int au_fhsm_do_read_one(struct aufs_stbr __user *stbr, ++ struct aufs_stfs *stfs, __s16 brid) ++{ ++ int err; ++ ++ err = copy_to_user(&stbr->stfs, stfs, sizeof(*stfs)); ++ if (!err) ++ err = __put_user(brid, &stbr->brid); ++ if (unlikely(err)) ++ err = -EFAULT; ++ ++ return err; ++} ++ ++static ssize_t au_fhsm_do_read(struct super_block *sb, ++ struct aufs_stbr __user *stbr, size_t count) ++{ ++ ssize_t err; ++ int nstbr; ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ struct au_br_fhsm *bf; ++ ++ /* except the bottom branch */ ++ err = 0; ++ nstbr = 0; ++ bbot = au_fhsm_bottom(sb); ++ for (bindex = 0; !err && bindex < bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (!au_br_fhsm(br->br_perm)) ++ continue; ++ ++ bf = br->br_fhsm; ++ mutex_lock(&bf->bf_lock); ++ if (bf->bf_readable) { ++ err = -EFAULT; ++ if (count >= sizeof(*stbr)) ++ err = au_fhsm_do_read_one(stbr++, &bf->bf_stfs, ++ br->br_id); ++ if (!err) { ++ bf->bf_readable = 0; ++ count -= sizeof(*stbr); ++ nstbr++; ++ } ++ } ++ mutex_unlock(&bf->bf_lock); ++ } ++ if (!err) ++ err = sizeof(*stbr) * nstbr; ++ ++ return err; ++} ++ ++static ssize_t au_fhsm_read(struct file *file, char __user *buf, size_t count, ++ loff_t *pos) ++{ ++ ssize_t err; ++ int readable; ++ aufs_bindex_t nfhsm, bindex, bbot; ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ struct au_branch *br; ++ struct super_block *sb; ++ ++ err = 0; ++ sbinfo = file->private_data; ++ fhsm = &sbinfo->si_fhsm; ++need_data: ++ spin_lock_irq(&fhsm->fhsm_wqh.lock); ++ if (!atomic_read(&fhsm->fhsm_readable)) { ++ if (vfsub_file_flags(file) & O_NONBLOCK) ++ err = -EAGAIN; ++ else ++ err = wait_event_interruptible_locked_irq ++ (fhsm->fhsm_wqh, ++ atomic_read(&fhsm->fhsm_readable)); ++ } ++ spin_unlock_irq(&fhsm->fhsm_wqh.lock); ++ if (unlikely(err)) ++ goto out; ++ ++ /* sb may already be dead */ ++ au_rw_read_lock(&sbinfo->si_rwsem); ++ readable = atomic_read(&fhsm->fhsm_readable); ++ if (readable > 0) { ++ sb = sbinfo->si_sb; ++ AuDebugOn(!sb); ++ /* exclude the bottom branch */ ++ nfhsm = 0; ++ bbot = au_fhsm_bottom(sb); ++ for (bindex = 0; bindex < bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_fhsm(br->br_perm)) ++ nfhsm++; ++ } ++ err = -EMSGSIZE; ++ if (nfhsm * sizeof(struct aufs_stbr) <= count) { ++ atomic_set(&fhsm->fhsm_readable, 0); ++ err = au_fhsm_do_read(sbinfo->si_sb, (void __user *)buf, ++ count); ++ } ++ } ++ au_rw_read_unlock(&sbinfo->si_rwsem); ++ if (!readable) ++ goto need_data; ++ ++out: ++ return err; ++} ++ ++static int au_fhsm_release(struct inode *inode, struct file *file) ++{ ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ ++ /* sb may already be dead */ ++ sbinfo = file->private_data; ++ fhsm = &sbinfo->si_fhsm; ++ spin_lock(&fhsm->fhsm_spin); ++ fhsm->fhsm_pid = 0; ++ spin_unlock(&fhsm->fhsm_spin); ++ kobject_put(&sbinfo->si_kobj); ++ ++ return 0; ++} ++ ++static const struct file_operations au_fhsm_fops = { ++ .owner = THIS_MODULE, ++ .llseek = noop_llseek, ++ .read = au_fhsm_read, ++ .poll = au_fhsm_poll, ++ .release = au_fhsm_release ++}; ++ ++int au_fhsm_fd(struct super_block *sb, int oflags) ++{ ++ int err, fd; ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ ++ err = -EPERM; ++ if (unlikely(!capable(CAP_SYS_ADMIN))) ++ goto out; ++ ++ err = -EINVAL; ++ if (unlikely(oflags & ~(O_CLOEXEC | O_NONBLOCK))) ++ goto out; ++ ++ err = 0; ++ sbinfo = au_sbi(sb); ++ fhsm = &sbinfo->si_fhsm; ++ spin_lock(&fhsm->fhsm_spin); ++ if (!fhsm->fhsm_pid) ++ fhsm->fhsm_pid = current->pid; ++ else ++ err = -EBUSY; ++ spin_unlock(&fhsm->fhsm_spin); ++ if (unlikely(err)) ++ goto out; ++ ++ oflags |= O_RDONLY; ++ /* oflags |= FMODE_NONOTIFY; */ ++ fd = anon_inode_getfd("[aufs_fhsm]", &au_fhsm_fops, sbinfo, oflags); ++ err = fd; ++ if (unlikely(fd < 0)) ++ goto out_pid; ++ ++ /* succeed regardless 'fhsm' status */ ++ kobject_get(&sbinfo->si_kobj); ++ si_noflush_read_lock(sb); ++ if (au_ftest_si(sbinfo, FHSM)) ++ au_fhsm_wrote_all(sb, /*force*/0); ++ si_read_unlock(sb); ++ goto out; /* success */ ++ ++out_pid: ++ spin_lock(&fhsm->fhsm_spin); ++ fhsm->fhsm_pid = 0; ++ spin_unlock(&fhsm->fhsm_spin); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_fhsm_br_alloc(struct au_branch *br) ++{ ++ int err; ++ ++ err = 0; ++ br->br_fhsm = kmalloc(sizeof(*br->br_fhsm), GFP_NOFS); ++ if (br->br_fhsm) ++ au_br_fhsm_init(br->br_fhsm); ++ else ++ err = -ENOMEM; ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_fhsm_fin(struct super_block *sb) ++{ ++ au_fhsm_notify(sb, /*val*/-1); ++} ++ ++void au_fhsm_init(struct au_sbinfo *sbinfo) ++{ ++ struct au_fhsm *fhsm; ++ ++ fhsm = &sbinfo->si_fhsm; ++ spin_lock_init(&fhsm->fhsm_spin); ++ init_waitqueue_head(&fhsm->fhsm_wqh); ++ atomic_set(&fhsm->fhsm_readable, 0); ++ fhsm->fhsm_expire ++ = msecs_to_jiffies(AUFS_FHSM_CACHE_DEF_SEC * MSEC_PER_SEC); ++ fhsm->fhsm_bottom = -1; ++} ++ ++void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec) ++{ ++ sbinfo->si_fhsm.fhsm_expire ++ = msecs_to_jiffies(sec * MSEC_PER_SEC); ++} ++ ++void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo) ++{ ++ unsigned int u; ++ ++ if (!au_ftest_si(sbinfo, FHSM)) ++ return; ++ ++ u = jiffies_to_msecs(sbinfo->si_fhsm.fhsm_expire) / MSEC_PER_SEC; ++ if (u != AUFS_FHSM_CACHE_DEF_SEC) ++ seq_printf(seq, ",fhsm_sec=%u", u); ++} +diff -Naur null/fs/aufs/file.c linux-5.15.36/fs/aufs/file.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/file.c 2022-05-10 16:51:39.870744219 +0300 +@@ -0,0 +1,863 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * handling file/dir, and address_space operation ++ */ ++ ++#ifdef CONFIG_AUFS_DEBUG ++#include ++#endif ++#include ++#include "aufs.h" ++ ++/* drop flags for writing */ ++unsigned int au_file_roflags(unsigned int flags) ++{ ++ flags &= ~(O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_TRUNC); ++ flags |= O_RDONLY | O_NOATIME; ++ return flags; ++} ++ ++/* common functions to regular file and dir */ ++struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, ++ struct file *file, int force_wr) ++{ ++ struct file *h_file; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct path h_path; ++ int err; ++ ++ /* a race condition can happen between open and unlink/rmdir */ ++ h_file = ERR_PTR(-ENOENT); ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (au_test_nfsd() && (!h_dentry || d_is_negative(h_dentry))) ++ goto out; ++ h_inode = d_inode(h_dentry); ++ spin_lock(&h_dentry->d_lock); ++ err = (!d_unhashed(dentry) && d_unlinked(h_dentry)) ++ /* || !d_inode(dentry)->i_nlink */ ++ ; ++ spin_unlock(&h_dentry->d_lock); ++ if (unlikely(err)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ br = au_sbr(sb, bindex); ++ err = au_br_test_oflag(flags, br); ++ h_file = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ /* drop flags for writing */ ++ if (au_test_ro(sb, bindex, d_inode(dentry))) { ++ if (force_wr && !(flags & O_WRONLY)) ++ force_wr = 0; ++ flags = au_file_roflags(flags); ++ if (force_wr) { ++ h_file = ERR_PTR(-EROFS); ++ flags = au_file_roflags(flags); ++ if (unlikely(vfsub_native_ro(h_inode) ++ || IS_APPEND(h_inode))) ++ goto out; ++ flags &= ~O_ACCMODE; ++ flags |= O_WRONLY; ++ } ++ } ++ flags &= ~O_CREAT; ++ au_lcnt_inc(&br->br_nfiles); ++ h_path.dentry = h_dentry; ++ h_path.mnt = au_br_mnt(br); ++ h_file = vfsub_dentry_open(&h_path, flags); ++ if (IS_ERR(h_file)) ++ goto out_br; ++ ++ if (flags & __FMODE_EXEC) { ++ err = deny_write_access(h_file); ++ if (unlikely(err)) { ++ fput(h_file); ++ h_file = ERR_PTR(err); ++ goto out_br; ++ } ++ } ++ fsnotify_open(h_file); ++ goto out; /* success */ ++ ++out_br: ++ au_lcnt_dec(&br->br_nfiles); ++out: ++ return h_file; ++} ++ ++static int au_cmoo(struct dentry *dentry) ++{ ++ int err, cmoo, matched; ++ unsigned int udba; ++ struct path h_path; ++ struct au_pin pin; ++ struct au_cp_generic cpg = { ++ .dentry = dentry, ++ .bdst = -1, ++ .bsrc = -1, ++ .len = -1, ++ .pin = &pin, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN ++ }; ++ struct inode *delegated; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ struct au_fhsm *fhsm; ++ pid_t pid; ++ struct au_branch *br; ++ struct dentry *parent; ++ struct au_hinode *hdir; ++ ++ DiMustWriteLock(dentry); ++ IiMustWriteLock(d_inode(dentry)); ++ ++ err = 0; ++ if (IS_ROOT(dentry)) ++ goto out; ++ cpg.bsrc = au_dbtop(dentry); ++ if (!cpg.bsrc) ++ goto out; ++ ++ sb = dentry->d_sb; ++ sbinfo = au_sbi(sb); ++ fhsm = &sbinfo->si_fhsm; ++ pid = au_fhsm_pid(fhsm); ++ rcu_read_lock(); ++ matched = (pid ++ && (current->pid == pid ++ || rcu_dereference(current->real_parent)->pid == pid)); ++ rcu_read_unlock(); ++ if (matched) ++ goto out; ++ ++ br = au_sbr(sb, cpg.bsrc); ++ cmoo = au_br_cmoo(br->br_perm); ++ if (!cmoo) ++ goto out; ++ if (!d_is_reg(dentry)) ++ cmoo &= AuBrAttr_COO_ALL; ++ if (!cmoo) ++ goto out; ++ ++ parent = dget_parent(dentry); ++ di_write_lock_parent(parent); ++ err = au_wbr_do_copyup_bu(dentry, cpg.bsrc - 1); ++ cpg.bdst = err; ++ if (unlikely(err < 0)) { ++ err = 0; /* there is no upper writable branch */ ++ goto out_dgrade; ++ } ++ AuDbg("bsrc %d, bdst %d\n", cpg.bsrc, cpg.bdst); ++ ++ /* do not respect the coo attrib for the target branch */ ++ err = au_cpup_dirs(dentry, cpg.bdst); ++ if (unlikely(err)) ++ goto out_dgrade; ++ ++ di_downgrade_lock(parent, AuLock_IR); ++ udba = au_opt_udba(sb); ++ err = au_pin(&pin, dentry, cpg.bdst, udba, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ err = au_sio_cpup_simple(&cpg); ++ au_unpin(&pin); ++ if (unlikely(err)) ++ goto out_parent; ++ if (!(cmoo & AuBrWAttr_MOO)) ++ goto out_parent; /* success */ ++ ++ err = au_pin(&pin, dentry, cpg.bsrc, udba, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ h_path.mnt = au_br_mnt(br); ++ h_path.dentry = au_h_dptr(dentry, cpg.bsrc); ++ hdir = au_hi(d_inode(parent), cpg.bsrc); ++ delegated = NULL; ++ err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, /*force*/1); ++ au_unpin(&pin); ++ /* todo: keep h_dentry or not? */ ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ if (unlikely(err)) { ++ pr_err("unlink %pd after coo failed (%d), ignored\n", ++ dentry, err); ++ err = 0; ++ } ++ goto out_parent; /* success */ ++ ++out_dgrade: ++ di_downgrade_lock(parent, AuLock_IR); ++out_parent: ++ di_read_unlock(parent, AuLock_IR); ++ dput(parent); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_do_open(struct file *file, struct au_do_open_args *args) ++{ ++ int err, aopen = args->aopen; ++ struct dentry *dentry; ++ struct au_finfo *finfo; ++ ++ if (!aopen) ++ err = au_finfo_init(file, args->fidir); ++ else { ++ lockdep_off(); ++ err = au_finfo_init(file, args->fidir); ++ lockdep_on(); ++ } ++ if (unlikely(err)) ++ goto out; ++ ++ dentry = file->f_path.dentry; ++ AuDebugOn(IS_ERR_OR_NULL(dentry)); ++ di_write_lock_child(dentry); ++ err = au_cmoo(dentry); ++ di_downgrade_lock(dentry, AuLock_IR); ++ if (!err) { ++ if (!aopen) ++ err = args->open(file, vfsub_file_flags(file), NULL); ++ else { ++ lockdep_off(); ++ err = args->open(file, vfsub_file_flags(file), ++ args->h_file); ++ lockdep_on(); ++ } ++ } ++ di_read_unlock(dentry, AuLock_IR); ++ ++ finfo = au_fi(file); ++ if (!err) { ++ finfo->fi_file = file; ++ au_hbl_add(&finfo->fi_hlist, ++ &au_sbi(file->f_path.dentry->d_sb)->si_files); ++ } ++ if (!aopen) ++ fi_write_unlock(file); ++ else { ++ lockdep_off(); ++ fi_write_unlock(file); ++ lockdep_on(); ++ } ++ if (unlikely(err)) { ++ finfo->fi_hdir = NULL; ++ au_finfo_fin(file); ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_reopen_nondir(struct file *file) ++{ ++ int err; ++ aufs_bindex_t btop; ++ struct dentry *dentry; ++ struct au_branch *br; ++ struct file *h_file, *h_file_tmp; ++ ++ dentry = file->f_path.dentry; ++ btop = au_dbtop(dentry); ++ br = au_sbr(dentry->d_sb, btop); ++ h_file_tmp = NULL; ++ if (au_fbtop(file) == btop) { ++ h_file = au_hf_top(file); ++ if (file->f_mode == h_file->f_mode) ++ return 0; /* success */ ++ h_file_tmp = h_file; ++ get_file(h_file_tmp); ++ au_lcnt_inc(&br->br_nfiles); ++ au_set_h_fptr(file, btop, NULL); ++ } ++ AuDebugOn(au_fi(file)->fi_hdir); ++ /* ++ * it can happen ++ * file exists on both of rw and ro ++ * open --> dbtop and fbtop are both 0 ++ * prepend a branch as rw, "rw" become ro ++ * remove rw/file ++ * delete the top branch, "rw" becomes rw again ++ * --> dbtop is 1, fbtop is still 0 ++ * write --> fbtop is 0 but dbtop is 1 ++ */ ++ /* AuDebugOn(au_fbtop(file) < btop); */ ++ ++ h_file = au_h_open(dentry, btop, vfsub_file_flags(file) & ~O_TRUNC, ++ file, /*force_wr*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) { ++ if (h_file_tmp) { ++ /* revert */ ++ au_set_h_fptr(file, btop, h_file_tmp); ++ h_file_tmp = NULL; ++ } ++ goto out; /* todo: close all? */ ++ } ++ ++ err = 0; ++ au_set_fbtop(file, btop); ++ au_set_h_fptr(file, btop, h_file); ++ au_update_figen(file); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ ++out: ++ if (h_file_tmp) { ++ fput(h_file_tmp); ++ au_lcnt_dec(&br->br_nfiles); ++ } ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, ++ struct dentry *hi_wh) ++{ ++ int err; ++ aufs_bindex_t btop; ++ struct au_dinfo *dinfo; ++ struct dentry *h_dentry; ++ struct au_hdentry *hdp; ++ ++ dinfo = au_di(file->f_path.dentry); ++ AuRwMustWriteLock(&dinfo->di_rwsem); ++ ++ btop = dinfo->di_btop; ++ dinfo->di_btop = btgt; ++ hdp = au_hdentry(dinfo, btgt); ++ h_dentry = hdp->hd_dentry; ++ hdp->hd_dentry = hi_wh; ++ err = au_reopen_nondir(file); ++ hdp->hd_dentry = h_dentry; ++ dinfo->di_btop = btop; ++ ++ return err; ++} ++ ++static int au_ready_to_write_wh(struct file *file, loff_t len, ++ aufs_bindex_t bcpup, struct au_pin *pin) ++{ ++ int err; ++ struct inode *inode, *h_inode; ++ struct dentry *h_dentry, *hi_wh; ++ struct au_cp_generic cpg = { ++ .dentry = file->f_path.dentry, ++ .bdst = bcpup, ++ .bsrc = -1, ++ .len = len, ++ .pin = pin ++ }; ++ ++ au_update_dbtop(cpg.dentry); ++ inode = d_inode(cpg.dentry); ++ h_inode = NULL; ++ if (au_dbtop(cpg.dentry) <= bcpup ++ && au_dbbot(cpg.dentry) >= bcpup) { ++ h_dentry = au_h_dptr(cpg.dentry, bcpup); ++ if (h_dentry && d_is_positive(h_dentry)) ++ h_inode = d_inode(h_dentry); ++ } ++ hi_wh = au_hi_wh(inode, bcpup); ++ if (!hi_wh && !h_inode) ++ err = au_sio_cpup_wh(&cpg, file); ++ else ++ /* already copied-up after unlink */ ++ err = au_reopen_wh(file, bcpup, hi_wh); ++ ++ if (!err ++ && (inode->i_nlink > 1 ++ || (inode->i_state & I_LINKABLE)) ++ && au_opt_test(au_mntflags(cpg.dentry->d_sb), PLINK)) ++ au_plink_append(inode, bcpup, au_h_dptr(cpg.dentry, bcpup)); ++ ++ return err; ++} ++ ++/* ++ * prepare the @file for writing. ++ */ ++int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin) ++{ ++ int err; ++ aufs_bindex_t dbtop; ++ struct dentry *parent; ++ struct inode *inode; ++ struct super_block *sb; ++ struct file *h_file; ++ struct au_cp_generic cpg = { ++ .dentry = file->f_path.dentry, ++ .bdst = -1, ++ .bsrc = -1, ++ .len = len, ++ .pin = pin, ++ .flags = AuCpup_DTIME ++ }; ++ ++ sb = cpg.dentry->d_sb; ++ inode = d_inode(cpg.dentry); ++ cpg.bsrc = au_fbtop(file); ++ err = au_test_ro(sb, cpg.bsrc, inode); ++ if (!err && (au_hf_top(file)->f_mode & FMODE_WRITE)) { ++ err = au_pin(pin, cpg.dentry, cpg.bsrc, AuOpt_UDBA_NONE, ++ /*flags*/0); ++ goto out; ++ } ++ ++ /* need to cpup or reopen */ ++ parent = dget_parent(cpg.dentry); ++ di_write_lock_parent(parent); ++ err = AuWbrCopyup(au_sbi(sb), cpg.dentry); ++ cpg.bdst = err; ++ if (unlikely(err < 0)) ++ goto out_dgrade; ++ err = 0; ++ ++ if (!d_unhashed(cpg.dentry) && !au_h_dptr(parent, cpg.bdst)) { ++ err = au_cpup_dirs(cpg.dentry, cpg.bdst); ++ if (unlikely(err)) ++ goto out_dgrade; ++ } ++ ++ err = au_pin(pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out_dgrade; ++ ++ dbtop = au_dbtop(cpg.dentry); ++ if (dbtop <= cpg.bdst) ++ cpg.bsrc = cpg.bdst; ++ ++ if (dbtop <= cpg.bdst /* just reopen */ ++ || !d_unhashed(cpg.dentry) /* copyup and reopen */ ++ ) { ++ h_file = au_h_open_pre(cpg.dentry, cpg.bsrc, /*force_wr*/0); ++ if (IS_ERR(h_file)) ++ err = PTR_ERR(h_file); ++ else { ++ di_downgrade_lock(parent, AuLock_IR); ++ if (dbtop > cpg.bdst) ++ err = au_sio_cpup_simple(&cpg); ++ if (!err) ++ err = au_reopen_nondir(file); ++ au_h_open_post(cpg.dentry, cpg.bsrc, h_file); ++ } ++ } else { /* copyup as wh and reopen */ ++ /* ++ * since writable hfsplus branch is not supported, ++ * h_open_pre/post() are unnecessary. ++ */ ++ err = au_ready_to_write_wh(file, len, cpg.bdst, pin); ++ di_downgrade_lock(parent, AuLock_IR); ++ } ++ ++ if (!err) { ++ au_pin_set_parent_lflag(pin, /*lflag*/0); ++ goto out_dput; /* success */ ++ } ++ au_unpin(pin); ++ goto out_unlock; ++ ++out_dgrade: ++ di_downgrade_lock(parent, AuLock_IR); ++out_unlock: ++ di_read_unlock(parent, AuLock_IR); ++out_dput: ++ dput(parent); ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_do_flush(struct file *file, fl_owner_t id, ++ int (*flush)(struct file *file, fl_owner_t id)) ++{ ++ int err; ++ struct super_block *sb; ++ struct inode *inode; ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ si_noflush_read_lock(sb); ++ fi_read_lock(file); ++ ii_read_lock_child(inode); ++ ++ err = flush(file, id); ++ au_cpup_attr_timesizes(inode); ++ ++ ii_read_unlock(inode); ++ fi_read_unlock(file); ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_file_refresh_by_inode(struct file *file, int *need_reopen) ++{ ++ int err; ++ struct au_pin pin; ++ struct au_finfo *finfo; ++ struct dentry *parent, *hi_wh; ++ struct inode *inode; ++ struct super_block *sb; ++ struct au_cp_generic cpg = { ++ .dentry = file->f_path.dentry, ++ .bdst = -1, ++ .bsrc = -1, ++ .len = -1, ++ .pin = &pin, ++ .flags = AuCpup_DTIME ++ }; ++ ++ FiMustWriteLock(file); ++ ++ err = 0; ++ finfo = au_fi(file); ++ sb = cpg.dentry->d_sb; ++ inode = d_inode(cpg.dentry); ++ cpg.bdst = au_ibtop(inode); ++ if (cpg.bdst == finfo->fi_btop || IS_ROOT(cpg.dentry)) ++ goto out; ++ ++ parent = dget_parent(cpg.dentry); ++ if (au_test_ro(sb, cpg.bdst, inode)) { ++ di_read_lock_parent(parent, !AuLock_IR); ++ err = AuWbrCopyup(au_sbi(sb), cpg.dentry); ++ cpg.bdst = err; ++ di_read_unlock(parent, !AuLock_IR); ++ if (unlikely(err < 0)) ++ goto out_parent; ++ err = 0; ++ } ++ ++ di_read_lock_parent(parent, AuLock_IR); ++ hi_wh = au_hi_wh(inode, cpg.bdst); ++ if (!S_ISDIR(inode->i_mode) ++ && au_opt_test(au_mntflags(sb), PLINK) ++ && au_plink_test(inode) ++ && !d_unhashed(cpg.dentry) ++ && cpg.bdst < au_dbtop(cpg.dentry)) { ++ err = au_test_and_cpup_dirs(cpg.dentry, cpg.bdst); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ /* always superio. */ ++ err = au_pin(&pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (!err) { ++ err = au_sio_cpup_simple(&cpg); ++ au_unpin(&pin); ++ } ++ } else if (hi_wh) { ++ /* already copied-up after unlink */ ++ err = au_reopen_wh(file, cpg.bdst, hi_wh); ++ *need_reopen = 0; ++ } ++ ++out_unlock: ++ di_read_unlock(parent, AuLock_IR); ++out_parent: ++ dput(parent); ++out: ++ return err; ++} ++ ++static void au_do_refresh_dir(struct file *file) ++{ ++ aufs_bindex_t bindex, bbot, new_bindex, brid; ++ struct au_hfile *p, tmp, *q; ++ struct au_finfo *finfo; ++ struct super_block *sb; ++ struct au_fidir *fidir; ++ ++ FiMustWriteLock(file); ++ ++ sb = file->f_path.dentry->d_sb; ++ finfo = au_fi(file); ++ fidir = finfo->fi_hdir; ++ AuDebugOn(!fidir); ++ p = fidir->fd_hfile + finfo->fi_btop; ++ brid = p->hf_br->br_id; ++ bbot = fidir->fd_bbot; ++ for (bindex = finfo->fi_btop; bindex <= bbot; bindex++, p++) { ++ if (!p->hf_file) ++ continue; ++ ++ new_bindex = au_br_index(sb, p->hf_br->br_id); ++ if (new_bindex == bindex) ++ continue; ++ if (new_bindex < 0) { ++ au_set_h_fptr(file, bindex, NULL); ++ continue; ++ } ++ ++ /* swap two lower inode, and loop again */ ++ q = fidir->fd_hfile + new_bindex; ++ tmp = *q; ++ *q = *p; ++ *p = tmp; ++ if (tmp.hf_file) { ++ bindex--; ++ p--; ++ } ++ } ++ ++ p = fidir->fd_hfile; ++ if (!au_test_mmapped(file) && !d_unlinked(file->f_path.dentry)) { ++ bbot = au_sbbot(sb); ++ for (finfo->fi_btop = 0; finfo->fi_btop <= bbot; ++ finfo->fi_btop++, p++) ++ if (p->hf_file) { ++ if (file_inode(p->hf_file)) ++ break; ++ au_hfput(p, /*execed*/0); ++ } ++ } else { ++ bbot = au_br_index(sb, brid); ++ for (finfo->fi_btop = 0; finfo->fi_btop < bbot; ++ finfo->fi_btop++, p++) ++ if (p->hf_file) ++ au_hfput(p, /*execed*/0); ++ bbot = au_sbbot(sb); ++ } ++ ++ p = fidir->fd_hfile + bbot; ++ for (fidir->fd_bbot = bbot; fidir->fd_bbot >= finfo->fi_btop; ++ fidir->fd_bbot--, p--) ++ if (p->hf_file) { ++ if (file_inode(p->hf_file)) ++ break; ++ au_hfput(p, /*execed*/0); ++ } ++ AuDebugOn(fidir->fd_bbot < finfo->fi_btop); ++} ++ ++/* ++ * after branch manipulating, refresh the file. ++ */ ++static int refresh_file(struct file *file, int (*reopen)(struct file *file)) ++{ ++ int err, need_reopen, nbr; ++ aufs_bindex_t bbot, bindex; ++ struct dentry *dentry; ++ struct super_block *sb; ++ struct au_finfo *finfo; ++ struct au_hfile *hfile; ++ ++ dentry = file->f_path.dentry; ++ sb = dentry->d_sb; ++ nbr = au_sbbot(sb) + 1; ++ finfo = au_fi(file); ++ if (!finfo->fi_hdir) { ++ hfile = &finfo->fi_htop; ++ AuDebugOn(!hfile->hf_file); ++ bindex = au_br_index(sb, hfile->hf_br->br_id); ++ AuDebugOn(bindex < 0); ++ if (bindex != finfo->fi_btop) ++ au_set_fbtop(file, bindex); ++ } else { ++ err = au_fidir_realloc(finfo, nbr, /*may_shrink*/0); ++ if (unlikely(err)) ++ goto out; ++ au_do_refresh_dir(file); ++ } ++ ++ err = 0; ++ need_reopen = 1; ++ if (!au_test_mmapped(file)) ++ err = au_file_refresh_by_inode(file, &need_reopen); ++ if (finfo->fi_hdir) ++ /* harmless if err */ ++ au_fidir_realloc(finfo, nbr, /*may_shrink*/1); ++ if (!err && need_reopen && !d_unlinked(dentry)) ++ err = reopen(file); ++ if (!err) { ++ au_update_figen(file); ++ goto out; /* success */ ++ } ++ ++ /* error, close all lower files */ ++ if (finfo->fi_hdir) { ++ bbot = au_fbbot_dir(file); ++ for (bindex = au_fbtop(file); bindex <= bbot; bindex++) ++ au_set_h_fptr(file, bindex, NULL); ++ } ++ ++out: ++ return err; ++} ++ ++/* common function to regular file and dir */ ++int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), ++ int wlock, unsigned int fi_lsc) ++{ ++ int err; ++ unsigned int sigen, figen; ++ aufs_bindex_t btop; ++ unsigned char pseudo_link; ++ struct dentry *dentry; ++ struct inode *inode; ++ ++ err = 0; ++ dentry = file->f_path.dentry; ++ inode = d_inode(dentry); ++ sigen = au_sigen(dentry->d_sb); ++ fi_write_lock_nested(file, fi_lsc); ++ figen = au_figen(file); ++ if (!fi_lsc) ++ di_write_lock_child(dentry); ++ else ++ di_write_lock_child2(dentry); ++ btop = au_dbtop(dentry); ++ pseudo_link = (btop != au_ibtop(inode)); ++ if (sigen == figen && !pseudo_link && au_fbtop(file) == btop) { ++ if (!wlock) { ++ di_downgrade_lock(dentry, AuLock_IR); ++ fi_downgrade_lock(file); ++ } ++ goto out; /* success */ ++ } ++ ++ AuDbg("sigen %d, figen %d\n", sigen, figen); ++ if (au_digen_test(dentry, sigen)) { ++ err = au_reval_dpath(dentry, sigen); ++ AuDebugOn(!err && au_digen_test(dentry, sigen)); ++ } ++ ++ if (!err) ++ err = refresh_file(file, reopen); ++ if (!err) { ++ if (!wlock) { ++ di_downgrade_lock(dentry, AuLock_IR); ++ fi_downgrade_lock(file); ++ } ++ } else { ++ di_write_unlock(dentry); ++ fi_write_unlock(file); ++ } ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* cf. aufs_nopage() */ ++/* for madvise(2) */ ++static int aufs_readpage(struct file *file __maybe_unused, struct page *page) ++{ ++ unlock_page(page); ++ return 0; ++} ++ ++/* it will never be called, but necessary to support O_DIRECT */ ++static ssize_t aufs_direct_IO(struct kiocb *iocb, struct iov_iter *iter) ++{ BUG(); return 0; } ++ ++/* they will never be called. */ ++#ifdef CONFIG_AUFS_DEBUG ++static int aufs_write_begin(struct file *file, struct address_space *mapping, ++ loff_t pos, unsigned len, unsigned flags, ++ struct page **pagep, void **fsdata) ++{ AuUnsupport(); return 0; } ++static int aufs_write_end(struct file *file, struct address_space *mapping, ++ loff_t pos, unsigned len, unsigned copied, ++ struct page *page, void *fsdata) ++{ AuUnsupport(); return 0; } ++static int aufs_writepage(struct page *page, struct writeback_control *wbc) ++{ AuUnsupport(); return 0; } ++ ++static int aufs_set_page_dirty(struct page *page) ++{ AuUnsupport(); return 0; } ++static void aufs_invalidatepage(struct page *page, unsigned int offset, ++ unsigned int length) ++{ AuUnsupport(); } ++static int aufs_releasepage(struct page *page, gfp_t gfp) ++{ AuUnsupport(); return 0; } ++#if 0 /* called by memory compaction regardless file */ ++static int aufs_migratepage(struct address_space *mapping, struct page *newpage, ++ struct page *page, enum migrate_mode mode) ++{ AuUnsupport(); return 0; } ++#endif ++static bool aufs_isolate_page(struct page *page, isolate_mode_t mode) ++{ AuUnsupport(); return true; } ++static void aufs_putback_page(struct page *page) ++{ AuUnsupport(); } ++static int aufs_launder_page(struct page *page) ++{ AuUnsupport(); return 0; } ++static int aufs_is_partially_uptodate(struct page *page, ++ unsigned long from, ++ unsigned long count) ++{ AuUnsupport(); return 0; } ++static void aufs_is_dirty_writeback(struct page *page, bool *dirty, ++ bool *writeback) ++{ AuUnsupport(); } ++static int aufs_error_remove_page(struct address_space *mapping, ++ struct page *page) ++{ AuUnsupport(); return 0; } ++static int aufs_swap_activate(struct swap_info_struct *sis, struct file *file, ++ sector_t *span) ++{ AuUnsupport(); return 0; } ++static void aufs_swap_deactivate(struct file *file) ++{ AuUnsupport(); } ++#endif /* CONFIG_AUFS_DEBUG */ ++ ++const struct address_space_operations aufs_aop = { ++ .readpage = aufs_readpage, ++ .direct_IO = aufs_direct_IO, ++#ifdef CONFIG_AUFS_DEBUG ++ .writepage = aufs_writepage, ++ /* no writepages, because of writepage */ ++ .set_page_dirty = aufs_set_page_dirty, ++ /* no readpages, because of readpage */ ++ .write_begin = aufs_write_begin, ++ .write_end = aufs_write_end, ++ /* no bmap, no block device */ ++ .invalidatepage = aufs_invalidatepage, ++ .releasepage = aufs_releasepage, ++ /* is fallback_migrate_page ok? */ ++ /* .migratepage = aufs_migratepage, */ ++ .isolate_page = aufs_isolate_page, ++ .putback_page = aufs_putback_page, ++ .launder_page = aufs_launder_page, ++ .is_partially_uptodate = aufs_is_partially_uptodate, ++ .is_dirty_writeback = aufs_is_dirty_writeback, ++ .error_remove_page = aufs_error_remove_page, ++ .swap_activate = aufs_swap_activate, ++ .swap_deactivate = aufs_swap_deactivate ++#endif /* CONFIG_AUFS_DEBUG */ ++}; +diff -Naur null/fs/aufs/file.h linux-5.15.36/fs/aufs/file.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/file.h 2022-05-10 16:51:39.871744219 +0300 +@@ -0,0 +1,342 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * file operations ++ */ ++ ++#ifndef __AUFS_FILE_H__ ++#define __AUFS_FILE_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++#include ++#include "rwsem.h" ++ ++struct au_branch; ++struct au_hfile { ++ struct file *hf_file; ++ struct au_branch *hf_br; ++}; ++ ++struct au_vdir; ++struct au_fidir { ++ aufs_bindex_t fd_bbot; ++ aufs_bindex_t fd_nent; ++ struct au_vdir *fd_vdir_cache; ++ struct au_hfile fd_hfile[]; ++}; ++ ++static inline int au_fidir_sz(int nent) ++{ ++ AuDebugOn(nent < 0); ++ return sizeof(struct au_fidir) + sizeof(struct au_hfile) * nent; ++} ++ ++struct au_finfo { ++ atomic_t fi_generation; ++ ++ struct au_rwsem fi_rwsem; ++ aufs_bindex_t fi_btop; ++ ++ /* do not union them */ ++ struct { /* for non-dir */ ++ struct au_hfile fi_htop; ++ atomic_t fi_mmapped; ++ }; ++ struct au_fidir *fi_hdir; /* for dir only */ ++ ++ struct hlist_bl_node fi_hlist; ++ struct file *fi_file; /* very ugly */ ++ struct rcu_head rcu; ++} ____cacheline_aligned_in_smp; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* file.c */ ++extern const struct address_space_operations aufs_aop; ++unsigned int au_file_roflags(unsigned int flags); ++struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, ++ struct file *file, int force_wr); ++struct au_do_open_args { ++ int aopen; ++ int (*open)(struct file *file, int flags, ++ struct file *h_file); ++ struct au_fidir *fidir; ++ struct file *h_file; ++}; ++int au_do_open(struct file *file, struct au_do_open_args *args); ++int au_reopen_nondir(struct file *file); ++struct au_pin; ++int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin); ++int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), ++ int wlock, unsigned int fi_lsc); ++int au_do_flush(struct file *file, fl_owner_t id, ++ int (*flush)(struct file *file, fl_owner_t id)); ++ ++/* poll.c */ ++#ifdef CONFIG_AUFS_POLL ++__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt); ++#endif ++ ++#ifdef CONFIG_AUFS_BR_HFSPLUS ++/* hfsplus.c */ ++struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, ++ int force_wr); ++void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, ++ struct file *h_file); ++#else ++AuStub(struct file *, au_h_open_pre, return NULL, struct dentry *dentry, ++ aufs_bindex_t bindex, int force_wr) ++AuStubVoid(au_h_open_post, struct dentry *dentry, aufs_bindex_t bindex, ++ struct file *h_file); ++#endif ++ ++/* f_op.c */ ++extern const struct file_operations aufs_file_fop; ++int au_do_open_nondir(struct file *file, int flags, struct file *h_file); ++int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file); ++struct file *au_read_pre(struct file *file, int keep_fi, unsigned int lsc); ++ ++/* finfo.c */ ++void au_hfput(struct au_hfile *hf, int execed); ++void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, ++ struct file *h_file); ++ ++void au_update_figen(struct file *file); ++struct au_fidir *au_fidir_alloc(struct super_block *sb); ++int au_fidir_realloc(struct au_finfo *finfo, int nbr, int may_shrink); ++ ++void au_fi_init_once(void *_fi); ++void au_finfo_fin(struct file *file); ++int au_finfo_init(struct file *file, struct au_fidir *fidir); ++ ++/* ioctl.c */ ++long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg); ++#ifdef CONFIG_COMPAT ++long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, ++ unsigned long arg); ++long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, ++ unsigned long arg); ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct au_finfo *au_fi(struct file *file) ++{ ++ return file->private_data; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define fi_read_lock(f) au_rw_read_lock(&au_fi(f)->fi_rwsem) ++#define fi_write_lock(f) au_rw_write_lock(&au_fi(f)->fi_rwsem) ++#define fi_read_trylock(f) au_rw_read_trylock(&au_fi(f)->fi_rwsem) ++#define fi_write_trylock(f) au_rw_write_trylock(&au_fi(f)->fi_rwsem) ++/* ++#define fi_read_trylock_nested(f) \ ++ au_rw_read_trylock_nested(&au_fi(f)->fi_rwsem) ++#define fi_write_trylock_nested(f) \ ++ au_rw_write_trylock_nested(&au_fi(f)->fi_rwsem) ++*/ ++ ++#define fi_read_unlock(f) au_rw_read_unlock(&au_fi(f)->fi_rwsem) ++#define fi_write_unlock(f) au_rw_write_unlock(&au_fi(f)->fi_rwsem) ++#define fi_downgrade_lock(f) au_rw_dgrade_lock(&au_fi(f)->fi_rwsem) ++ ++/* lock subclass for finfo */ ++enum { ++ AuLsc_FI_1, ++ AuLsc_FI_2 ++}; ++ ++static inline void fi_read_lock_nested(struct file *f, unsigned int lsc) ++{ ++ au_rw_read_lock_nested(&au_fi(f)->fi_rwsem, lsc); ++} ++ ++static inline void fi_write_lock_nested(struct file *f, unsigned int lsc) ++{ ++ au_rw_write_lock_nested(&au_fi(f)->fi_rwsem, lsc); ++} ++ ++/* ++ * fi_read_lock_1, fi_write_lock_1, ++ * fi_read_lock_2, fi_write_lock_2 ++ */ ++#define AuReadLockFunc(name) \ ++static inline void fi_read_lock_##name(struct file *f) \ ++{ fi_read_lock_nested(f, AuLsc_FI_##name); } ++ ++#define AuWriteLockFunc(name) \ ++static inline void fi_write_lock_##name(struct file *f) \ ++{ fi_write_lock_nested(f, AuLsc_FI_##name); } ++ ++#define AuRWLockFuncs(name) \ ++ AuReadLockFunc(name) \ ++ AuWriteLockFunc(name) ++ ++AuRWLockFuncs(1); ++AuRWLockFuncs(2); ++ ++#undef AuReadLockFunc ++#undef AuWriteLockFunc ++#undef AuRWLockFuncs ++ ++#define FiMustNoWaiters(f) AuRwMustNoWaiters(&au_fi(f)->fi_rwsem) ++#define FiMustAnyLock(f) AuRwMustAnyLock(&au_fi(f)->fi_rwsem) ++#define FiMustWriteLock(f) AuRwMustWriteLock(&au_fi(f)->fi_rwsem) ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* todo: hard/soft set? */ ++static inline aufs_bindex_t au_fbtop(struct file *file) ++{ ++ FiMustAnyLock(file); ++ return au_fi(file)->fi_btop; ++} ++ ++static inline aufs_bindex_t au_fbbot_dir(struct file *file) ++{ ++ FiMustAnyLock(file); ++ AuDebugOn(!au_fi(file)->fi_hdir); ++ return au_fi(file)->fi_hdir->fd_bbot; ++} ++ ++static inline struct au_vdir *au_fvdir_cache(struct file *file) ++{ ++ FiMustAnyLock(file); ++ AuDebugOn(!au_fi(file)->fi_hdir); ++ return au_fi(file)->fi_hdir->fd_vdir_cache; ++} ++ ++static inline void au_set_fbtop(struct file *file, aufs_bindex_t bindex) ++{ ++ FiMustWriteLock(file); ++ au_fi(file)->fi_btop = bindex; ++} ++ ++static inline void au_set_fbbot_dir(struct file *file, aufs_bindex_t bindex) ++{ ++ FiMustWriteLock(file); ++ AuDebugOn(!au_fi(file)->fi_hdir); ++ au_fi(file)->fi_hdir->fd_bbot = bindex; ++} ++ ++static inline void au_set_fvdir_cache(struct file *file, ++ struct au_vdir *vdir_cache) ++{ ++ FiMustWriteLock(file); ++ AuDebugOn(!au_fi(file)->fi_hdir); ++ au_fi(file)->fi_hdir->fd_vdir_cache = vdir_cache; ++} ++ ++static inline struct file *au_hf_top(struct file *file) ++{ ++ FiMustAnyLock(file); ++ AuDebugOn(au_fi(file)->fi_hdir); ++ return au_fi(file)->fi_htop.hf_file; ++} ++ ++static inline struct file *au_hf_dir(struct file *file, aufs_bindex_t bindex) ++{ ++ FiMustAnyLock(file); ++ AuDebugOn(!au_fi(file)->fi_hdir); ++ return au_fi(file)->fi_hdir->fd_hfile[0 + bindex].hf_file; ++} ++ ++/* todo: memory barrier? */ ++static inline unsigned int au_figen(struct file *f) ++{ ++ return atomic_read(&au_fi(f)->fi_generation); ++} ++ ++static inline void au_set_mmapped(struct file *f) ++{ ++ if (atomic_inc_return(&au_fi(f)->fi_mmapped)) ++ return; ++ pr_warn("fi_mmapped wrapped around\n"); ++ while (!atomic_inc_return(&au_fi(f)->fi_mmapped)) ++ ; ++} ++ ++static inline void au_unset_mmapped(struct file *f) ++{ ++ atomic_dec(&au_fi(f)->fi_mmapped); ++} ++ ++static inline int au_test_mmapped(struct file *f) ++{ ++ return atomic_read(&au_fi(f)->fi_mmapped); ++} ++ ++/* customize vma->vm_file */ ++ ++static inline void au_do_vm_file_reset(struct vm_area_struct *vma, ++ struct file *file) ++{ ++ struct file *f; ++ ++ f = vma->vm_file; ++ get_file(file); ++ vma->vm_file = file; ++ fput(f); ++} ++ ++#ifdef CONFIG_MMU ++#define AuDbgVmRegion(file, vma) do {} while (0) ++ ++static inline void au_vm_file_reset(struct vm_area_struct *vma, ++ struct file *file) ++{ ++ au_do_vm_file_reset(vma, file); ++} ++#else ++#define AuDbgVmRegion(file, vma) \ ++ AuDebugOn((vma)->vm_region && (vma)->vm_region->vm_file != (file)) ++ ++static inline void au_vm_file_reset(struct vm_area_struct *vma, ++ struct file *file) ++{ ++ struct file *f; ++ ++ au_do_vm_file_reset(vma, file); ++ f = vma->vm_region->vm_file; ++ get_file(file); ++ vma->vm_region->vm_file = file; ++ fput(f); ++} ++#endif /* CONFIG_MMU */ ++ ++/* handle vma->vm_prfile */ ++static inline void au_vm_prfile_set(struct vm_area_struct *vma, ++ struct file *file) ++{ ++ get_file(file); ++ vma->vm_prfile = file; ++#ifndef CONFIG_MMU ++ get_file(file); ++ vma->vm_region->vm_prfile = file; ++#endif ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_FILE_H__ */ +diff -Naur null/fs/aufs/finfo.c linux-5.15.36/fs/aufs/finfo.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/finfo.c 2022-05-10 16:51:39.871744219 +0300 +@@ -0,0 +1,149 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * file private data ++ */ ++ ++#include "aufs.h" ++ ++void au_hfput(struct au_hfile *hf, int execed) ++{ ++ if (execed) ++ allow_write_access(hf->hf_file); ++ fput(hf->hf_file); ++ hf->hf_file = NULL; ++ au_lcnt_dec(&hf->hf_br->br_nfiles); ++ hf->hf_br = NULL; ++} ++ ++void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, struct file *val) ++{ ++ struct au_finfo *finfo = au_fi(file); ++ struct au_hfile *hf; ++ struct au_fidir *fidir; ++ ++ fidir = finfo->fi_hdir; ++ if (!fidir) { ++ AuDebugOn(finfo->fi_btop != bindex); ++ hf = &finfo->fi_htop; ++ } else ++ hf = fidir->fd_hfile + bindex; ++ ++ if (hf && hf->hf_file) ++ au_hfput(hf, vfsub_file_execed(file)); ++ if (val) { ++ FiMustWriteLock(file); ++ AuDebugOn(IS_ERR_OR_NULL(file->f_path.dentry)); ++ hf->hf_file = val; ++ hf->hf_br = au_sbr(file->f_path.dentry->d_sb, bindex); ++ } ++} ++ ++void au_update_figen(struct file *file) ++{ ++ atomic_set(&au_fi(file)->fi_generation, au_digen(file->f_path.dentry)); ++ /* smp_mb(); */ /* atomic_set */ ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_fidir *au_fidir_alloc(struct super_block *sb) ++{ ++ struct au_fidir *fidir; ++ int nbr; ++ ++ nbr = au_sbbot(sb) + 1; ++ if (nbr < 2) ++ nbr = 2; /* initial allocate for 2 branches */ ++ fidir = kzalloc(au_fidir_sz(nbr), GFP_NOFS); ++ if (fidir) { ++ fidir->fd_bbot = -1; ++ fidir->fd_nent = nbr; ++ } ++ ++ return fidir; ++} ++ ++int au_fidir_realloc(struct au_finfo *finfo, int nbr, int may_shrink) ++{ ++ int err; ++ struct au_fidir *fidir, *p; ++ ++ AuRwMustWriteLock(&finfo->fi_rwsem); ++ fidir = finfo->fi_hdir; ++ AuDebugOn(!fidir); ++ ++ err = -ENOMEM; ++ p = au_kzrealloc(fidir, au_fidir_sz(fidir->fd_nent), au_fidir_sz(nbr), ++ GFP_NOFS, may_shrink); ++ if (p) { ++ p->fd_nent = nbr; ++ finfo->fi_hdir = p; ++ err = 0; ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_finfo_fin(struct file *file) ++{ ++ struct au_finfo *finfo; ++ ++ au_lcnt_dec(&au_sbi(file->f_path.dentry->d_sb)->si_nfiles); ++ ++ finfo = au_fi(file); ++ AuDebugOn(finfo->fi_hdir); ++ AuRwDestroy(&finfo->fi_rwsem); ++ au_cache_free_finfo(finfo); ++} ++ ++void au_fi_init_once(void *_finfo) ++{ ++ struct au_finfo *finfo = _finfo; ++ ++ au_rw_init(&finfo->fi_rwsem); ++} ++ ++int au_finfo_init(struct file *file, struct au_fidir *fidir) ++{ ++ int err; ++ struct au_finfo *finfo; ++ struct dentry *dentry; ++ ++ err = -ENOMEM; ++ dentry = file->f_path.dentry; ++ finfo = au_cache_alloc_finfo(); ++ if (unlikely(!finfo)) ++ goto out; ++ ++ err = 0; ++ au_lcnt_inc(&au_sbi(dentry->d_sb)->si_nfiles); ++ au_rw_write_lock(&finfo->fi_rwsem); ++ finfo->fi_btop = -1; ++ finfo->fi_hdir = fidir; ++ atomic_set(&finfo->fi_generation, au_digen(dentry)); ++ /* smp_mb(); */ /* atomic_set */ ++ ++ file->private_data = finfo; ++ ++out: ++ return err; ++} +diff -Naur null/fs/aufs/f_op.c linux-5.15.36/fs/aufs/f_op.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/f_op.c 2022-05-10 16:51:39.870744219 +0300 +@@ -0,0 +1,771 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * file and vm operations ++ */ ++ ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++int au_do_open_nondir(struct file *file, int flags, struct file *h_file) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct dentry *dentry, *h_dentry; ++ struct au_finfo *finfo; ++ struct inode *h_inode; ++ ++ FiMustWriteLock(file); ++ ++ err = 0; ++ dentry = file->f_path.dentry; ++ AuDebugOn(IS_ERR_OR_NULL(dentry)); ++ finfo = au_fi(file); ++ memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); ++ atomic_set(&finfo->fi_mmapped, 0); ++ bindex = au_dbtop(dentry); ++ if (!h_file) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); ++ if (unlikely(err)) ++ goto out; ++ h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); ++ if (IS_ERR(h_file)) { ++ err = PTR_ERR(h_file); ++ goto out; ++ } ++ } else { ++ h_dentry = h_file->f_path.dentry; ++ err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); ++ if (unlikely(err)) ++ goto out; ++ /* br ref is already inc-ed */ ++ } ++ ++ if ((flags & __O_TMPFILE) ++ && !(flags & O_EXCL)) { ++ h_inode = file_inode(h_file); ++ spin_lock(&h_inode->i_lock); ++ h_inode->i_state |= I_LINKABLE; ++ spin_unlock(&h_inode->i_lock); ++ } ++ au_set_fbtop(file, bindex); ++ au_set_h_fptr(file, bindex, h_file); ++ au_update_figen(file); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ ++out: ++ return err; ++} ++ ++static int aufs_open_nondir(struct inode *inode __maybe_unused, ++ struct file *file) ++{ ++ int err; ++ struct super_block *sb; ++ struct au_do_open_args args = { ++ .open = au_do_open_nondir ++ }; ++ ++ AuDbg("%pD, f_flags 0x%x, f_mode 0x%x\n", ++ file, vfsub_file_flags(file), file->f_mode); ++ ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ err = au_do_open(file, &args); ++ si_read_unlock(sb); ++ return err; ++} ++ ++int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) ++{ ++ struct au_finfo *finfo; ++ aufs_bindex_t bindex; ++ ++ finfo = au_fi(file); ++ au_hbl_del(&finfo->fi_hlist, ++ &au_sbi(file->f_path.dentry->d_sb)->si_files); ++ bindex = finfo->fi_btop; ++ if (bindex >= 0) ++ au_set_h_fptr(file, bindex, NULL); ++ ++ au_finfo_fin(file); ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_do_flush_nondir(struct file *file, fl_owner_t id) ++{ ++ int err; ++ struct file *h_file; ++ ++ err = 0; ++ h_file = au_hf_top(file); ++ if (h_file) ++ err = vfsub_flush(h_file, id); ++ return err; ++} ++ ++static int aufs_flush_nondir(struct file *file, fl_owner_t id) ++{ ++ return au_do_flush(file, id, au_do_flush_nondir); ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * read and write functions acquire [fdi]_rwsem once, but release before ++ * mmap_sem. This is because to stop a race condition between mmap(2). ++ * Releasing these aufs-rwsem should be safe, no branch-management (by keeping ++ * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in ++ * read functions after [fdi]_rwsem are released, but it should be harmless. ++ */ ++ ++/* Callers should call au_read_post() or fput() in the end */ ++struct file *au_read_pre(struct file *file, int keep_fi, unsigned int lsc) ++{ ++ struct file *h_file; ++ int err; ++ ++ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0, lsc); ++ if (!err) { ++ di_read_unlock(file->f_path.dentry, AuLock_IR); ++ h_file = au_hf_top(file); ++ get_file(h_file); ++ if (!keep_fi) ++ fi_read_unlock(file); ++ } else ++ h_file = ERR_PTR(err); ++ ++ return h_file; ++} ++ ++static void au_read_post(struct inode *inode, struct file *h_file) ++{ ++ /* update without lock, I don't think it a problem */ ++ fsstack_copy_attr_atime(inode, file_inode(h_file)); ++ fput(h_file); ++} ++ ++struct au_write_pre { ++ /* input */ ++ unsigned int lsc; ++ ++ /* output */ ++ blkcnt_t blks; ++ aufs_bindex_t btop; ++}; ++ ++/* ++ * return with iinfo is write-locked ++ * callers should call au_write_post() or iinfo_write_unlock() + fput() in the ++ * end ++ */ ++static struct file *au_write_pre(struct file *file, int do_ready, ++ struct au_write_pre *wpre) ++{ ++ struct file *h_file; ++ struct dentry *dentry; ++ int err; ++ unsigned int lsc; ++ struct au_pin pin; ++ ++ lsc = 0; ++ if (wpre) ++ lsc = wpre->lsc; ++ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1, lsc); ++ h_file = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ dentry = file->f_path.dentry; ++ if (do_ready) { ++ err = au_ready_to_write(file, -1, &pin); ++ if (unlikely(err)) { ++ h_file = ERR_PTR(err); ++ di_write_unlock(dentry); ++ goto out_fi; ++ } ++ } ++ ++ di_downgrade_lock(dentry, /*flags*/0); ++ if (wpre) ++ wpre->btop = au_fbtop(file); ++ h_file = au_hf_top(file); ++ get_file(h_file); ++ if (wpre) ++ wpre->blks = file_inode(h_file)->i_blocks; ++ if (do_ready) ++ au_unpin(&pin); ++ di_read_unlock(dentry, /*flags*/0); ++ ++out_fi: ++ fi_write_unlock(file); ++out: ++ return h_file; ++} ++ ++static void au_write_post(struct inode *inode, struct file *h_file, ++ struct au_write_pre *wpre, ssize_t written) ++{ ++ struct inode *h_inode; ++ ++ au_cpup_attr_timesizes(inode); ++ AuDebugOn(au_ibtop(inode) != wpre->btop); ++ h_inode = file_inode(h_file); ++ inode->i_mode = h_inode->i_mode; ++ ii_write_unlock(inode); ++ /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ ++ if (written > 0) ++ au_fhsm_wrote(inode->i_sb, wpre->btop, ++ /*force*/h_inode->i_blocks > wpre->blks); ++ fput(h_file); ++} ++ ++/* ++ * todo: very ugly ++ * it locks both of i_mutex and si_rwsem for read in safe. ++ * if the plink maintenance mode continues forever (that is the problem), ++ * may loop forever. ++ */ ++static void au_mtx_and_read_lock(struct inode *inode) ++{ ++ int err; ++ struct super_block *sb = inode->i_sb; ++ ++ while (1) { ++ inode_lock(inode); ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (!err) ++ break; ++ inode_unlock(inode); ++ si_read_lock(sb, AuLock_NOPLMW); ++ si_read_unlock(sb); ++ } ++} ++ ++static ssize_t au_do_iter(struct file *h_file, int rw, struct kiocb *kio, ++ struct iov_iter *iov_iter) ++{ ++ ssize_t err; ++ struct file *file; ++ ssize_t (*iter)(struct kiocb *, struct iov_iter *); ++ ++ err = security_file_permission(h_file, rw); ++ if (unlikely(err)) ++ goto out; ++ ++ err = -ENOSYS; /* the branch doesn't have its ->(read|write)_iter() */ ++ iter = NULL; ++ if (rw == MAY_READ) ++ iter = h_file->f_op->read_iter; ++ else if (rw == MAY_WRITE) ++ iter = h_file->f_op->write_iter; ++ ++ file = kio->ki_filp; ++ kio->ki_filp = h_file; ++ if (iter) { ++ lockdep_off(); ++ err = iter(kio, iov_iter); ++ lockdep_on(); ++ } else ++ /* currently there is no such fs */ ++ WARN_ON_ONCE(1); ++ kio->ki_filp = file; ++ ++out: ++ return err; ++} ++ ++static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) ++{ ++ ssize_t err; ++ struct file *file, *h_file; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ file = kio->ki_filp; ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/1, /*lsc*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ if (au_test_loopback_kthread()) { ++ au_warn_loopback(h_file->f_path.dentry->d_sb); ++ if (file->f_mapping != h_file->f_mapping) { ++ file->f_mapping = h_file->f_mapping; ++ smp_mb(); /* unnecessary? */ ++ } ++ } ++ fi_read_unlock(file); ++ ++ err = au_do_iter(h_file, MAY_READ, kio, iov_iter); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ au_read_post(inode, h_file); ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++static ssize_t aufs_write_iter(struct kiocb *kio, struct iov_iter *iov_iter) ++{ ++ ssize_t err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *file, *h_file; ++ ++ file = kio->ki_filp; ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ wpre.lsc = 0; ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter); ++ au_write_post(inode, h_file, &wpre, err); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ inode_unlock(inode); ++ return err; ++} ++ ++/* ++ * We may be able to remove aufs_splice_{read,write}() since almost all FSes ++ * don't have their own .splice_{read,write} implimentations, and they use ++ * generic_file_splice_read() and iter_file_splice_write() who can act like the ++ * simple converters to f_op->iter_read() and ->iter_write(). ++ * But we keep our own implementations because some non-mainlined FSes may have ++ * their own .splice_{read,write} implimentations and aufs doesn't want to take ++ * away an opportunity to co-work with aufs from them. ++ */ ++static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags) ++{ ++ ssize_t err; ++ struct file *h_file; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = vfsub_splice_to(h_file, ppos, pipe, len, flags); ++ /* todo: necessary? */ ++ /* file->f_ra = h_file->f_ra; */ ++ au_read_post(inode, h_file); ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++static ssize_t ++aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, ++ size_t len, unsigned int flags) ++{ ++ ssize_t err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ wpre.lsc = 0; ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = vfsub_splice_from(pipe, h_file, ppos, len, flags); ++ au_write_post(inode, h_file, &wpre, err); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ inode_unlock(inode); ++ return err; ++} ++ ++static long aufs_fallocate(struct file *file, int mode, loff_t offset, ++ loff_t len) ++{ ++ long err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ wpre.lsc = 0; ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ lockdep_off(); ++ err = vfs_fallocate(h_file, mode, offset, len); ++ lockdep_on(); ++ au_write_post(inode, h_file, &wpre, /*written*/1); ++ ++out: ++ si_read_unlock(inode->i_sb); ++ inode_unlock(inode); ++ return err; ++} ++ ++static ssize_t aufs_copy_file_range(struct file *src, loff_t src_pos, ++ struct file *dst, loff_t dst_pos, ++ size_t len, unsigned int flags) ++{ ++ ssize_t err; ++ struct au_write_pre wpre; ++ enum { SRC, DST }; ++ struct { ++ struct inode *inode; ++ struct file *h_file; ++ struct super_block *h_sb; ++ } a[2]; ++#define a_src a[SRC] ++#define a_dst a[DST] ++ ++ err = -EINVAL; ++ a_src.inode = file_inode(src); ++ if (unlikely(!S_ISREG(a_src.inode->i_mode))) ++ goto out; ++ a_dst.inode = file_inode(dst); ++ if (unlikely(!S_ISREG(a_dst.inode->i_mode))) ++ goto out; ++ ++ au_mtx_and_read_lock(a_dst.inode); ++ /* ++ * in order to match the order in di_write_lock2_{child,parent}(), ++ * use f_path.dentry for this comparison. ++ */ ++ if (src->f_path.dentry < dst->f_path.dentry) { ++ a_src.h_file = au_read_pre(src, /*keep_fi*/1, AuLsc_FI_1); ++ err = PTR_ERR(a_src.h_file); ++ if (IS_ERR(a_src.h_file)) ++ goto out_si; ++ ++ wpre.lsc = AuLsc_FI_2; ++ a_dst.h_file = au_write_pre(dst, /*do_ready*/1, &wpre); ++ err = PTR_ERR(a_dst.h_file); ++ if (IS_ERR(a_dst.h_file)) { ++ au_read_post(a_src.inode, a_src.h_file); ++ goto out_si; ++ } ++ } else { ++ wpre.lsc = AuLsc_FI_1; ++ a_dst.h_file = au_write_pre(dst, /*do_ready*/1, &wpre); ++ err = PTR_ERR(a_dst.h_file); ++ if (IS_ERR(a_dst.h_file)) ++ goto out_si; ++ ++ a_src.h_file = au_read_pre(src, /*keep_fi*/1, AuLsc_FI_2); ++ err = PTR_ERR(a_src.h_file); ++ if (IS_ERR(a_src.h_file)) { ++ au_write_post(a_dst.inode, a_dst.h_file, &wpre, ++ /*written*/0); ++ goto out_si; ++ } ++ } ++ ++ err = -EXDEV; ++ a_src.h_sb = file_inode(a_src.h_file)->i_sb; ++ a_dst.h_sb = file_inode(a_dst.h_file)->i_sb; ++ if (unlikely(a_src.h_sb != a_dst.h_sb)) { ++ AuDbgFile(src); ++ AuDbgFile(dst); ++ goto out_file; ++ } ++ ++ err = vfsub_copy_file_range(a_src.h_file, src_pos, a_dst.h_file, ++ dst_pos, len, flags); ++ ++out_file: ++ au_write_post(a_dst.inode, a_dst.h_file, &wpre, err); ++ fi_read_unlock(src); ++ au_read_post(a_src.inode, a_src.h_file); ++out_si: ++ si_read_unlock(a_dst.inode->i_sb); ++ inode_unlock(a_dst.inode); ++out: ++ return err; ++#undef a_src ++#undef a_dst ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * The locking order around current->mmap_sem. ++ * - in most and regular cases ++ * file I/O syscall -- aufs_read() or something ++ * -- si_rwsem for read -- mmap_sem ++ * (Note that [fdi]i_rwsem are released before mmap_sem). ++ * - in mmap case ++ * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem ++ * This AB-BA order is definitely bad, but is not a problem since "si_rwsem for ++ * read" allows multiple processes to acquire it and [fdi]i_rwsem are not held ++ * in file I/O. Aufs needs to stop lockdep in aufs_mmap() though. ++ * It means that when aufs acquires si_rwsem for write, the process should never ++ * acquire mmap_sem. ++ * ++ * Actually aufs_iterate() holds [fdi]i_rwsem before mmap_sem, but this is not a ++ * problem either since any directory is not able to be mmap-ed. ++ * The similar scenario is applied to aufs_readlink() too. ++ */ ++ ++#if 0 /* stop calling security_file_mmap() */ ++/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ ++#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) ++ ++static unsigned long au_arch_prot_conv(unsigned long flags) ++{ ++ /* currently ppc64 only */ ++#ifdef CONFIG_PPC64 ++ /* cf. linux/arch/powerpc/include/asm/mman.h */ ++ AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); ++ return AuConv_VM_PROT(flags, SAO); ++#else ++ AuDebugOn(arch_calc_vm_prot_bits(-1)); ++ return 0; ++#endif ++} ++ ++static unsigned long au_prot_conv(unsigned long flags) ++{ ++ return AuConv_VM_PROT(flags, READ) ++ | AuConv_VM_PROT(flags, WRITE) ++ | AuConv_VM_PROT(flags, EXEC) ++ | au_arch_prot_conv(flags); ++} ++ ++/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ ++#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) ++ ++static unsigned long au_flag_conv(unsigned long flags) ++{ ++ return AuConv_VM_MAP(flags, GROWSDOWN) ++ | AuConv_VM_MAP(flags, DENYWRITE) ++ | AuConv_VM_MAP(flags, LOCKED); ++} ++#endif ++ ++static int aufs_mmap(struct file *file, struct vm_area_struct *vma) ++{ ++ int err; ++ const unsigned char wlock ++ = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); ++ struct super_block *sb; ++ struct file *h_file; ++ struct inode *inode; ++ ++ AuDbgVmRegion(file, vma); ++ ++ inode = file_inode(file); ++ sb = inode->i_sb; ++ lockdep_off(); ++ si_read_lock(sb, AuLock_NOPLMW); ++ ++ h_file = au_write_pre(file, wlock, /*wpre*/NULL); ++ lockdep_on(); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ err = 0; ++ au_set_mmapped(file); ++ au_vm_file_reset(vma, h_file); ++ /* ++ * we cannot call security_mmap_file() here since it may acquire ++ * mmap_sem or i_mutex. ++ * ++ * err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), ++ * au_flag_conv(vma->vm_flags)); ++ */ ++ if (!err) ++ err = call_mmap(h_file, vma); ++ if (!err) { ++ au_vm_prfile_set(vma, file); ++ fsstack_copy_attr_atime(inode, file_inode(h_file)); ++ goto out_fput; /* success */ ++ } ++ au_unset_mmapped(file); ++ au_vm_file_reset(vma, file); ++ ++out_fput: ++ lockdep_off(); ++ ii_write_unlock(inode); ++ lockdep_on(); ++ fput(h_file); ++out: ++ lockdep_off(); ++ si_read_unlock(sb); ++ lockdep_on(); ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, ++ int datasync) ++{ ++ int err; ++ struct au_write_pre wpre; ++ struct inode *inode; ++ struct file *h_file; ++ ++ err = 0; /* -EBADF; */ /* posix? */ ++ if (unlikely(!(file->f_mode & FMODE_WRITE))) ++ goto out; ++ ++ inode = file_inode(file); ++ au_mtx_and_read_lock(inode); ++ ++ wpre.lsc = 0; ++ h_file = au_write_pre(file, /*do_ready*/1, &wpre); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out_unlock; ++ ++ err = vfsub_fsync(h_file, &h_file->f_path, datasync); ++ au_write_post(inode, h_file, &wpre, /*written*/0); ++ ++out_unlock: ++ si_read_unlock(inode->i_sb); ++ inode_unlock(inode); ++out: ++ return err; ++} ++ ++static int aufs_fasync(int fd, struct file *file, int flag) ++{ ++ int err; ++ struct file *h_file; ++ struct super_block *sb; ++ ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ if (h_file->f_op->fasync) ++ err = h_file->f_op->fasync(fd, h_file, flag); ++ fput(h_file); /* instead of au_read_post() */ ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++static int aufs_setfl(struct file *file, unsigned long arg) ++{ ++ int err; ++ struct file *h_file; ++ struct super_block *sb; ++ ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out; ++ ++ /* stop calling h_file->fasync */ ++ arg |= vfsub_file_flags(file) & FASYNC; ++ err = setfl(/*unused fd*/-1, h_file, arg); ++ fput(h_file); /* instead of au_read_post() */ ++ ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* no one supports this operation, currently */ ++#if 0 /* reserved for future use */ ++static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, ++ size_t len, loff_t *pos, int more) ++{ ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++const struct file_operations aufs_file_fop = { ++ .owner = THIS_MODULE, ++ ++ .llseek = default_llseek, ++ ++ .read_iter = aufs_read_iter, ++ .write_iter = aufs_write_iter, ++ ++#ifdef CONFIG_AUFS_POLL ++ .poll = aufs_poll, ++#endif ++ .unlocked_ioctl = aufs_ioctl_nondir, ++#ifdef CONFIG_COMPAT ++ .compat_ioctl = aufs_compat_ioctl_nondir, ++#endif ++ .mmap = aufs_mmap, ++ .open = aufs_open_nondir, ++ .flush = aufs_flush_nondir, ++ .release = aufs_release_nondir, ++ .fsync = aufs_fsync_nondir, ++ .fasync = aufs_fasync, ++ /* .sendpage = aufs_sendpage, */ ++ .setfl = aufs_setfl, ++ .splice_write = aufs_splice_write, ++ .splice_read = aufs_splice_read, ++#if 0 /* reserved for future use */ ++ .aio_splice_write = aufs_aio_splice_write, ++ .aio_splice_read = aufs_aio_splice_read, ++#endif ++ .fallocate = aufs_fallocate, ++ .copy_file_range = aufs_copy_file_range ++}; +diff -Naur null/fs/aufs/fsctx.c linux-5.15.36/fs/aufs/fsctx.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/fsctx.c 2022-05-10 16:51:39.871744219 +0300 +@@ -0,0 +1,1242 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2022 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * fs context, aka new mount api ++ */ ++ ++#include ++#include "aufs.h" ++ ++struct au_fsctx_opts { ++ aufs_bindex_t bindex; ++ unsigned char skipped; ++ struct au_opt *opt, *opt_tail; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ struct au_opts opts; ++}; ++ ++/* stop extra interpretation of errno in mount(8), and strange error messages */ ++static int cvt_err(int err) ++{ ++ AuTraceErr(err); ++ ++ switch (err) { ++ case -ENOENT: ++ case -ENOTDIR: ++ case -EEXIST: ++ case -EIO: ++ err = -EINVAL; ++ } ++ return err; ++} ++ ++static int au_fsctx_reconfigure(struct fs_context *fc) ++{ ++ int err, do_dx; ++ unsigned int mntflags; ++ struct dentry *root; ++ struct super_block *sb; ++ struct inode *inode; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ AuDbg("fc %p\n", fc); ++ ++ root = fc->root; ++ sb = root->d_sb; ++ err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (!err) { ++ di_write_lock_child(root); ++ err = au_opts_verify(sb, fc->sb_flags, /*pending*/0); ++ aufs_write_unlock(root); ++ } ++ ++ inode = d_inode(root); ++ inode_lock(inode); ++ err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out; ++ di_write_lock_child(root); ++ ++ /* au_opts_remount() may return an error */ ++ err = au_opts_remount(sb, &a->opts); ++ ++ if (au_ftest_opts(a->opts.flags, REFRESH)) ++ au_remount_refresh(sb, au_ftest_opts(a->opts.flags, ++ REFRESH_IDOP)); ++ ++ if (au_ftest_opts(a->opts.flags, REFRESH_DYAOP)) { ++ mntflags = au_mntflags(sb); ++ do_dx = !!au_opt_test(mntflags, DIO); ++ au_dy_arefresh(do_dx); ++ } ++ ++ au_fhsm_wrote_all(sb, /*force*/1); /* ?? */ ++ aufs_write_unlock(root); ++ ++out: ++ inode_unlock(inode); ++ err = cvt_err(err); ++ AuTraceErr(err); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_fsctx_fill_super(struct super_block *sb, struct fs_context *fc) ++{ ++ int err; ++ struct au_fsctx_opts *a = fc->fs_private; ++ struct au_sbinfo *sbinfo = a->sbinfo; ++ struct dentry *root; ++ struct inode *inode; ++ ++ sbinfo->si_sb = sb; ++ sb->s_fs_info = sbinfo; ++ kobject_get(&sbinfo->si_kobj); ++ ++ __si_write_lock(sb); ++ si_pid_set(sb); ++ au_sbilist_add(sb); ++ ++ /* all timestamps always follow the ones on the branch */ ++ sb->s_flags |= SB_NOATIME | SB_NODIRATIME; ++ sb->s_flags |= SB_I_VERSION; /* do we really need this? */ ++ sb->s_op = &aufs_sop; ++ sb->s_d_op = &aufs_dop; ++ sb->s_magic = AUFS_SUPER_MAGIC; ++ sb->s_maxbytes = 0; ++ sb->s_stack_depth = 1; ++ au_export_init(sb); ++ au_xattr_init(sb); ++ ++ err = au_alloc_root(sb); ++ if (unlikely(err)) { ++ si_write_unlock(sb); ++ goto out; ++ } ++ root = sb->s_root; ++ inode = d_inode(root); ++ ii_write_lock_parent(inode); ++ aufs_write_unlock(root); ++ ++ /* lock vfs_inode first, then aufs. */ ++ inode_lock(inode); ++ aufs_write_lock(root); ++ err = au_opts_mount(sb, &a->opts); ++ AuTraceErr(err); ++ if (!err && au_ftest_si(sbinfo, NO_DREVAL)) { ++ sb->s_d_op = &aufs_dop_noreval; ++ /* infofc(fc, "%ps", sb->s_d_op); */ ++ pr_info("%ps\n", sb->s_d_op); ++ au_refresh_dop(root, /*force_reval*/0); ++ sbinfo->si_iop_array = aufs_iop_nogetattr; ++ au_refresh_iop(inode, /*force_getattr*/0); ++ } ++ aufs_write_unlock(root); ++ inode_unlock(inode); ++ if (!err) ++ goto out; /* success */ ++ ++ dput(root); ++ sb->s_root = NULL; ++ ++out: ++ if (unlikely(err)) ++ kobject_put(&sbinfo->si_kobj); ++ AuTraceErr(err); ++ err = cvt_err(err); ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_fsctx_get_tree(struct fs_context *fc) ++{ ++ int err; ++ ++ AuDbg("fc %p\n", fc); ++ err = get_tree_nodev(fc, au_fsctx_fill_super); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_fsctx_dump(struct au_opts *opts) ++{ ++#ifdef CONFIG_AUFS_DEBUG ++ /* reduce stack space */ ++ union { ++ struct au_opt_add *add; ++ struct au_opt_del *del; ++ struct au_opt_mod *mod; ++ struct au_opt_xino *xino; ++ struct au_opt_xino_itrunc *xino_itrunc; ++ struct au_opt_wbr_create *create; ++ } u; ++ struct au_opt *opt; ++ ++ opt = opts->opt; ++ while (opt->type != Opt_tail) { ++ switch (opt->type) { ++ case Opt_add: ++ u.add = &opt->add; ++ AuDbg("add {b%d, %s, 0x%x, %p}\n", ++ u.add->bindex, u.add->pathname, u.add->perm, ++ u.add->path.dentry); ++ break; ++ case Opt_del: ++ fallthrough; ++ case Opt_idel: ++ u.del = &opt->del; ++ AuDbg("del {%s, %p}\n", ++ u.del->pathname, u.del->h_path.dentry); ++ break; ++ case Opt_mod: ++ fallthrough; ++ case Opt_imod: ++ u.mod = &opt->mod; ++ AuDbg("mod {%s, 0x%x, %p}\n", ++ u.mod->path, u.mod->perm, u.mod->h_root); ++ break; ++ case Opt_append: ++ u.add = &opt->add; ++ AuDbg("append {b%d, %s, 0x%x, %p}\n", ++ u.add->bindex, u.add->pathname, u.add->perm, ++ u.add->path.dentry); ++ break; ++ case Opt_prepend: ++ u.add = &opt->add; ++ AuDbg("prepend {b%d, %s, 0x%x, %p}\n", ++ u.add->bindex, u.add->pathname, u.add->perm, ++ u.add->path.dentry); ++ break; ++ ++ case Opt_dirwh: ++ AuDbg("dirwh %d\n", opt->dirwh); ++ break; ++ case Opt_rdcache: ++ AuDbg("rdcache %d\n", opt->rdcache); ++ break; ++ case Opt_rdblk: ++ AuDbg("rdblk %d\n", opt->rdblk); ++ break; ++ case Opt_rdhash: ++ AuDbg("rdhash %u\n", opt->rdhash); ++ break; ++ ++ case Opt_xino: ++ u.xino = &opt->xino; ++ AuDbg("xino {%s %pD}\n", u.xino->path, u.xino->file); ++ break; ++ ++#define au_fsctx_TF(name) \ ++ case Opt_##name: \ ++ if (opt->tf) \ ++ AuLabel(name); \ ++ else \ ++ AuLabel(no##name); \ ++ break; ++ ++ /* simple true/false flag */ ++ au_fsctx_TF(trunc_xino); ++ au_fsctx_TF(trunc_xib); ++ au_fsctx_TF(dirperm1); ++ au_fsctx_TF(plink); ++ au_fsctx_TF(shwh); ++ au_fsctx_TF(dio); ++ au_fsctx_TF(warn_perm); ++ au_fsctx_TF(verbose); ++ au_fsctx_TF(sum); ++ au_fsctx_TF(dirren); ++ au_fsctx_TF(acl); ++#undef au_fsctx_TF ++ ++ case Opt_trunc_xino_path: ++ fallthrough; ++ case Opt_itrunc_xino: ++ u.xino_itrunc = &opt->xino_itrunc; ++ AuDbg("trunc_xino %d\n", u.xino_itrunc->bindex); ++ break; ++ case Opt_noxino: ++ AuLabel(noxino); ++ break; ++ ++ case Opt_list_plink: ++ AuLabel(list_plink); ++ break; ++ case Opt_udba: ++ AuDbg("udba %d, %s\n", ++ opt->udba, au_optstr_udba(opt->udba)); ++ break; ++ case Opt_diropq_a: ++ AuLabel(diropq_a); ++ break; ++ case Opt_diropq_w: ++ AuLabel(diropq_w); ++ break; ++ case Opt_wsum: ++ AuLabel(wsum); ++ break; ++ case Opt_wbr_create: ++ u.create = &opt->wbr_create; ++ AuDbg("create %d, %s\n", u.create->wbr_create, ++ au_optstr_wbr_create(u.create->wbr_create)); ++ switch (u.create->wbr_create) { ++ case AuWbrCreate_MFSV: ++ fallthrough; ++ case AuWbrCreate_PMFSV: ++ AuDbg("%d sec\n", u.create->mfs_second); ++ break; ++ case AuWbrCreate_MFSRR: ++ fallthrough; ++ case AuWbrCreate_TDMFS: ++ AuDbg("%llu watermark\n", ++ u.create->mfsrr_watermark); ++ break; ++ case AuWbrCreate_MFSRRV: ++ fallthrough; ++ case AuWbrCreate_TDMFSV: ++ fallthrough; ++ case AuWbrCreate_PMFSRRV: ++ AuDbg("%llu watermark, %d sec\n", ++ u.create->mfsrr_watermark, ++ u.create->mfs_second); ++ break; ++ } ++ break; ++ case Opt_wbr_copyup: ++ AuDbg("copyup %d, %s\n", opt->wbr_copyup, ++ au_optstr_wbr_copyup(opt->wbr_copyup)); ++ break; ++ case Opt_fhsm_sec: ++ AuDbg("fhsm_sec %u\n", opt->fhsm_second); ++ break; ++ ++ default: ++ AuDbg("type %d\n", opt->type); ++ BUG(); ++ } ++ opt++; ++ } ++#endif ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * For conditionally compiled mount options. ++ * Instead of fsparam_flag_no(), use this macro to distinguish ignore_silent. ++ */ ++#define au_ignore_flag(name, action) \ ++ fsparam_flag(name, action), \ ++ fsparam_flag("no" name, Opt_ignore_silent) ++ ++const struct fs_parameter_spec aufs_fsctx_paramspec[] = { ++ fsparam_string("br", Opt_br), ++ ++ /* "add=%d:%s" or "ins=%d:%s" */ ++ fsparam_string("add", Opt_add), ++ fsparam_string("ins", Opt_add), ++ fsparam_path("append", Opt_append), ++ fsparam_path("prepend", Opt_prepend), ++ ++ fsparam_path("del", Opt_del), ++ /* fsparam_s32("idel", Opt_idel), */ ++ fsparam_path("mod", Opt_mod), ++ /* fsparam_string("imod", Opt_imod), */ ++ ++ fsparam_s32("dirwh", Opt_dirwh), ++ ++ fsparam_path("xino", Opt_xino), ++ fsparam_flag("noxino", Opt_noxino), ++ fsparam_flag_no("trunc_xino", Opt_trunc_xino), ++ /* "trunc_xino_v=%d:%d" */ ++ /* fsparam_string("trunc_xino_v", Opt_trunc_xino_v), */ ++ fsparam_path("trunc_xino", Opt_trunc_xino_path), ++ fsparam_s32("itrunc_xino", Opt_itrunc_xino), ++ /* fsparam_path("zxino", Opt_zxino), */ ++ fsparam_flag_no("trunc_xib", Opt_trunc_xib), ++ ++#ifdef CONFIG_PROC_FS ++ fsparam_flag_no("plink", Opt_plink), ++#else ++ au_ignore_flag("plink", Opt_ignore), ++#endif ++ ++#ifdef CONFIG_AUFS_DEBUG ++ fsparam_flag("list_plink", Opt_list_plink), ++#endif ++ ++ fsparam_string("udba", Opt_udba), ++ ++ fsparam_flag_no("dio", Opt_dio), ++ ++#ifdef CONFIG_AUFS_DIRREN ++ fsparam_flag_no("dirren", Opt_dirren), ++#else ++ au_ignore_flag("dirren", Opt_ignore), ++#endif ++ ++#ifdef CONFIG_AUFS_FHSM ++ fsparam_s32("fhsm_sec", Opt_fhsm_sec), ++#else ++ fsparam_s32("fhsm_sec", Opt_ignore), ++#endif ++ ++ /* always | a | whiteouted | w */ ++ fsparam_string("diropq", Opt_diropq), ++ ++ fsparam_flag_no("warn_perm", Opt_warn_perm), ++ ++#ifdef CONFIG_AUFS_SHWH ++ fsparam_flag_no("shwh", Opt_shwh), ++#else ++ au_ignore_flag("shwh", Opt_err), ++#endif ++ ++ fsparam_flag_no("dirperm1", Opt_dirperm1), ++ ++ fsparam_flag_no("verbose", Opt_verbose), ++ fsparam_flag("v", Opt_verbose), ++ fsparam_flag("quiet", Opt_noverbose), ++ fsparam_flag("q", Opt_noverbose), ++ /* user-space may handle this */ ++ fsparam_flag("silent", Opt_noverbose), ++ ++ fsparam_flag_no("sum", Opt_sum), ++ fsparam_flag("wsum", Opt_wsum), ++ ++ fsparam_s32("rdcache", Opt_rdcache), ++ /* "def" or s32 */ ++ fsparam_string("rdblk", Opt_rdblk), ++ /* "def" or s32 */ ++ fsparam_string("rdhash", Opt_rdhash), ++ ++ fsparam_string("create", Opt_wbr_create), ++ fsparam_string("create_policy", Opt_wbr_create), ++ fsparam_string("cpup", Opt_wbr_copyup), ++ fsparam_string("copyup", Opt_wbr_copyup), ++ fsparam_string("copyup_policy", Opt_wbr_copyup), ++ ++ /* generic VFS flag */ ++#ifdef CONFIG_FS_POSIX_ACL ++ fsparam_flag_no("acl", Opt_acl), ++#else ++ au_ignore_flag("acl"), ++#endif ++ ++ /* internal use for the scripts */ ++ fsparam_string("si", Opt_ignore_silent), ++ ++ /* obsoleted, keep them temporary */ ++ fsparam_flag("nodlgt", Opt_ignore_silent), ++ fsparam_flag("clean_plink", Opt_ignore), ++ fsparam_string("dirs", Opt_br), ++ fsparam_u32("debug", Opt_ignore), ++ /* "whiteout" or "all" */ ++ fsparam_string("delete", Opt_ignore), ++ fsparam_string("imap", Opt_ignore), ++ ++ /* temporary workaround, due to old mount(8)? */ ++ fsparam_flag("relatime", Opt_ignore_silent), ++ ++ {} ++}; ++ ++static int au_fsctx_parse_do_add(struct fs_context *fc, struct au_opt *opt, ++ char *brspec, size_t speclen, ++ aufs_bindex_t bindex) ++{ ++ int err; ++ char *p; ++ ++ AuDbg("brspec %s\n", brspec); ++ ++ err = -ENOMEM; ++ if (!speclen) ++ speclen = strlen(brspec); ++ /* will be freed by au_fsctx_free() */ ++ p = kmemdup_nul(brspec, speclen, GFP_NOFS); ++ if (unlikely(!p)) { ++ errorfc(fc, "failed in %s", brspec); ++ goto out; ++ } ++ err = au_opt_add(opt, p, fc->sb_flags, bindex); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_fsctx_parse_br(struct fs_context *fc, char *brspec) ++{ ++ int err; ++ char *p; ++ struct au_fsctx_opts *a = fc->fs_private; ++ struct au_opt *opt = a->opt; ++ aufs_bindex_t bindex = a->bindex; ++ ++ AuDbg("brspec %s\n", brspec); ++ ++ err = -EINVAL; ++ while ((p = strsep(&brspec, ":")) && *p) { ++ err = au_fsctx_parse_do_add(fc, opt, p, /*len*/0, bindex); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ break; ++ bindex++; ++ opt++; ++ if (unlikely(opt > a->opt_tail)) { ++ err = -E2BIG; ++ bindex--; ++ opt--; ++ break; ++ } ++ opt->type = Opt_tail; ++ a->skipped = 1; ++ } ++ a->bindex = bindex; ++ a->opt = opt; ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_fsctx_parse_add(struct fs_context *fc, char *addspec) ++{ ++ int err, n; ++ char *p; ++ struct au_fsctx_opts *a = fc->fs_private; ++ struct au_opt *opt = a->opt; ++ ++ err = -EINVAL; ++ p = strchr(addspec, ':'); ++ if (unlikely(!p)) { ++ errorfc(fc, "bad arg in %s", addspec); ++ goto out; ++ } ++ *p++ = '\0'; ++ err = kstrtoint(addspec, 0, &n); ++ if (unlikely(err)) { ++ errorfc(fc, "bad integer in %s", addspec); ++ goto out; ++ } ++ AuDbg("n %d\n", n); ++ err = au_fsctx_parse_do_add(fc, opt, p, /*len*/0, n); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_fsctx_parse_del(struct fs_context *fc, struct au_opt_del *del, ++ struct fs_parameter *param) ++{ ++ int err; ++ ++ err = -ENOMEM; ++ /* will be freed by au_fsctx_free() */ ++ del->pathname = kmemdup_nul(param->string, param->size, GFP_NOFS); ++ if (unlikely(!del->pathname)) ++ goto out; ++ AuDbg("del %s\n", del->pathname); ++ err = vfsub_kern_path(del->pathname, AuOpt_LkupDirFlags, &del->h_path); ++ if (unlikely(err)) ++ errorfc(fc, "lookup failed %s (%d)", del->pathname, err); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++#if 0 /* reserved for future use */ ++static int au_fsctx_parse_idel(struct fs_context *fc, struct au_opt_del *del, ++ aufs_bindex_t bindex) ++{ ++ int err; ++ struct super_block *sb; ++ struct dentry *root; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ sb = a->sb; ++ AuDebugOn(!sb); ++ ++ err = -EINVAL; ++ root = sb->s_root; ++ aufs_read_lock(root, AuLock_FLUSH); ++ if (bindex < 0 || au_sbbot(sb) < bindex) { ++ errorfc(fc, "out of bounds, %d", bindex); ++ goto out; ++ } ++ ++ err = 0; ++ del->h_path.dentry = dget(au_h_dptr(root, bindex)); ++ del->h_path.mnt = mntget(au_sbr_mnt(sb, bindex)); ++ ++out: ++ aufs_read_unlock(root, !AuLock_IR); ++ AuTraceErr(err); ++ return err; ++} ++#endif ++ ++static int au_fsctx_parse_mod(struct fs_context *fc, struct au_opt_mod *mod, ++ struct fs_parameter *param) ++{ ++ int err; ++ struct path path; ++ char *p; ++ ++ err = -ENOMEM; ++ /* will be freed by au_fsctx_free() */ ++ mod->path = kmemdup_nul(param->string, param->size, GFP_NOFS); ++ if (unlikely(!mod->path)) ++ goto out; ++ ++ err = -EINVAL; ++ p = strchr(mod->path, '='); ++ if (unlikely(!p)) { ++ errorfc(fc, "no permission %s", mod->path); ++ goto out; ++ } ++ ++ *p++ = 0; ++ err = vfsub_kern_path(mod->path, AuOpt_LkupDirFlags, &path); ++ if (unlikely(err)) { ++ errorfc(fc, "lookup failed %s (%d)", mod->path, err); ++ goto out; ++ } ++ ++ mod->perm = au_br_perm_val(p); ++ AuDbg("mod path %s, perm 0x%x, %s", mod->path, mod->perm, p); ++ mod->h_root = dget(path.dentry); ++ path_put(&path); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++#if 0 /* reserved for future use */ ++static int au_fsctx_parse_imod(struct fs_context *fc, struct au_opt_mod *mod, ++ char *ibrspec) ++{ ++ int err, n; ++ char *p; ++ struct super_block *sb; ++ struct dentry *root; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ sb = a->sb; ++ AuDebugOn(!sb); ++ ++ err = -EINVAL; ++ p = strchr(ibrspec, ':'); ++ if (unlikely(!p)) { ++ errorfc(fc, "no index, %s", ibrspec); ++ goto out; ++ } ++ *p++ = '\0'; ++ err = kstrtoint(ibrspec, 0, &n); ++ if (unlikely(err)) { ++ errorfc(fc, "bad integer in %s", ibrspec); ++ goto out; ++ } ++ AuDbg("n %d\n", n); ++ ++ root = sb->s_root; ++ aufs_read_lock(root, AuLock_FLUSH); ++ if (n < 0 || au_sbbot(sb) < n) { ++ errorfc(fc, "out of bounds, %d", bindex); ++ goto out_root; ++ } ++ ++ err = 0; ++ mod->perm = au_br_perm_val(p); ++ AuDbg("mod path %s, perm 0x%x, %s\n", ++ mod->path, mod->perm, p); ++ mod->h_root = dget(au_h_dptr(root, bindex)); ++ ++out_root: ++ aufs_read_unlock(root, !AuLock_IR); ++out: ++ AuTraceErr(err); ++ return err; ++} ++#endif ++ ++static int au_fsctx_parse_xino(struct fs_context *fc, ++ struct au_opt_xino *xino, ++ struct fs_parameter *param) ++{ ++ int err; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ err = -ENOMEM; ++ /* will be freed by au_opts_free() */ ++ xino->path = kmemdup_nul(param->string, param->size, GFP_NOFS); ++ if (unlikely(!xino->path)) ++ goto out; ++ AuDbg("path %s\n", xino->path); ++ ++ xino->file = au_xino_create(a->sb, xino->path, /*silent*/0, ++ /*wbrtop*/0); ++ err = PTR_ERR(xino->file); ++ if (IS_ERR(xino->file)) { ++ xino->file = NULL; ++ goto out; ++ } ++ ++ err = 0; ++ if (unlikely(a->sb && xino->file->f_path.dentry->d_sb == a->sb)) { ++ err = -EINVAL; ++ errorfc(fc, "%s must be outside", xino->path); ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static ++int au_fsctx_parse_xino_itrunc_path(struct fs_context *fc, ++ struct au_opt_xino_itrunc *xino_itrunc, ++ char *pathname) ++{ ++ int err; ++ aufs_bindex_t bbot, bindex; ++ struct path path; ++ struct dentry *root; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ AuDebugOn(!a->sb); ++ ++ err = vfsub_kern_path(pathname, AuOpt_LkupDirFlags, &path); ++ if (unlikely(err)) { ++ errorfc(fc, "lookup failed %s (%d)", pathname, err); ++ goto out; ++ } ++ ++ xino_itrunc->bindex = -1; ++ root = a->sb->s_root; ++ aufs_read_lock(root, AuLock_FLUSH); ++ bbot = au_sbbot(a->sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ if (au_h_dptr(root, bindex) == path.dentry) { ++ xino_itrunc->bindex = bindex; ++ break; ++ } ++ } ++ aufs_read_unlock(root, !AuLock_IR); ++ path_put(&path); ++ ++ if (unlikely(xino_itrunc->bindex < 0)) { ++ err = -EINVAL; ++ errorfc(fc, "no such branch %s", pathname); ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_fsctx_parse_xino_itrunc(struct fs_context *fc, ++ struct au_opt_xino_itrunc *xino_itrunc, ++ unsigned int bindex) ++{ ++ int err; ++ aufs_bindex_t bbot; ++ struct super_block *sb; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ sb = a->sb; ++ AuDebugOn(!sb); ++ ++ err = 0; ++ si_noflush_read_lock(sb); ++ bbot = au_sbbot(sb); ++ si_read_unlock(sb); ++ if (bindex <= bbot) ++ xino_itrunc->bindex = bindex; ++ else { ++ err = -EINVAL; ++ errorfc(fc, "out of bounds, %u", bindex); ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_fsctx_parse_param(struct fs_context *fc, struct fs_parameter *param) ++{ ++ int err, token; ++ struct fs_parse_result result; ++ struct au_fsctx_opts *a = fc->fs_private; ++ struct au_opt *opt = a->opt; ++ ++ AuDbg("fc %p, param {key %s, string %s}\n", ++ fc, param->key, param->string); ++ err = fs_parse(fc, aufs_fsctx_paramspec, param, &result); ++ if (unlikely(err < 0)) ++ goto out; ++ token = err; ++ AuDbg("token %d, res{negated %d, uint64 %llu}\n", ++ token, result.negated, result.uint_64); ++ ++ err = -EINVAL; ++ a->skipped = 0; ++ switch (token) { ++ case Opt_br: ++ err = au_fsctx_parse_br(fc, param->string); ++ break; ++ case Opt_add: ++ err = au_fsctx_parse_add(fc, param->string); ++ break; ++ case Opt_append: ++ err = au_fsctx_parse_do_add(fc, opt, param->string, param->size, ++ /*dummy bindex*/1); ++ break; ++ case Opt_prepend: ++ err = au_fsctx_parse_do_add(fc, opt, param->string, param->size, ++ /*bindex*/0); ++ break; ++ ++ case Opt_del: ++ err = au_fsctx_parse_del(fc, &opt->del, param); ++ break; ++#if 0 /* reserved for future use */ ++ case Opt_idel: ++ if (!a->sb) { ++ err = 0; ++ a->skipped = 1; ++ break; ++ } ++ del->pathname = "(indexed)"; ++ err = au_opts_parse_idel(fc, &opt->del, result.uint_32); ++ break; ++#endif ++ ++ case Opt_mod: ++ err = au_fsctx_parse_mod(fc, &opt->mod, param); ++ break; ++#ifdef IMOD /* reserved for future use */ ++ case Opt_imod: ++ if (!a->sb) { ++ err = 0; ++ a->skipped = 1; ++ break; ++ } ++ u.mod->path = "(indexed)"; ++ err = au_opts_parse_imod(fc, &opt->mod, param->string); ++ break; ++#endif ++ ++ case Opt_xino: ++ err = au_fsctx_parse_xino(fc, &opt->xino, param); ++ break; ++ case Opt_trunc_xino_path: ++ if (!a->sb) { ++ errorfc(fc, "no such branch %s", param->string); ++ break; ++ } ++ err = au_fsctx_parse_xino_itrunc_path(fc, &opt->xino_itrunc, ++ param->string); ++ break; ++#if 0 ++ case Opt_trunc_xino_v: ++ if (!a->sb) { ++ err = 0; ++ a->skipped = 1; ++ break; ++ } ++ err = au_fsctx_parse_xino_itrunc_path(fc, &opt->xino_itrunc, ++ param->string); ++ break; ++#endif ++ case Opt_itrunc_xino: ++ if (!a->sb) { ++ errorfc(fc, "out of bounds %s", param->string); ++ break; ++ } ++ err = au_fsctx_parse_xino_itrunc(fc, &opt->xino_itrunc, ++ result.int_32); ++ break; ++ ++ case Opt_dirwh: ++ err = 0; ++ opt->dirwh = result.int_32; ++ break; ++ ++ case Opt_rdcache: ++ if (unlikely(result.int_32 > AUFS_RDCACHE_MAX)) { ++ errorfc(fc, "rdcache must be smaller than %d", ++ AUFS_RDCACHE_MAX); ++ break; ++ } ++ err = 0; ++ opt->rdcache = result.int_32; ++ break; ++ ++ case Opt_rdblk: ++ err = 0; ++ opt->rdblk = AUFS_RDBLK_DEF; ++ if (!strcmp(param->string, "def")) ++ break; ++ ++ err = kstrtoint(param->string, 0, &result.int_32); ++ if (unlikely(err)) { ++ errorfc(fc, "bad value in %s", param->key); ++ break; ++ } ++ err = -EINVAL; ++ if (unlikely(result.int_32 < 0 ++ || result.int_32 > KMALLOC_MAX_SIZE)) { ++ errorfc(fc, "bad value in %s", param->key); ++ break; ++ } ++ if (unlikely(result.int_32 && result.int_32 < NAME_MAX)) { ++ errorfc(fc, "rdblk must be larger than %d", NAME_MAX); ++ break; ++ } ++ err = 0; ++ opt->rdblk = result.int_32; ++ break; ++ ++ case Opt_rdhash: ++ err = 0; ++ opt->rdhash = AUFS_RDHASH_DEF; ++ if (!strcmp(param->string, "def")) ++ break; ++ ++ err = kstrtoint(param->string, 0, &result.int_32); ++ if (unlikely(err)) { ++ errorfc(fc, "bad value in %s", param->key); ++ break; ++ } ++ /* how about zero? */ ++ if (result.int_32 < 0 ++ || result.int_32 * sizeof(struct hlist_head) ++ > KMALLOC_MAX_SIZE) { ++ err = -EINVAL; ++ errorfc(fc, "bad integer in %s", param->key); ++ break; ++ } ++ opt->rdhash = result.int_32; ++ break; ++ ++ case Opt_diropq: ++ /* ++ * As other options, fs/aufs/opts.c can handle these strings by ++ * match_token(). But "diropq=" is deprecated now and will ++ * never have other value. So simple strcmp() is enough here. ++ */ ++ if (!strcmp(param->string, "a") || ++ !strcmp(param->string, "always")) { ++ err = 0; ++ opt->type = Opt_diropq_a; ++ } else if (!strcmp(param->string, "w") || ++ !strcmp(param->string, "whiteouted")) { ++ err = 0; ++ opt->type = Opt_diropq_w; ++ } else ++ errorfc(fc, "unknown value %s", param->string); ++ break; ++ ++ case Opt_udba: ++ opt->udba = au_udba_val(param->string); ++ if (opt->udba >= 0) ++ err = 0; ++ else ++ errorf(fc, "wrong value, %s", param->string); ++ break; ++ ++ case Opt_wbr_create: ++ opt->wbr_create.wbr_create ++ = au_wbr_create_val(param->string, &opt->wbr_create); ++ if (opt->wbr_create.wbr_create >= 0) ++ err = 0; ++ else ++ errorf(fc, "wrong value, %s", param->key); ++ break; ++ ++ case Opt_wbr_copyup: ++ opt->wbr_copyup = au_wbr_copyup_val(param->string); ++ if (opt->wbr_copyup >= 0) ++ err = 0; ++ else ++ errorfc(fc, "wrong value, %s", param->key); ++ break; ++ ++ case Opt_fhsm_sec: ++ if (unlikely(result.int_32 < 0)) { ++ errorfc(fc, "bad integer in %s\n", param->key); ++ break; ++ } ++ err = 0; ++ if (sysaufs_brs) ++ opt->fhsm_second = result.int_32; ++ else ++ warnfc(fc, "ignored %s %s", param->key, param->string); ++ break; ++ ++ /* simple true/false flag */ ++#define au_fsctx_TF(name) \ ++ case Opt_##name: \ ++ err = 0; \ ++ opt->tf = !result.negated; \ ++ break; ++ au_fsctx_TF(trunc_xino); ++ au_fsctx_TF(trunc_xib); ++ au_fsctx_TF(dirperm1); ++ au_fsctx_TF(plink); ++ au_fsctx_TF(shwh); ++ au_fsctx_TF(dio); ++ au_fsctx_TF(warn_perm); ++ au_fsctx_TF(verbose); ++ au_fsctx_TF(sum); ++ au_fsctx_TF(dirren); ++ au_fsctx_TF(acl); ++#undef au_fsctx_TF ++ ++ case Opt_noverbose: ++ err = 0; ++ opt->type = Opt_verbose; ++ opt->tf = false; ++ break; ++ ++ case Opt_noxino: ++ fallthrough; ++ case Opt_list_plink: ++ fallthrough; ++ case Opt_wsum: ++ err = 0; ++ break; ++ ++ case Opt_ignore: ++ warnfc(fc, "ignored %s", param->key); ++ fallthrough; ++ case Opt_ignore_silent: ++ a->skipped = 1; ++ err = 0; ++ break; ++ default: ++ a->skipped = 1; ++ err = -ENOPARAM; ++ break; ++ } ++ if (unlikely(err)) ++ goto out; ++ if (a->skipped) ++ goto out; ++ ++ switch (token) { ++ case Opt_br: ++ fallthrough; ++ case Opt_noverbose: ++ fallthrough; ++ case Opt_diropq: ++ break; ++ default: ++ opt->type = token; ++ break; ++ } ++ opt++; ++ if (unlikely(opt > a->opt_tail)) { ++ err = -E2BIG; ++ opt--; ++ } ++ opt->type = Opt_tail; ++ a->opt = opt; ++ ++out: ++ return err; ++} ++ ++/* ++ * these options accept both 'name=val' and 'name:val' form. ++ * some accept optional '=' in its value. ++ * eg. br:/br1=rw:/br2=ro and br=/br1=rw:/br2=ro ++ */ ++static inline unsigned int is_colonopt(char *str) ++{ ++#define do_test(name) \ ++ if (!strncmp(str, name ":", sizeof(name))) \ ++ return sizeof(name) - 1; ++ do_test("br"); ++ do_test("add"); ++ do_test("ins"); ++ do_test("append"); ++ do_test("prepend"); ++ do_test("del"); ++ /* do_test("idel"); */ ++ do_test("mod"); ++ /* do_test("imod"); */ ++#undef do_test ++ ++ return 0; ++} ++ ++static int au_fsctx_parse_monolithic(struct fs_context *fc, void *data) ++{ ++ int err; ++ unsigned int u; ++ char *str; ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ str = data; ++ AuDbg("str %s\n", str); ++ while (str) { ++ u = is_colonopt(str); ++ if (u) ++ str[u] = '='; ++ str = strchr(str, ','); ++ if (!str) ++ break; ++ str++; ++ } ++ str = data; ++ AuDbg("str %s\n", str); ++ ++ err = generic_parse_monolithic(fc, str); ++ AuTraceErr(err); ++ au_fsctx_dump(&a->opts); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_fsctx_opts_free(struct au_opts *opts) ++{ ++ struct au_opt *opt; ++ ++ opt = opts->opt; ++ while (opt->type != Opt_tail) { ++ switch (opt->type) { ++ case Opt_add: ++ fallthrough; ++ case Opt_append: ++ fallthrough; ++ case Opt_prepend: ++ kfree(opt->add.pathname); ++ path_put(&opt->add.path); ++ break; ++ case Opt_del: ++ kfree(opt->del.pathname); ++ fallthrough; ++ case Opt_idel: ++ path_put(&opt->del.h_path); ++ break; ++ case Opt_mod: ++ kfree(opt->mod.path); ++ fallthrough; ++ case Opt_imod: ++ dput(opt->mod.h_root); ++ break; ++ case Opt_xino: ++ kfree(opt->xino.path); ++ fput(opt->xino.file); ++ break; ++ } ++ opt++; ++ } ++} ++ ++static void au_fsctx_free(struct fs_context *fc) ++{ ++ struct au_fsctx_opts *a = fc->fs_private; ++ ++ /* fs_type=%p, root=%pD */ ++ AuDbg("fc %p{sb_flags 0x%x, sb_flags_mask 0x%x, purpose %u\n", ++ fc, fc->sb_flags, fc->sb_flags_mask, fc->purpose); ++ ++ kobject_put(&a->sbinfo->si_kobj); ++ au_fsctx_opts_free(&a->opts); ++ free_page((unsigned long)a->opts.opt); ++ au_kfree_rcu(a); ++} ++ ++static const struct fs_context_operations au_fsctx_ops = { ++ .free = au_fsctx_free, ++ .parse_param = au_fsctx_parse_param, ++ .parse_monolithic = au_fsctx_parse_monolithic, ++ .get_tree = au_fsctx_get_tree, ++ .reconfigure = au_fsctx_reconfigure ++ /* ++ * nfs4 requires ->dup()? No. ++ * I don't know what is this ->dup() for. ++ */ ++}; ++ ++int aufs_fsctx_init(struct fs_context *fc) ++{ ++ int err; ++ struct au_fsctx_opts *a; ++ ++ /* fs_type=%p, root=%pD */ ++ AuDbg("fc %p{sb_flags 0x%x, sb_flags_mask 0x%x, purpose %u\n", ++ fc, fc->sb_flags, fc->sb_flags_mask, fc->purpose); ++ ++ /* they will be freed by au_fsctx_free() */ ++ err = -ENOMEM; ++ a = kzalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ a->bindex = 0; ++ a->opts.opt = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!a->opts.opt)) ++ goto out_a; ++ a->opt = a->opts.opt; ++ a->opt->type = Opt_tail; ++ a->opts.max_opt = PAGE_SIZE / sizeof(*a->opts.opt); ++ a->opt_tail = a->opt + a->opts.max_opt - 1; ++ a->opts.sb_flags = fc->sb_flags; ++ ++ a->sb = NULL; ++ if (fc->root) { ++ AuDebugOn(fc->purpose != FS_CONTEXT_FOR_RECONFIGURE); ++ a->opts.flags = AuOpts_REMOUNT; ++ a->sb = fc->root->d_sb; ++ a->sbinfo = au_sbi(a->sb); ++ kobject_get(&a->sbinfo->si_kobj); ++ } else { ++ a->sbinfo = au_si_alloc(a->sb); ++ AuDebugOn(!a->sbinfo); ++ err = PTR_ERR(a->sbinfo); ++ if (IS_ERR(a->sbinfo)) ++ goto out_opt; ++ au_rw_write_unlock(&a->sbinfo->si_rwsem); ++ } ++ ++ err = 0; ++ fc->fs_private = a; ++ fc->ops = &au_fsctx_ops; ++ goto out; /* success */ ++ ++out_opt: ++ free_page((unsigned long)a->opts.opt); ++out_a: ++ au_kfree_rcu(a); ++out: ++ AuTraceErr(err); ++ return err; ++} +diff -Naur null/fs/aufs/fstype.h linux-5.15.36/fs/aufs/fstype.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/fstype.h 2022-05-10 16:51:39.871744219 +0300 +@@ -0,0 +1,401 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * judging filesystem type ++ */ ++ ++#ifndef __AUFS_FSTYPE_H__ ++#define __AUFS_FSTYPE_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++#include ++ ++static inline int au_test_aufs(struct super_block *sb) ++{ ++ return sb->s_magic == AUFS_SUPER_MAGIC; ++} ++ ++static inline const char *au_sbtype(struct super_block *sb) ++{ ++ return sb->s_type->name; ++} ++ ++static inline int au_test_iso9660(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_ISO9660_FS) ++ return sb->s_magic == ISOFS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_romfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_ROMFS_FS) ++ return sb->s_magic == ROMFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_cramfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_CRAMFS) ++ return sb->s_magic == CRAMFS_MAGIC; ++#endif ++ return 0; ++} ++ ++static inline int au_test_nfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_NFS_FS) ++ return sb->s_magic == NFS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_fuse(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_FUSE_FS) ++ return sb->s_magic == FUSE_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_xfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_XFS_FS) ++ return sb->s_magic == XFS_SB_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_tmpfs(struct super_block *sb __maybe_unused) ++{ ++#ifdef CONFIG_TMPFS ++ return sb->s_magic == TMPFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_ecryptfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_ECRYPT_FS) ++ return !strcmp(au_sbtype(sb), "ecryptfs"); ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_ramfs(struct super_block *sb) ++{ ++ return sb->s_magic == RAMFS_MAGIC; ++} ++ ++static inline int au_test_ubifs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_UBIFS_FS) ++ return sb->s_magic == UBIFS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_procfs(struct super_block *sb __maybe_unused) ++{ ++#ifdef CONFIG_PROC_FS ++ return sb->s_magic == PROC_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_sysfs(struct super_block *sb __maybe_unused) ++{ ++#ifdef CONFIG_SYSFS ++ return sb->s_magic == SYSFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_configfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_CONFIGFS_FS) ++ return sb->s_magic == CONFIGFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_minix(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_MINIX_FS) ++ return sb->s_magic == MINIX3_SUPER_MAGIC ++ || sb->s_magic == MINIX2_SUPER_MAGIC ++ || sb->s_magic == MINIX2_SUPER_MAGIC2 ++ || sb->s_magic == MINIX_SUPER_MAGIC ++ || sb->s_magic == MINIX_SUPER_MAGIC2; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_fat(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_FAT_FS) ++ return sb->s_magic == MSDOS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_msdos(struct super_block *sb) ++{ ++ return au_test_fat(sb); ++} ++ ++static inline int au_test_vfat(struct super_block *sb) ++{ ++ return au_test_fat(sb); ++} ++ ++static inline int au_test_securityfs(struct super_block *sb __maybe_unused) ++{ ++#ifdef CONFIG_SECURITYFS ++ return sb->s_magic == SECURITYFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_squashfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_SQUASHFS) ++ return sb->s_magic == SQUASHFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_btrfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_BTRFS_FS) ++ return sb->s_magic == BTRFS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_xenfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_XENFS) ++ return sb->s_magic == XENFS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_debugfs(struct super_block *sb __maybe_unused) ++{ ++#ifdef CONFIG_DEBUG_FS ++ return sb->s_magic == DEBUGFS_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_nilfs(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_NILFS) ++ return sb->s_magic == NILFS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) ++{ ++#if IS_ENABLED(CONFIG_HFSPLUS_FS) ++ return sb->s_magic == HFSPLUS_SUPER_MAGIC; ++#else ++ return 0; ++#endif ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * they can't be an aufs branch. ++ */ ++static inline int au_test_fs_unsuppoted(struct super_block *sb) ++{ ++ return ++#ifndef CONFIG_AUFS_BR_RAMFS ++ au_test_ramfs(sb) || ++#endif ++ au_test_procfs(sb) ++ || au_test_sysfs(sb) ++ || au_test_configfs(sb) ++ || au_test_debugfs(sb) ++ || au_test_securityfs(sb) ++ || au_test_xenfs(sb) ++ || au_test_ecryptfs(sb) ++ /* || !strcmp(au_sbtype(sb), "unionfs") */ ++ || au_test_aufs(sb); /* will be supported in next version */ ++} ++ ++static inline int au_test_fs_remote(struct super_block *sb) ++{ ++ return !au_test_tmpfs(sb) ++#ifdef CONFIG_AUFS_BR_RAMFS ++ && !au_test_ramfs(sb) ++#endif ++ && !(sb->s_type->fs_flags & FS_REQUIRES_DEV); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * Note: these functions (below) are created after reading ->getattr() in all ++ * filesystems under linux/fs. it means we have to do so in every update... ++ */ ++ ++/* ++ * some filesystems require getattr to refresh the inode attributes before ++ * referencing. ++ * in most cases, we can rely on the inode attribute in NFS (or every remote fs) ++ * and leave the work for d_revalidate() ++ */ ++static inline int au_test_fs_refresh_iattr(struct super_block *sb) ++{ ++ return au_test_nfs(sb) ++ || au_test_fuse(sb) ++ /* || au_test_btrfs(sb) */ /* untested */ ++ ; ++} ++ ++/* ++ * filesystems which don't maintain i_size or i_blocks. ++ */ ++static inline int au_test_fs_bad_iattr_size(struct super_block *sb) ++{ ++ return au_test_xfs(sb) ++ || au_test_btrfs(sb) ++ || au_test_ubifs(sb) ++ || au_test_hfsplus(sb) /* maintained, but incorrect */ ++ /* || au_test_minix(sb) */ /* untested */ ++ ; ++} ++ ++/* ++ * filesystems which don't store the correct value in some of their inode ++ * attributes. ++ */ ++static inline int au_test_fs_bad_iattr(struct super_block *sb) ++{ ++ return au_test_fs_bad_iattr_size(sb) ++ || au_test_fat(sb) ++ || au_test_msdos(sb) ++ || au_test_vfat(sb); ++} ++ ++/* they don't check i_nlink in link(2) */ ++static inline int au_test_fs_no_limit_nlink(struct super_block *sb) ++{ ++ return au_test_tmpfs(sb) ++#ifdef CONFIG_AUFS_BR_RAMFS ++ || au_test_ramfs(sb) ++#endif ++ || au_test_ubifs(sb) ++ || au_test_hfsplus(sb); ++} ++ ++/* ++ * filesystems which sets S_NOATIME and S_NOCMTIME. ++ */ ++static inline int au_test_fs_notime(struct super_block *sb) ++{ ++ return au_test_nfs(sb) ++ || au_test_fuse(sb) ++ || au_test_ubifs(sb) ++ ; ++} ++ ++/* temporary support for i#1 in cramfs */ ++static inline int au_test_fs_unique_ino(struct inode *inode) ++{ ++ if (au_test_cramfs(inode->i_sb)) ++ return inode->i_ino != 1; ++ return 1; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * the filesystem where the xino files placed must support i/o after unlink and ++ * maintain i_size and i_blocks. ++ */ ++static inline int au_test_fs_bad_xino(struct super_block *sb) ++{ ++ return au_test_fs_remote(sb) ++ || au_test_fs_bad_iattr_size(sb) ++ /* don't want unnecessary work for xino */ ++ || au_test_aufs(sb) ++ || au_test_ecryptfs(sb) ++ || au_test_nilfs(sb); ++} ++ ++static inline int au_test_fs_trunc_xino(struct super_block *sb) ++{ ++ return au_test_tmpfs(sb) ++ || au_test_ramfs(sb); ++} ++ ++/* ++ * test if the @sb is real-readonly. ++ */ ++static inline int au_test_fs_rr(struct super_block *sb) ++{ ++ return au_test_squashfs(sb) ++ || au_test_iso9660(sb) ++ || au_test_cramfs(sb) ++ || au_test_romfs(sb); ++} ++ ++/* ++ * test if the @inode is nfs with 'noacl' option ++ * NFS always sets SB_POSIXACL regardless its mount option 'noacl.' ++ */ ++static inline int au_test_nfs_noacl(struct inode *inode) ++{ ++ return au_test_nfs(inode->i_sb) ++ /* && IS_POSIXACL(inode) */ ++ && !nfs_server_capable(inode, NFS_CAP_ACLS); ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_FSTYPE_H__ */ +diff -Naur null/fs/aufs/hbl.h linux-5.15.36/fs/aufs/hbl.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/hbl.h 2022-05-10 16:51:39.871744219 +0300 +@@ -0,0 +1,65 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2017-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * helpers for hlist_bl.h ++ */ ++ ++#ifndef __AUFS_HBL_H__ ++#define __AUFS_HBL_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++ ++static inline void au_hbl_add(struct hlist_bl_node *node, ++ struct hlist_bl_head *hbl) ++{ ++ hlist_bl_lock(hbl); ++ hlist_bl_add_head(node, hbl); ++ hlist_bl_unlock(hbl); ++} ++ ++static inline void au_hbl_del(struct hlist_bl_node *node, ++ struct hlist_bl_head *hbl) ++{ ++ hlist_bl_lock(hbl); ++ hlist_bl_del(node); ++ hlist_bl_unlock(hbl); ++} ++ ++#define au_hbl_for_each(pos, head) \ ++ for (pos = hlist_bl_first(head); \ ++ pos; \ ++ pos = pos->next) ++ ++static inline unsigned long au_hbl_count(struct hlist_bl_head *hbl) ++{ ++ unsigned long cnt; ++ struct hlist_bl_node *pos; ++ ++ cnt = 0; ++ hlist_bl_lock(hbl); ++ au_hbl_for_each(pos, hbl) ++ cnt++; ++ hlist_bl_unlock(hbl); ++ return cnt; ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_HBL_H__ */ +diff -Naur null/fs/aufs/hfsnotify.c linux-5.15.36/fs/aufs/hfsnotify.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/hfsnotify.c 2022-05-10 16:51:39.871744219 +0300 +@@ -0,0 +1,288 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * fsnotify for the lower directories ++ */ ++ ++#include "aufs.h" ++ ++/* FS_IN_IGNORED is unnecessary */ ++static const __u32 AuHfsnMask = (FS_MOVED_TO | FS_MOVED_FROM | FS_DELETE ++ | FS_CREATE | FS_EVENT_ON_CHILD); ++static DECLARE_WAIT_QUEUE_HEAD(au_hfsn_wq); ++static __cacheline_aligned_in_smp atomic64_t au_hfsn_ifree = ATOMIC64_INIT(0); ++ ++static void au_hfsn_free_mark(struct fsnotify_mark *mark) ++{ ++ struct au_hnotify *hn = container_of(mark, struct au_hnotify, ++ hn_mark); ++ /* AuDbg("here\n"); */ ++ au_cache_free_hnotify(hn); ++ smp_mb__before_atomic(); /* for atomic64_dec */ ++ if (atomic64_dec_and_test(&au_hfsn_ifree)) ++ wake_up(&au_hfsn_wq); ++} ++ ++static int au_hfsn_alloc(struct au_hinode *hinode) ++{ ++ int err; ++ struct au_hnotify *hn; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct fsnotify_mark *mark; ++ aufs_bindex_t bindex; ++ ++ hn = hinode->hi_notify; ++ sb = hn->hn_aufs_inode->i_sb; ++ bindex = au_br_index(sb, hinode->hi_id); ++ br = au_sbr(sb, bindex); ++ AuDebugOn(!br->br_hfsn); ++ ++ mark = &hn->hn_mark; ++ fsnotify_init_mark(mark, br->br_hfsn->hfsn_group); ++ mark->mask = AuHfsnMask; ++ /* ++ * by udba rename or rmdir, aufs assign a new inode to the known ++ * h_inode, so specify 1 to allow dups. ++ */ ++ lockdep_off(); ++ err = fsnotify_add_inode_mark(mark, hinode->hi_inode, /*allow_dups*/1); ++ lockdep_on(); ++ ++ return err; ++} ++ ++static int au_hfsn_free(struct au_hinode *hinode, struct au_hnotify *hn) ++{ ++ struct fsnotify_mark *mark; ++ unsigned long long ull; ++ struct fsnotify_group *group; ++ ++ ull = atomic64_inc_return(&au_hfsn_ifree); ++ BUG_ON(!ull); ++ ++ mark = &hn->hn_mark; ++ spin_lock(&mark->lock); ++ group = mark->group; ++ fsnotify_get_group(group); ++ spin_unlock(&mark->lock); ++ lockdep_off(); ++ fsnotify_destroy_mark(mark, group); ++ fsnotify_put_mark(mark); ++ fsnotify_put_group(group); ++ lockdep_on(); ++ ++ /* free hn by myself */ ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_hfsn_ctl(struct au_hinode *hinode, int do_set) ++{ ++ struct fsnotify_mark *mark; ++ ++ mark = &hinode->hi_notify->hn_mark; ++ spin_lock(&mark->lock); ++ if (do_set) { ++ AuDebugOn(mark->mask & AuHfsnMask); ++ mark->mask |= AuHfsnMask; ++ } else { ++ AuDebugOn(!(mark->mask & AuHfsnMask)); ++ mark->mask &= ~AuHfsnMask; ++ } ++ spin_unlock(&mark->lock); ++ /* fsnotify_recalc_inode_mask(hinode->hi_inode); */ ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* #define AuDbgHnotify */ ++#ifdef AuDbgHnotify ++static char *au_hfsn_name(u32 mask) ++{ ++#ifdef CONFIG_AUFS_DEBUG ++#define test_ret(flag) \ ++ do { \ ++ if (mask & flag) \ ++ return #flag; \ ++ } while (0) ++ test_ret(FS_ACCESS); ++ test_ret(FS_MODIFY); ++ test_ret(FS_ATTRIB); ++ test_ret(FS_CLOSE_WRITE); ++ test_ret(FS_CLOSE_NOWRITE); ++ test_ret(FS_OPEN); ++ test_ret(FS_MOVED_FROM); ++ test_ret(FS_MOVED_TO); ++ test_ret(FS_CREATE); ++ test_ret(FS_DELETE); ++ test_ret(FS_DELETE_SELF); ++ test_ret(FS_MOVE_SELF); ++ test_ret(FS_UNMOUNT); ++ test_ret(FS_Q_OVERFLOW); ++ test_ret(FS_IN_IGNORED); ++ test_ret(FS_ISDIR); ++ test_ret(FS_IN_ONESHOT); ++ test_ret(FS_EVENT_ON_CHILD); ++ return ""; ++#undef test_ret ++#else ++ return "??"; ++#endif ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_hfsn_free_group(struct fsnotify_group *group) ++{ ++ struct au_br_hfsnotify *hfsn = group->private; ++ ++ /* AuDbg("here\n"); */ ++ au_kfree_try_rcu(hfsn); ++} ++ ++static int au_hfsn_handle_event(struct fsnotify_group *group, ++ u32 mask, const void *data, int data_type, ++ struct inode *dir, ++ const struct qstr *file_name, u32 cookie, ++ struct fsnotify_iter_info *iter_info) ++{ ++ int err; ++ struct au_hnotify *hnotify; ++ struct inode *h_dir, *h_inode; ++ struct fsnotify_mark *inode_mark; ++ ++ AuDebugOn(data_type != FSNOTIFY_EVENT_INODE); ++ ++ err = 0; ++ /* if FS_UNMOUNT happens, there must be another bug */ ++ AuDebugOn(mask & FS_UNMOUNT); ++ if (mask & (FS_IN_IGNORED | FS_UNMOUNT)) ++ goto out; ++ ++ h_dir = dir; ++ h_inode = NULL; ++#ifdef AuDbgHnotify ++ au_debug_on(); ++ if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 ++ || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { ++ AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", ++ h_dir->i_ino, mask, au_hfsn_name(mask), ++ AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); ++ /* WARN_ON(1); */ ++ } ++ au_debug_off(); ++#endif ++ ++ inode_mark = fsnotify_iter_inode_mark(iter_info); ++ AuDebugOn(!inode_mark); ++ hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); ++ err = au_hnotify(h_dir, hnotify, mask, file_name, h_inode); ++ ++out: ++ return err; ++} ++ ++static struct fsnotify_ops au_hfsn_ops = { ++ .handle_event = au_hfsn_handle_event, ++ .free_group_priv = au_hfsn_free_group, ++ .free_mark = au_hfsn_free_mark ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_hfsn_fin_br(struct au_branch *br) ++{ ++ struct au_br_hfsnotify *hfsn; ++ ++ hfsn = br->br_hfsn; ++ if (hfsn) { ++ lockdep_off(); ++ fsnotify_put_group(hfsn->hfsn_group); ++ lockdep_on(); ++ } ++} ++ ++static int au_hfsn_init_br(struct au_branch *br, int perm) ++{ ++ int err; ++ struct fsnotify_group *group; ++ struct au_br_hfsnotify *hfsn; ++ ++ err = 0; ++ br->br_hfsn = NULL; ++ if (!au_br_hnotifyable(perm)) ++ goto out; ++ ++ err = -ENOMEM; ++ hfsn = kmalloc(sizeof(*hfsn), GFP_NOFS); ++ if (unlikely(!hfsn)) ++ goto out; ++ ++ err = 0; ++ group = fsnotify_alloc_group(&au_hfsn_ops); ++ if (IS_ERR(group)) { ++ err = PTR_ERR(group); ++ pr_err("fsnotify_alloc_group() failed, %d\n", err); ++ goto out_hfsn; ++ } ++ ++ group->private = hfsn; ++ hfsn->hfsn_group = group; ++ br->br_hfsn = hfsn; ++ goto out; /* success */ ++ ++out_hfsn: ++ au_kfree_try_rcu(hfsn); ++out: ++ return err; ++} ++ ++static int au_hfsn_reset_br(unsigned int udba, struct au_branch *br, int perm) ++{ ++ int err; ++ ++ err = 0; ++ if (!br->br_hfsn) ++ err = au_hfsn_init_br(br, perm); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_hfsn_fin(void) ++{ ++ AuDbg("au_hfsn_ifree %lld\n", (long long)atomic64_read(&au_hfsn_ifree)); ++ wait_event(au_hfsn_wq, !atomic64_read(&au_hfsn_ifree)); ++} ++ ++const struct au_hnotify_op au_hnotify_op = { ++ .ctl = au_hfsn_ctl, ++ .alloc = au_hfsn_alloc, ++ .free = au_hfsn_free, ++ ++ .fin = au_hfsn_fin, ++ ++ .reset_br = au_hfsn_reset_br, ++ .fin_br = au_hfsn_fin_br, ++ .init_br = au_hfsn_init_br ++}; +diff -Naur null/fs/aufs/hfsplus.c linux-5.15.36/fs/aufs/hfsplus.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/hfsplus.c 2022-05-10 16:51:39.872744219 +0300 +@@ -0,0 +1,60 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * special support for filesystems which acquires an inode mutex ++ * at final closing a file, eg, hfsplus. ++ * ++ * This trick is very simple and stupid, just to open the file before really ++ * necessary open to tell hfsplus that this is not the final closing. ++ * The caller should call au_h_open_pre() after acquiring the inode mutex, ++ * and au_h_open_post() after releasing it. ++ */ ++ ++#include "aufs.h" ++ ++struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, ++ int force_wr) ++{ ++ struct file *h_file; ++ struct dentry *h_dentry; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ AuDebugOn(!h_dentry); ++ AuDebugOn(d_is_negative(h_dentry)); ++ ++ h_file = NULL; ++ if (au_test_hfsplus(h_dentry->d_sb) ++ && d_is_reg(h_dentry)) ++ h_file = au_h_open(dentry, bindex, ++ O_RDONLY | O_NOATIME | O_LARGEFILE, ++ /*file*/NULL, force_wr); ++ return h_file; ++} ++ ++void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, ++ struct file *h_file) ++{ ++ struct au_branch *br; ++ ++ if (h_file) { ++ fput(h_file); ++ br = au_sbr(dentry->d_sb, bindex); ++ au_lcnt_dec(&br->br_nfiles); ++ } ++} +diff -Naur null/fs/aufs/hnotify.c linux-5.15.36/fs/aufs/hnotify.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/hnotify.c 2022-05-10 16:51:39.872744219 +0300 +@@ -0,0 +1,715 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * abstraction to notify the direct changes on lower directories ++ */ ++ ++/* #include */ ++#include "aufs.h" ++ ++int au_hn_alloc(struct au_hinode *hinode, struct inode *inode) ++{ ++ int err; ++ struct au_hnotify *hn; ++ ++ err = -ENOMEM; ++ hn = au_cache_alloc_hnotify(); ++ if (hn) { ++ hn->hn_aufs_inode = inode; ++ hinode->hi_notify = hn; ++ err = au_hnotify_op.alloc(hinode); ++ AuTraceErr(err); ++ if (unlikely(err)) { ++ hinode->hi_notify = NULL; ++ au_cache_free_hnotify(hn); ++ /* ++ * The upper dir was removed by udba, but the same named ++ * dir left. In this case, aufs assigns a new inode ++ * number and set the monitor again. ++ * For the lower dir, the old monitor is still left. ++ */ ++ if (err == -EEXIST) ++ err = 0; ++ } ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_hn_free(struct au_hinode *hinode) ++{ ++ struct au_hnotify *hn; ++ ++ hn = hinode->hi_notify; ++ if (hn) { ++ hinode->hi_notify = NULL; ++ if (au_hnotify_op.free(hinode, hn)) ++ au_cache_free_hnotify(hn); ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_hn_ctl(struct au_hinode *hinode, int do_set) ++{ ++ if (hinode->hi_notify) ++ au_hnotify_op.ctl(hinode, do_set); ++} ++ ++void au_hn_reset(struct inode *inode, unsigned int flags) ++{ ++ aufs_bindex_t bindex, bbot; ++ struct inode *hi; ++ struct dentry *iwhdentry; ++ ++ bbot = au_ibbot(inode); ++ for (bindex = au_ibtop(inode); bindex <= bbot; bindex++) { ++ hi = au_h_iptr(inode, bindex); ++ if (!hi) ++ continue; ++ ++ /* inode_lock_nested(hi, AuLsc_I_CHILD); */ ++ iwhdentry = au_hi_wh(inode, bindex); ++ if (iwhdentry) ++ dget(iwhdentry); ++ au_igrab(hi); ++ au_set_h_iptr(inode, bindex, NULL, 0); ++ au_set_h_iptr(inode, bindex, au_igrab(hi), ++ flags & ~AuHi_XINO); ++ iput(hi); ++ dput(iwhdentry); ++ /* inode_unlock(hi); */ ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int hn_xino(struct inode *inode, struct inode *h_inode) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot, bfound, btop; ++ struct inode *h_i; ++ ++ err = 0; ++ if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { ++ pr_warn("branch root dir was changed\n"); ++ goto out; ++ } ++ ++ bfound = -1; ++ bbot = au_ibbot(inode); ++ btop = au_ibtop(inode); ++#if 0 /* reserved for future use */ ++ if (bindex == bbot) { ++ /* keep this ino in rename case */ ++ goto out; ++ } ++#endif ++ for (bindex = btop; bindex <= bbot; bindex++) ++ if (au_h_iptr(inode, bindex) == h_inode) { ++ bfound = bindex; ++ break; ++ } ++ if (bfound < 0) ++ goto out; ++ ++ for (bindex = btop; bindex <= bbot; bindex++) { ++ h_i = au_h_iptr(inode, bindex); ++ if (!h_i) ++ continue; ++ ++ err = au_xino_write(inode->i_sb, bindex, h_i->i_ino, /*ino*/0); ++ /* ignore this error */ ++ /* bad action? */ ++ } ++ ++ /* children inode number will be broken */ ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int hn_gen_tree(struct dentry *dentry) ++{ ++ int err, i, j, ndentry; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ struct dentry **dentries; ++ ++ err = au_dpages_init(&dpages, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ err = au_dcsub_pages(&dpages, dentry, NULL, NULL); ++ if (unlikely(err)) ++ goto out_dpages; ++ ++ for (i = 0; i < dpages.ndpage; i++) { ++ dpage = dpages.dpages + i; ++ dentries = dpage->dentries; ++ ndentry = dpage->ndentry; ++ for (j = 0; j < ndentry; j++) { ++ struct dentry *d; ++ ++ d = dentries[j]; ++ if (IS_ROOT(d)) ++ continue; ++ ++ au_digen_dec(d); ++ if (d_really_is_positive(d)) ++ /* todo: reset children xino? ++ cached children only? */ ++ au_iigen_dec(d_inode(d)); ++ } ++ } ++ ++out_dpages: ++ au_dpages_free(&dpages); ++out: ++ return err; ++} ++ ++/* ++ * return 0 if processed. ++ */ ++static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode, ++ const unsigned int isdir) ++{ ++ int err; ++ struct dentry *d; ++ struct qstr *dname; ++ ++ err = 1; ++ if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { ++ pr_warn("branch root dir was changed\n"); ++ err = 0; ++ goto out; ++ } ++ ++ if (!isdir) { ++ AuDebugOn(!name); ++ au_iigen_dec(inode); ++ spin_lock(&inode->i_lock); ++ hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { ++ spin_lock(&d->d_lock); ++ dname = &d->d_name; ++ if (dname->len != nlen ++ && memcmp(dname->name, name, nlen)) { ++ spin_unlock(&d->d_lock); ++ continue; ++ } ++ err = 0; ++ au_digen_dec(d); ++ spin_unlock(&d->d_lock); ++ break; ++ } ++ spin_unlock(&inode->i_lock); ++ } else { ++ au_fset_si(au_sbi(inode->i_sb), FAILED_REFRESH_DIR); ++ d = d_find_any_alias(inode); ++ if (!d) { ++ au_iigen_dec(inode); ++ goto out; ++ } ++ ++ spin_lock(&d->d_lock); ++ dname = &d->d_name; ++ if (dname->len == nlen && !memcmp(dname->name, name, nlen)) { ++ spin_unlock(&d->d_lock); ++ err = hn_gen_tree(d); ++ spin_lock(&d->d_lock); ++ } ++ spin_unlock(&d->d_lock); ++ dput(d); ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int hn_gen_by_name(struct dentry *dentry, const unsigned int isdir) ++{ ++ int err; ++ ++ if (IS_ROOT(dentry)) { ++ pr_warn("branch root dir was changed\n"); ++ return 0; ++ } ++ ++ err = 0; ++ if (!isdir) { ++ au_digen_dec(dentry); ++ if (d_really_is_positive(dentry)) ++ au_iigen_dec(d_inode(dentry)); ++ } else { ++ au_fset_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR); ++ if (d_really_is_positive(dentry)) ++ err = hn_gen_tree(dentry); ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* hnotify job flags */ ++#define AuHnJob_XINO0 1 ++#define AuHnJob_GEN (1 << 1) ++#define AuHnJob_DIRENT (1 << 2) ++#define AuHnJob_ISDIR (1 << 3) ++#define AuHnJob_TRYXINO0 (1 << 4) ++#define AuHnJob_MNTPNT (1 << 5) ++#define au_ftest_hnjob(flags, name) ((flags) & AuHnJob_##name) ++#define au_fset_hnjob(flags, name) \ ++ do { (flags) |= AuHnJob_##name; } while (0) ++#define au_fclr_hnjob(flags, name) \ ++ do { (flags) &= ~AuHnJob_##name; } while (0) ++ ++enum { ++ AuHn_CHILD, ++ AuHn_PARENT, ++ AuHnLast ++}; ++ ++struct au_hnotify_args { ++ struct inode *h_dir, *dir, *h_child_inode; ++ u32 mask; ++ unsigned int flags[AuHnLast]; ++ unsigned int h_child_nlen; ++ char h_child_name[]; ++}; ++ ++struct hn_job_args { ++ unsigned int flags; ++ struct inode *inode, *h_inode, *dir, *h_dir; ++ struct dentry *dentry; ++ char *h_name; ++ int h_nlen; ++}; ++ ++static int hn_job(struct hn_job_args *a) ++{ ++ const unsigned int isdir = au_ftest_hnjob(a->flags, ISDIR); ++ int e; ++ ++ /* reset xino */ ++ if (au_ftest_hnjob(a->flags, XINO0) && a->inode) ++ hn_xino(a->inode, a->h_inode); /* ignore this error */ ++ ++ if (au_ftest_hnjob(a->flags, TRYXINO0) ++ && a->inode ++ && a->h_inode) { ++ inode_lock_shared_nested(a->h_inode, AuLsc_I_CHILD); ++ if (!a->h_inode->i_nlink ++ && !(a->h_inode->i_state & I_LINKABLE)) ++ hn_xino(a->inode, a->h_inode); /* ignore this error */ ++ inode_unlock_shared(a->h_inode); ++ } ++ ++ /* make the generation obsolete */ ++ if (au_ftest_hnjob(a->flags, GEN)) { ++ e = -1; ++ if (a->inode) ++ e = hn_gen_by_inode(a->h_name, a->h_nlen, a->inode, ++ isdir); ++ if (e && a->dentry) ++ hn_gen_by_name(a->dentry, isdir); ++ /* ignore this error */ ++ } ++ ++ /* make dir entries obsolete */ ++ if (au_ftest_hnjob(a->flags, DIRENT) && a->inode) { ++ struct au_vdir *vdir; ++ ++ vdir = au_ivdir(a->inode); ++ if (vdir) ++ vdir->vd_jiffy = 0; ++ /* IMustLock(a->inode); */ ++ /* inode_inc_iversion(a->inode); */ ++ } ++ ++ /* can do nothing but warn */ ++ if (au_ftest_hnjob(a->flags, MNTPNT) ++ && a->dentry ++ && d_mountpoint(a->dentry)) ++ pr_warn("mount-point %pd is removed or renamed\n", a->dentry); ++ ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen, ++ struct inode *dir) ++{ ++ struct dentry *dentry, *d, *parent; ++ struct qstr *dname; ++ ++ parent = d_find_any_alias(dir); ++ if (!parent) ++ return NULL; ++ ++ dentry = NULL; ++ spin_lock(&parent->d_lock); ++ list_for_each_entry(d, &parent->d_subdirs, d_child) { ++ /* AuDbg("%pd\n", d); */ ++ spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); ++ dname = &d->d_name; ++ if (dname->len != nlen || memcmp(dname->name, name, nlen)) ++ goto cont_unlock; ++ if (au_di(d)) ++ au_digen_dec(d); ++ else ++ goto cont_unlock; ++ if (au_dcount(d) > 0) { ++ dentry = dget_dlock(d); ++ spin_unlock(&d->d_lock); ++ break; ++ } ++ ++cont_unlock: ++ spin_unlock(&d->d_lock); ++ } ++ spin_unlock(&parent->d_lock); ++ dput(parent); ++ ++ if (dentry) ++ di_write_lock_child(dentry); ++ ++ return dentry; ++} ++ ++static struct inode *lookup_wlock_by_ino(struct super_block *sb, ++ aufs_bindex_t bindex, ino_t h_ino) ++{ ++ struct inode *inode; ++ ino_t ino; ++ int err; ++ ++ inode = NULL; ++ err = au_xino_read(sb, bindex, h_ino, &ino); ++ if (!err && ino) ++ inode = ilookup(sb, ino); ++ if (!inode) ++ goto out; ++ ++ if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { ++ pr_warn("wrong root branch\n"); ++ iput(inode); ++ inode = NULL; ++ goto out; ++ } ++ ++ ii_write_lock_child(inode); ++ ++out: ++ return inode; ++} ++ ++static void au_hn_bh(void *_args) ++{ ++ struct au_hnotify_args *a = _args; ++ struct super_block *sb; ++ aufs_bindex_t bindex, bbot, bfound; ++ unsigned char xino, try_iput; ++ int err; ++ struct inode *inode; ++ ino_t h_ino; ++ struct hn_job_args args; ++ struct dentry *dentry; ++ struct au_sbinfo *sbinfo; ++ ++ AuDebugOn(!_args); ++ AuDebugOn(!a->h_dir); ++ AuDebugOn(!a->dir); ++ AuDebugOn(!a->mask); ++ AuDbg("mask 0x%x, i%lu, hi%lu, hci%lu\n", ++ a->mask, a->dir->i_ino, a->h_dir->i_ino, ++ a->h_child_inode ? a->h_child_inode->i_ino : 0); ++ ++ inode = NULL; ++ dentry = NULL; ++ /* ++ * do not lock a->dir->i_mutex here ++ * because of d_revalidate() may cause a deadlock. ++ */ ++ sb = a->dir->i_sb; ++ AuDebugOn(!sb); ++ sbinfo = au_sbi(sb); ++ AuDebugOn(!sbinfo); ++ si_write_lock(sb, AuLock_NOPLMW); ++ ++ if (au_opt_test(sbinfo->si_mntflags, DIRREN)) ++ switch (a->mask & FS_EVENTS_POSS_ON_CHILD) { ++ case FS_MOVED_FROM: ++ case FS_MOVED_TO: ++ AuWarn1("DIRREN with UDBA may not work correctly " ++ "for the direct rename(2)\n"); ++ } ++ ++ ii_read_lock_parent(a->dir); ++ bfound = -1; ++ bbot = au_ibbot(a->dir); ++ for (bindex = au_ibtop(a->dir); bindex <= bbot; bindex++) ++ if (au_h_iptr(a->dir, bindex) == a->h_dir) { ++ bfound = bindex; ++ break; ++ } ++ ii_read_unlock(a->dir); ++ if (unlikely(bfound < 0)) ++ goto out; ++ ++ xino = !!au_opt_test(au_mntflags(sb), XINO); ++ h_ino = 0; ++ if (a->h_child_inode) ++ h_ino = a->h_child_inode->i_ino; ++ ++ if (a->h_child_nlen ++ && (au_ftest_hnjob(a->flags[AuHn_CHILD], GEN) ++ || au_ftest_hnjob(a->flags[AuHn_CHILD], MNTPNT))) ++ dentry = lookup_wlock_by_name(a->h_child_name, a->h_child_nlen, ++ a->dir); ++ try_iput = 0; ++ if (dentry && d_really_is_positive(dentry)) ++ inode = d_inode(dentry); ++ if (xino && !inode && h_ino ++ && (au_ftest_hnjob(a->flags[AuHn_CHILD], XINO0) ++ || au_ftest_hnjob(a->flags[AuHn_CHILD], TRYXINO0) ++ || au_ftest_hnjob(a->flags[AuHn_CHILD], GEN))) { ++ inode = lookup_wlock_by_ino(sb, bfound, h_ino); ++ try_iput = 1; ++ } ++ ++ args.flags = a->flags[AuHn_CHILD]; ++ args.dentry = dentry; ++ args.inode = inode; ++ args.h_inode = a->h_child_inode; ++ args.dir = a->dir; ++ args.h_dir = a->h_dir; ++ args.h_name = a->h_child_name; ++ args.h_nlen = a->h_child_nlen; ++ err = hn_job(&args); ++ if (dentry) { ++ if (au_di(dentry)) ++ di_write_unlock(dentry); ++ dput(dentry); ++ } ++ if (inode && try_iput) { ++ ii_write_unlock(inode); ++ iput(inode); ++ } ++ ++ ii_write_lock_parent(a->dir); ++ args.flags = a->flags[AuHn_PARENT]; ++ args.dentry = NULL; ++ args.inode = a->dir; ++ args.h_inode = a->h_dir; ++ args.dir = NULL; ++ args.h_dir = NULL; ++ args.h_name = NULL; ++ args.h_nlen = 0; ++ err = hn_job(&args); ++ ii_write_unlock(a->dir); ++ ++out: ++ iput(a->h_child_inode); ++ iput(a->h_dir); ++ iput(a->dir); ++ si_write_unlock(sb); ++ au_nwt_done(&sbinfo->si_nowait); ++ au_kfree_rcu(a); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, ++ const struct qstr *h_child_qstr, struct inode *h_child_inode) ++{ ++ int err, len; ++ unsigned int flags[AuHnLast], f; ++ unsigned char isdir, isroot, wh; ++ struct inode *dir; ++ struct au_hnotify_args *args; ++ char *p, *h_child_name; ++ ++ err = 0; ++ AuDebugOn(!hnotify || !hnotify->hn_aufs_inode); ++ dir = igrab(hnotify->hn_aufs_inode); ++ if (!dir) ++ goto out; ++ ++ isroot = (dir->i_ino == AUFS_ROOT_INO); ++ wh = 0; ++ h_child_name = (void *)h_child_qstr->name; ++ len = h_child_qstr->len; ++ if (h_child_name) { ++ if (len > AUFS_WH_PFX_LEN ++ && !memcmp(h_child_name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { ++ h_child_name += AUFS_WH_PFX_LEN; ++ len -= AUFS_WH_PFX_LEN; ++ wh = 1; ++ } ++ } ++ ++ isdir = 0; ++ if (h_child_inode) ++ isdir = !!S_ISDIR(h_child_inode->i_mode); ++ flags[AuHn_PARENT] = AuHnJob_ISDIR; ++ flags[AuHn_CHILD] = 0; ++ if (isdir) ++ flags[AuHn_CHILD] = AuHnJob_ISDIR; ++ au_fset_hnjob(flags[AuHn_PARENT], DIRENT); ++ au_fset_hnjob(flags[AuHn_CHILD], GEN); ++ switch (mask & ALL_FSNOTIFY_DIRENT_EVENTS) { ++ case FS_MOVED_FROM: ++ case FS_MOVED_TO: ++ au_fset_hnjob(flags[AuHn_CHILD], XINO0); ++ au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); ++ fallthrough; ++ case FS_CREATE: ++ AuDebugOn(!h_child_name); ++ break; ++ ++ case FS_DELETE: ++ /* ++ * aufs never be able to get this child inode. ++ * revalidation should be in d_revalidate() ++ * by checking i_nlink, i_generation or d_unhashed(). ++ */ ++ AuDebugOn(!h_child_name); ++ au_fset_hnjob(flags[AuHn_CHILD], TRYXINO0); ++ au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); ++ break; ++ ++ default: ++ AuDebugOn(1); ++ } ++ ++ if (wh) ++ h_child_inode = NULL; ++ ++ err = -ENOMEM; ++ /* iput() and kfree() will be called in au_hnotify() */ ++ args = kmalloc(sizeof(*args) + len + 1, GFP_NOFS); ++ if (unlikely(!args)) { ++ AuErr1("no memory\n"); ++ iput(dir); ++ goto out; ++ } ++ args->flags[AuHn_PARENT] = flags[AuHn_PARENT]; ++ args->flags[AuHn_CHILD] = flags[AuHn_CHILD]; ++ args->mask = mask; ++ args->dir = dir; ++ args->h_dir = igrab(h_dir); ++ if (h_child_inode) ++ h_child_inode = igrab(h_child_inode); /* can be NULL */ ++ args->h_child_inode = h_child_inode; ++ args->h_child_nlen = len; ++ if (len) { ++ p = (void *)args; ++ p += sizeof(*args); ++ memcpy(p, h_child_name, len); ++ p[len] = 0; ++ } ++ ++ /* NFS fires the event for silly-renamed one from kworker */ ++ f = 0; ++ if (!dir->i_nlink ++ || (au_test_nfs(h_dir->i_sb) && (mask & FS_DELETE))) ++ f = AuWkq_NEST; ++ err = au_wkq_nowait(au_hn_bh, args, dir->i_sb, f); ++ if (unlikely(err)) { ++ pr_err("wkq %d\n", err); ++ iput(args->h_child_inode); ++ iput(args->h_dir); ++ iput(args->dir); ++ au_kfree_rcu(args); ++ } ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm) ++{ ++ int err; ++ ++ AuDebugOn(!(udba & AuOptMask_UDBA)); ++ ++ err = 0; ++ if (au_hnotify_op.reset_br) ++ err = au_hnotify_op.reset_br(udba, br, perm); ++ ++ return err; ++} ++ ++int au_hnotify_init_br(struct au_branch *br, int perm) ++{ ++ int err; ++ ++ err = 0; ++ if (au_hnotify_op.init_br) ++ err = au_hnotify_op.init_br(br, perm); ++ ++ return err; ++} ++ ++void au_hnotify_fin_br(struct au_branch *br) ++{ ++ if (au_hnotify_op.fin_br) ++ au_hnotify_op.fin_br(br); ++} ++ ++static void au_hn_destroy_cache(void) ++{ ++ kmem_cache_destroy(au_cache[AuCache_HNOTIFY]); ++ au_cache[AuCache_HNOTIFY] = NULL; ++} ++ ++int __init au_hnotify_init(void) ++{ ++ int err; ++ ++ err = -ENOMEM; ++ au_cache[AuCache_HNOTIFY] = AuCache(au_hnotify); ++ if (au_cache[AuCache_HNOTIFY]) { ++ err = 0; ++ if (au_hnotify_op.init) ++ err = au_hnotify_op.init(); ++ if (unlikely(err)) ++ au_hn_destroy_cache(); ++ } ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_hnotify_fin(void) ++{ ++ if (au_hnotify_op.fin) ++ au_hnotify_op.fin(); ++ ++ /* cf. au_cache_fin() */ ++ if (au_cache[AuCache_HNOTIFY]) ++ au_hn_destroy_cache(); ++} +diff -Naur null/fs/aufs/iinfo.c linux-5.15.36/fs/aufs/iinfo.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/iinfo.c 2022-05-10 16:51:39.873744219 +0300 +@@ -0,0 +1,286 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode private data ++ */ ++ ++#include "aufs.h" ++ ++struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) ++{ ++ struct inode *h_inode; ++ struct au_hinode *hinode; ++ ++ IiMustAnyLock(inode); ++ ++ hinode = au_hinode(au_ii(inode), bindex); ++ h_inode = hinode->hi_inode; ++ AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); ++ return h_inode; ++} ++ ++/* todo: hard/soft set? */ ++void au_hiput(struct au_hinode *hinode) ++{ ++ au_hn_free(hinode); ++ dput(hinode->hi_whdentry); ++ iput(hinode->hi_inode); ++} ++ ++unsigned int au_hi_flags(struct inode *inode, int isdir) ++{ ++ unsigned int flags; ++ const unsigned int mnt_flags = au_mntflags(inode->i_sb); ++ ++ flags = 0; ++ if (au_opt_test(mnt_flags, XINO)) ++ au_fset_hi(flags, XINO); ++ if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) ++ au_fset_hi(flags, HNOTIFY); ++ return flags; ++} ++ ++void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, ++ struct inode *h_inode, unsigned int flags) ++{ ++ struct au_hinode *hinode; ++ struct inode *hi; ++ struct au_iinfo *iinfo = au_ii(inode); ++ ++ IiMustWriteLock(inode); ++ ++ hinode = au_hinode(iinfo, bindex); ++ hi = hinode->hi_inode; ++ AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); ++ ++ if (hi) ++ au_hiput(hinode); ++ hinode->hi_inode = h_inode; ++ if (h_inode) { ++ int err; ++ struct super_block *sb = inode->i_sb; ++ struct au_branch *br; ++ ++ AuDebugOn(inode->i_mode ++ && (h_inode->i_mode & S_IFMT) ++ != (inode->i_mode & S_IFMT)); ++ if (bindex == iinfo->ii_btop) ++ au_cpup_igen(inode, h_inode); ++ br = au_sbr(sb, bindex); ++ hinode->hi_id = br->br_id; ++ if (au_ftest_hi(flags, XINO)) { ++ err = au_xino_write(sb, bindex, h_inode->i_ino, ++ inode->i_ino); ++ if (unlikely(err)) ++ AuIOErr1("failed au_xino_write() %d\n", err); ++ } ++ ++ if (au_ftest_hi(flags, HNOTIFY) ++ && au_br_hnotifyable(br->br_perm)) { ++ err = au_hn_alloc(hinode, inode); ++ if (unlikely(err)) ++ AuIOErr1("au_hn_alloc() %d\n", err); ++ } ++ } ++} ++ ++void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_wh) ++{ ++ struct au_hinode *hinode; ++ ++ IiMustWriteLock(inode); ++ ++ hinode = au_hinode(au_ii(inode), bindex); ++ AuDebugOn(hinode->hi_whdentry); ++ hinode->hi_whdentry = h_wh; ++} ++ ++void au_update_iigen(struct inode *inode, int half) ++{ ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ unsigned int sigen; ++ ++ sigen = au_sigen(inode->i_sb); ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ iigen->ig_generation = sigen; ++ if (half) ++ au_ig_fset(iigen->ig_flags, HALF_REFRESHED); ++ else ++ au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); ++ spin_unlock(&iigen->ig_spin); ++} ++ ++/* it may be called at remount time, too */ ++void au_update_ibrange(struct inode *inode, int do_put_zero) ++{ ++ struct au_iinfo *iinfo; ++ aufs_bindex_t bindex, bbot; ++ ++ AuDebugOn(au_is_bad_inode(inode)); ++ IiMustWriteLock(inode); ++ ++ iinfo = au_ii(inode); ++ if (do_put_zero && iinfo->ii_btop >= 0) { ++ for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; ++ bindex++) { ++ struct inode *h_i; ++ ++ h_i = au_hinode(iinfo, bindex)->hi_inode; ++ if (h_i ++ && !h_i->i_nlink ++ && !(h_i->i_state & I_LINKABLE)) ++ au_set_h_iptr(inode, bindex, NULL, 0); ++ } ++ } ++ ++ iinfo->ii_btop = -1; ++ iinfo->ii_bbot = -1; ++ bbot = au_sbbot(inode->i_sb); ++ for (bindex = 0; bindex <= bbot; bindex++) ++ if (au_hinode(iinfo, bindex)->hi_inode) { ++ iinfo->ii_btop = bindex; ++ break; ++ } ++ if (iinfo->ii_btop >= 0) ++ for (bindex = bbot; bindex >= iinfo->ii_btop; bindex--) ++ if (au_hinode(iinfo, bindex)->hi_inode) { ++ iinfo->ii_bbot = bindex; ++ break; ++ } ++ AuDebugOn(iinfo->ii_btop > iinfo->ii_bbot); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_icntnr_init_once(void *_c) ++{ ++ struct au_icntnr *c = _c; ++ struct au_iinfo *iinfo = &c->iinfo; ++ ++ spin_lock_init(&iinfo->ii_generation.ig_spin); ++ au_rw_init(&iinfo->ii_rwsem); ++ inode_init_once(&c->vfs_inode); ++} ++ ++void au_hinode_init(struct au_hinode *hinode) ++{ ++ hinode->hi_inode = NULL; ++ hinode->hi_id = -1; ++ au_hn_init(hinode); ++ hinode->hi_whdentry = NULL; ++} ++ ++int au_iinfo_init(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct super_block *sb; ++ struct au_hinode *hi; ++ int nbr, i; ++ ++ sb = inode->i_sb; ++ iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); ++ nbr = au_sbbot(sb) + 1; ++ if (unlikely(nbr <= 0)) ++ nbr = 1; ++ hi = kmalloc_array(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); ++ if (hi) { ++ au_lcnt_inc(&au_sbi(sb)->si_ninodes); ++ ++ iinfo->ii_hinode = hi; ++ for (i = 0; i < nbr; i++, hi++) ++ au_hinode_init(hi); ++ ++ iinfo->ii_generation.ig_generation = au_sigen(sb); ++ iinfo->ii_btop = -1; ++ iinfo->ii_bbot = -1; ++ iinfo->ii_vdir = NULL; ++ return 0; ++ } ++ return -ENOMEM; ++} ++ ++int au_hinode_realloc(struct au_iinfo *iinfo, int nbr, int may_shrink) ++{ ++ int err, i; ++ struct au_hinode *hip; ++ ++ AuRwMustWriteLock(&iinfo->ii_rwsem); ++ ++ err = -ENOMEM; ++ hip = au_krealloc(iinfo->ii_hinode, sizeof(*hip) * nbr, GFP_NOFS, ++ may_shrink); ++ if (hip) { ++ iinfo->ii_hinode = hip; ++ i = iinfo->ii_bbot + 1; ++ hip += i; ++ for (; i < nbr; i++, hip++) ++ au_hinode_init(hip); ++ err = 0; ++ } ++ ++ return err; ++} ++ ++void au_iinfo_fin(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct au_hinode *hi; ++ struct super_block *sb; ++ aufs_bindex_t bindex, bbot; ++ const unsigned char unlinked = !inode->i_nlink; ++ ++ AuDebugOn(au_is_bad_inode(inode)); ++ ++ sb = inode->i_sb; ++ au_lcnt_dec(&au_sbi(sb)->si_ninodes); ++ if (si_pid_test(sb)) ++ au_xino_delete_inode(inode, unlinked); ++ else { ++ /* ++ * it is safe to hide the dependency between sbinfo and ++ * sb->s_umount. ++ */ ++ lockdep_off(); ++ si_noflush_read_lock(sb); ++ au_xino_delete_inode(inode, unlinked); ++ si_read_unlock(sb); ++ lockdep_on(); ++ } ++ ++ iinfo = au_ii(inode); ++ if (iinfo->ii_vdir) ++ au_vdir_free(iinfo->ii_vdir); ++ ++ bindex = iinfo->ii_btop; ++ if (bindex >= 0) { ++ hi = au_hinode(iinfo, bindex); ++ bbot = iinfo->ii_bbot; ++ while (bindex++ <= bbot) { ++ if (hi->hi_inode) ++ au_hiput(hi); ++ hi++; ++ } ++ } ++ au_kfree_rcu(iinfo->ii_hinode); ++ AuRwDestroy(&iinfo->ii_rwsem); ++} +diff -Naur null/fs/aufs/inode.c linux-5.15.36/fs/aufs/inode.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/inode.c 2022-05-10 16:51:39.873744219 +0300 +@@ -0,0 +1,531 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode functions ++ */ ++ ++#include ++#include "aufs.h" ++ ++struct inode *au_igrab(struct inode *inode) ++{ ++ if (inode) { ++ AuDebugOn(!atomic_read(&inode->i_count)); ++ ihold(inode); ++ } ++ return inode; ++} ++ ++static void au_refresh_hinode_attr(struct inode *inode, int do_version) ++{ ++ au_cpup_attr_all(inode, /*force*/0); ++ au_update_iigen(inode, /*half*/1); ++ if (do_version) ++ inode_inc_iversion(inode); ++} ++ ++static int au_ii_refresh(struct inode *inode, int *update) ++{ ++ int err, e, nbr; ++ umode_t type; ++ aufs_bindex_t bindex, new_bindex; ++ struct super_block *sb; ++ struct au_iinfo *iinfo; ++ struct au_hinode *p, *q, tmp; ++ ++ AuDebugOn(au_is_bad_inode(inode)); ++ IiMustWriteLock(inode); ++ ++ *update = 0; ++ sb = inode->i_sb; ++ nbr = au_sbbot(sb) + 1; ++ type = inode->i_mode & S_IFMT; ++ iinfo = au_ii(inode); ++ err = au_hinode_realloc(iinfo, nbr, /*may_shrink*/0); ++ if (unlikely(err)) ++ goto out; ++ ++ AuDebugOn(iinfo->ii_btop < 0); ++ p = au_hinode(iinfo, iinfo->ii_btop); ++ for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; ++ bindex++, p++) { ++ if (!p->hi_inode) ++ continue; ++ ++ AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); ++ new_bindex = au_br_index(sb, p->hi_id); ++ if (new_bindex == bindex) ++ continue; ++ ++ if (new_bindex < 0) { ++ *update = 1; ++ au_hiput(p); ++ p->hi_inode = NULL; ++ continue; ++ } ++ ++ if (new_bindex < iinfo->ii_btop) ++ iinfo->ii_btop = new_bindex; ++ if (iinfo->ii_bbot < new_bindex) ++ iinfo->ii_bbot = new_bindex; ++ /* swap two lower inode, and loop again */ ++ q = au_hinode(iinfo, new_bindex); ++ tmp = *q; ++ *q = *p; ++ *p = tmp; ++ if (tmp.hi_inode) { ++ bindex--; ++ p--; ++ } ++ } ++ au_update_ibrange(inode, /*do_put_zero*/0); ++ au_hinode_realloc(iinfo, nbr, /*may_shrink*/1); /* harmless if err */ ++ e = au_dy_irefresh(inode); ++ if (unlikely(e && !err)) ++ err = e; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_refresh_iop(struct inode *inode, int force_getattr) ++{ ++ int type; ++ struct au_sbinfo *sbi = au_sbi(inode->i_sb); ++ const struct inode_operations *iop ++ = force_getattr ? aufs_iop : sbi->si_iop_array; ++ ++ if (inode->i_op == iop) ++ return; ++ ++ switch (inode->i_mode & S_IFMT) { ++ case S_IFDIR: ++ type = AuIop_DIR; ++ break; ++ case S_IFLNK: ++ type = AuIop_SYMLINK; ++ break; ++ default: ++ type = AuIop_OTHER; ++ break; ++ } ++ ++ inode->i_op = iop + type; ++ /* unnecessary smp_wmb() */ ++} ++ ++int au_refresh_hinode_self(struct inode *inode) ++{ ++ int err, update; ++ ++ err = au_ii_refresh(inode, &update); ++ if (!err) ++ au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_refresh_hinode(struct inode *inode, struct dentry *dentry) ++{ ++ int err, e, update; ++ unsigned int flags; ++ umode_t mode; ++ aufs_bindex_t bindex, bbot; ++ unsigned char isdir; ++ struct au_hinode *p; ++ struct au_iinfo *iinfo; ++ ++ err = au_ii_refresh(inode, &update); ++ if (unlikely(err)) ++ goto out; ++ ++ update = 0; ++ iinfo = au_ii(inode); ++ p = au_hinode(iinfo, iinfo->ii_btop); ++ mode = (inode->i_mode & S_IFMT); ++ isdir = S_ISDIR(mode); ++ flags = au_hi_flags(inode, isdir); ++ bbot = au_dbbot(dentry); ++ for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) { ++ struct inode *h_i, *h_inode; ++ struct dentry *h_d; ++ ++ h_d = au_h_dptr(dentry, bindex); ++ if (!h_d || d_is_negative(h_d)) ++ continue; ++ ++ h_inode = d_inode(h_d); ++ AuDebugOn(mode != (h_inode->i_mode & S_IFMT)); ++ if (iinfo->ii_btop <= bindex && bindex <= iinfo->ii_bbot) { ++ h_i = au_h_iptr(inode, bindex); ++ if (h_i) { ++ if (h_i == h_inode) ++ continue; ++ err = -EIO; ++ break; ++ } ++ } ++ if (bindex < iinfo->ii_btop) ++ iinfo->ii_btop = bindex; ++ if (iinfo->ii_bbot < bindex) ++ iinfo->ii_bbot = bindex; ++ au_set_h_iptr(inode, bindex, au_igrab(h_inode), flags); ++ update = 1; ++ } ++ au_update_ibrange(inode, /*do_put_zero*/0); ++ e = au_dy_irefresh(inode); ++ if (unlikely(e && !err)) ++ err = e; ++ if (!err) ++ au_refresh_hinode_attr(inode, update && isdir); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int set_inode(struct inode *inode, struct dentry *dentry) ++{ ++ int err; ++ unsigned int flags; ++ umode_t mode; ++ aufs_bindex_t bindex, btop, btail; ++ unsigned char isdir; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ struct au_iinfo *iinfo; ++ const struct inode_operations *iop; ++ ++ IiMustWriteLock(inode); ++ ++ err = 0; ++ isdir = 0; ++ iop = au_sbi(inode->i_sb)->si_iop_array; ++ btop = au_dbtop(dentry); ++ h_dentry = au_h_dptr(dentry, btop); ++ h_inode = d_inode(h_dentry); ++ mode = h_inode->i_mode; ++ switch (mode & S_IFMT) { ++ case S_IFREG: ++ btail = au_dbtail(dentry); ++ inode->i_op = iop + AuIop_OTHER; ++ inode->i_fop = &aufs_file_fop; ++ err = au_dy_iaop(inode, btop, h_inode); ++ if (unlikely(err)) ++ goto out; ++ break; ++ case S_IFDIR: ++ isdir = 1; ++ btail = au_dbtaildir(dentry); ++ inode->i_op = iop + AuIop_DIR; ++ inode->i_fop = &aufs_dir_fop; ++ break; ++ case S_IFLNK: ++ btail = au_dbtail(dentry); ++ inode->i_op = iop + AuIop_SYMLINK; ++ break; ++ case S_IFBLK: ++ case S_IFCHR: ++ case S_IFIFO: ++ case S_IFSOCK: ++ btail = au_dbtail(dentry); ++ inode->i_op = iop + AuIop_OTHER; ++ init_special_inode(inode, mode, h_inode->i_rdev); ++ break; ++ default: ++ AuIOErr("Unknown file type 0%o\n", mode); ++ err = -EIO; ++ goto out; ++ } ++ ++ /* do not set hnotify for whiteouted dirs (SHWH mode) */ ++ flags = au_hi_flags(inode, isdir); ++ if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) ++ && au_ftest_hi(flags, HNOTIFY) ++ && dentry->d_name.len > AUFS_WH_PFX_LEN ++ && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) ++ au_fclr_hi(flags, HNOTIFY); ++ iinfo = au_ii(inode); ++ iinfo->ii_btop = btop; ++ iinfo->ii_bbot = btail; ++ for (bindex = btop; bindex <= btail; bindex++) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry) ++ au_set_h_iptr(inode, bindex, ++ au_igrab(d_inode(h_dentry)), flags); ++ } ++ au_cpup_attr_all(inode, /*force*/1); ++ /* ++ * to force calling aufs_get_acl() every time, ++ * do not call cache_no_acl() for aufs inode. ++ */ ++ ++out: ++ return err; ++} ++ ++/* ++ * successful returns with iinfo write_locked ++ * minus: errno ++ * zero: success, matched ++ * plus: no error, but unmatched ++ */ ++static int reval_inode(struct inode *inode, struct dentry *dentry) ++{ ++ int err; ++ unsigned int gen, igflags; ++ aufs_bindex_t bindex, bbot; ++ struct inode *h_inode, *h_dinode; ++ struct dentry *h_dentry; ++ ++ /* ++ * before this function, if aufs got any iinfo lock, it must be only ++ * one, the parent dir. ++ * it can happen by UDBA and the obsoleted inode number. ++ */ ++ err = -EIO; ++ if (unlikely(inode->i_ino == parent_ino(dentry))) ++ goto out; ++ ++ err = 1; ++ ii_write_lock_new_child(inode); ++ h_dentry = au_h_dptr(dentry, au_dbtop(dentry)); ++ h_dinode = d_inode(h_dentry); ++ bbot = au_ibbot(inode); ++ for (bindex = au_ibtop(inode); bindex <= bbot; bindex++) { ++ h_inode = au_h_iptr(inode, bindex); ++ if (!h_inode || h_inode != h_dinode) ++ continue; ++ ++ err = 0; ++ gen = au_iigen(inode, &igflags); ++ if (gen == au_digen(dentry) ++ && !au_ig_ftest(igflags, HALF_REFRESHED)) ++ break; ++ ++ /* fully refresh inode using dentry */ ++ err = au_refresh_hinode(inode, dentry); ++ if (!err) ++ au_update_iigen(inode, /*half*/0); ++ break; ++ } ++ ++ if (unlikely(err)) ++ ii_write_unlock(inode); ++out: ++ return err; ++} ++ ++int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ unsigned int d_type, ino_t *ino) ++{ ++ int err, idx; ++ const int isnondir = d_type != DT_DIR; ++ ++ /* prevent hardlinked inode number from race condition */ ++ if (isnondir) { ++ err = au_xinondir_enter(sb, bindex, h_ino, &idx); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ err = au_xino_read(sb, bindex, h_ino, ino); ++ if (unlikely(err)) ++ goto out_xinondir; ++ ++ if (!*ino) { ++ err = -EIO; ++ *ino = au_xino_new_ino(sb); ++ if (unlikely(!*ino)) ++ goto out_xinondir; ++ err = au_xino_write(sb, bindex, h_ino, *ino); ++ if (unlikely(err)) ++ goto out_xinondir; ++ } ++ ++out_xinondir: ++ if (isnondir && idx >= 0) ++ au_xinondir_leave(sb, bindex, h_ino, idx); ++out: ++ return err; ++} ++ ++/* successful returns with iinfo write_locked */ ++/* todo: return with unlocked? */ ++struct inode *au_new_inode(struct dentry *dentry, int must_new) ++{ ++ struct inode *inode, *h_inode; ++ struct dentry *h_dentry; ++ struct super_block *sb; ++ ino_t h_ino, ino; ++ int err, idx, hlinked; ++ aufs_bindex_t btop; ++ ++ sb = dentry->d_sb; ++ btop = au_dbtop(dentry); ++ h_dentry = au_h_dptr(dentry, btop); ++ h_inode = d_inode(h_dentry); ++ h_ino = h_inode->i_ino; ++ hlinked = !d_is_dir(h_dentry) && h_inode->i_nlink > 1; ++ ++new_ino: ++ /* ++ * stop 'race'-ing between hardlinks under different ++ * parents. ++ */ ++ if (hlinked) { ++ err = au_xinondir_enter(sb, btop, h_ino, &idx); ++ inode = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ err = au_xino_read(sb, btop, h_ino, &ino); ++ inode = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_xinondir; ++ ++ if (!ino) { ++ ino = au_xino_new_ino(sb); ++ if (unlikely(!ino)) { ++ inode = ERR_PTR(-EIO); ++ goto out_xinondir; ++ } ++ } ++ ++ AuDbg("i%lu\n", (unsigned long)ino); ++ inode = au_iget_locked(sb, ino); ++ err = PTR_ERR(inode); ++ if (IS_ERR(inode)) ++ goto out_xinondir; ++ ++ AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); ++ if (inode->i_state & I_NEW) { ++ ii_write_lock_new_child(inode); ++ err = set_inode(inode, dentry); ++ if (!err) { ++ unlock_new_inode(inode); ++ goto out_xinondir; /* success */ ++ } ++ ++ /* ++ * iget_failed() calls iput(), but we need to call ++ * ii_write_unlock() after iget_failed(). so dirty hack for ++ * i_count. ++ */ ++ atomic_inc(&inode->i_count); ++ iget_failed(inode); ++ ii_write_unlock(inode); ++ au_xino_write(sb, btop, h_ino, /*ino*/0); ++ /* ignore this error */ ++ goto out_iput; ++ } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { ++ /* ++ * horrible race condition between lookup, readdir and copyup ++ * (or something). ++ */ ++ if (hlinked && idx >= 0) ++ au_xinondir_leave(sb, btop, h_ino, idx); ++ err = reval_inode(inode, dentry); ++ if (unlikely(err < 0)) { ++ hlinked = 0; ++ goto out_iput; ++ } ++ if (!err) ++ goto out; /* success */ ++ else if (hlinked && idx >= 0) { ++ err = au_xinondir_enter(sb, btop, h_ino, &idx); ++ if (unlikely(err)) { ++ iput(inode); ++ inode = ERR_PTR(err); ++ goto out; ++ } ++ } ++ } ++ ++ if (unlikely(au_test_fs_unique_ino(h_inode))) ++ AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," ++ " b%d, %s, %pd, hi%lu, i%lu.\n", ++ btop, au_sbtype(h_dentry->d_sb), dentry, ++ (unsigned long)h_ino, (unsigned long)ino); ++ ino = 0; ++ err = au_xino_write(sb, btop, h_ino, /*ino*/0); ++ if (!err) { ++ iput(inode); ++ if (hlinked && idx >= 0) ++ au_xinondir_leave(sb, btop, h_ino, idx); ++ goto new_ino; ++ } ++ ++out_iput: ++ iput(inode); ++ inode = ERR_PTR(err); ++out_xinondir: ++ if (hlinked && idx >= 0) ++ au_xinondir_leave(sb, btop, h_ino, idx); ++out: ++ return inode; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, ++ struct inode *inode) ++{ ++ int err; ++ struct inode *hi; ++ ++ err = au_br_rdonly(au_sbr(sb, bindex)); ++ ++ /* pseudo-link after flushed may happen out of bounds */ ++ if (!err ++ && inode ++ && au_ibtop(inode) <= bindex ++ && bindex <= au_ibbot(inode)) { ++ /* ++ * permission check is unnecessary since vfsub routine ++ * will be called later ++ */ ++ hi = au_h_iptr(inode, bindex); ++ if (hi) ++ err = IS_IMMUTABLE(hi) ? -EROFS : 0; ++ } ++ ++ return err; ++} ++ ++int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask) ++{ ++ if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) ++ return 0; ++ return inode_permission(h_userns, h_inode, mask); ++} ++ ++int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask) ++{ ++ if (au_test_nfs(h_inode->i_sb) ++ && (mask & MAY_WRITE) ++ && S_ISDIR(h_inode->i_mode)) ++ mask |= MAY_READ; /* force permission check */ ++ return au_test_h_perm(h_userns, h_inode, mask); ++} +diff -Naur null/fs/aufs/inode.h linux-5.15.36/fs/aufs/inode.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/inode.h 2022-05-10 16:51:39.873744219 +0300 +@@ -0,0 +1,705 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode operations ++ */ ++ ++#ifndef __AUFS_INODE_H__ ++#define __AUFS_INODE_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include "rwsem.h" ++ ++struct vfsmount; ++ ++struct au_hnotify { ++#ifdef CONFIG_AUFS_HNOTIFY ++#ifdef CONFIG_AUFS_HFSNOTIFY ++ /* never use fsnotify_add_vfsmount_mark() */ ++ struct fsnotify_mark hn_mark; ++#endif ++ struct inode *hn_aufs_inode; /* no get/put */ ++ struct rcu_head rcu; ++#endif ++} ____cacheline_aligned_in_smp; ++ ++struct au_hinode { ++ struct inode *hi_inode; ++ aufs_bindex_t hi_id; ++#ifdef CONFIG_AUFS_HNOTIFY ++ struct au_hnotify *hi_notify; ++#endif ++ ++ /* reference to the copied-up whiteout with get/put */ ++ struct dentry *hi_whdentry; ++}; ++ ++/* ig_flags */ ++#define AuIG_HALF_REFRESHED 1 ++#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) ++#define au_ig_fset(flags, name) \ ++ do { (flags) |= AuIG_##name; } while (0) ++#define au_ig_fclr(flags, name) \ ++ do { (flags) &= ~AuIG_##name; } while (0) ++ ++struct au_iigen { ++ spinlock_t ig_spin; ++ __u32 ig_generation, ig_flags; ++}; ++ ++struct au_vdir; ++struct au_iinfo { ++ struct au_iigen ii_generation; ++ struct super_block *ii_hsb1; /* no get/put */ ++ ++ struct au_rwsem ii_rwsem; ++ aufs_bindex_t ii_btop, ii_bbot; ++ __u32 ii_higen; ++ struct au_hinode *ii_hinode; ++ struct au_vdir *ii_vdir; ++}; ++ ++struct au_icntnr { ++ struct au_iinfo iinfo; ++ struct inode vfs_inode; ++ struct hlist_bl_node plink; ++ struct rcu_head rcu; ++} ____cacheline_aligned_in_smp; ++ ++/* au_pin flags */ ++#define AuPin_DI_LOCKED 1 ++#define AuPin_MNT_WRITE (1 << 1) ++#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) ++#define au_fset_pin(flags, name) \ ++ do { (flags) |= AuPin_##name; } while (0) ++#define au_fclr_pin(flags, name) \ ++ do { (flags) &= ~AuPin_##name; } while (0) ++ ++struct au_pin { ++ /* input */ ++ struct dentry *dentry; ++ unsigned int udba; ++ unsigned char lsc_di, lsc_hi, flags; ++ aufs_bindex_t bindex; ++ ++ /* output */ ++ struct dentry *parent; ++ struct au_hinode *hdir; ++ struct vfsmount *h_mnt; ++ ++ /* temporary unlock/relock for copyup */ ++ struct dentry *h_dentry, *h_parent; ++ struct au_branch *br; ++ struct task_struct *task; ++}; ++ ++void au_pin_hdir_unlock(struct au_pin *p); ++int au_pin_hdir_lock(struct au_pin *p); ++int au_pin_hdir_relock(struct au_pin *p); ++void au_pin_hdir_acquire_nest(struct au_pin *p); ++void au_pin_hdir_release(struct au_pin *p); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct au_iinfo *au_ii(struct inode *inode) ++{ ++ BUG_ON(is_bad_inode(inode)); ++ return &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* inode.c */ ++struct inode *au_igrab(struct inode *inode); ++void au_refresh_iop(struct inode *inode, int force_getattr); ++int au_refresh_hinode_self(struct inode *inode); ++int au_refresh_hinode(struct inode *inode, struct dentry *dentry); ++int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ unsigned int d_type, ino_t *ino); ++struct inode *au_new_inode(struct dentry *dentry, int must_new); ++int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, ++ struct inode *inode); ++int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask); ++int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask); ++ ++static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, ++ ino_t h_ino, unsigned int d_type, ino_t *ino) ++{ ++#ifdef CONFIG_AUFS_SHWH ++ return au_ino(sb, bindex, h_ino, d_type, ino); ++#else ++ return 0; ++#endif ++} ++ ++/* i_op.c */ ++enum { ++ AuIop_SYMLINK, ++ AuIop_DIR, ++ AuIop_OTHER, ++ AuIop_Last ++}; ++extern struct inode_operations aufs_iop[AuIop_Last], /* not const */ ++ aufs_iop_nogetattr[AuIop_Last]; ++ ++/* au_wr_dir flags */ ++#define AuWrDir_ADD_ENTRY 1 ++#define AuWrDir_ISDIR (1 << 1) ++#define AuWrDir_TMPFILE (1 << 2) ++#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) ++#define au_fset_wrdir(flags, name) \ ++ do { (flags) |= AuWrDir_##name; } while (0) ++#define au_fclr_wrdir(flags, name) \ ++ do { (flags) &= ~AuWrDir_##name; } while (0) ++ ++struct au_wr_dir_args { ++ aufs_bindex_t force_btgt; ++ unsigned char flags; ++}; ++int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, ++ struct au_wr_dir_args *args); ++ ++struct dentry *au_pinned_h_parent(struct au_pin *pin); ++void au_pin_init(struct au_pin *pin, struct dentry *dentry, ++ aufs_bindex_t bindex, int lsc_di, int lsc_hi, ++ unsigned int udba, unsigned char flags); ++int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, ++ unsigned int udba, unsigned char flags) __must_check; ++int au_do_pin(struct au_pin *pin) __must_check; ++void au_unpin(struct au_pin *pin); ++int au_reval_for_attr(struct dentry *dentry, unsigned int sigen); ++ ++#define AuIcpup_DID_CPUP 1 ++#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) ++#define au_fset_icpup(flags, name) \ ++ do { (flags) |= AuIcpup_##name; } while (0) ++#define au_fclr_icpup(flags, name) \ ++ do { (flags) &= ~AuIcpup_##name; } while (0) ++ ++struct au_icpup_args { ++ unsigned char flags; ++ unsigned char pin_flags; ++ aufs_bindex_t btgt; ++ unsigned int udba; ++ struct au_pin pin; ++ struct path h_path; ++ struct inode *h_inode; ++}; ++ ++int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, ++ struct au_icpup_args *a); ++ ++int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force, ++ struct path *h_path, int locked); ++ ++/* i_op_add.c */ ++int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir); ++int aufs_mknod(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, dev_t dev); ++int aufs_symlink(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, const char *symname); ++int aufs_create(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, bool want_excl); ++struct vfsub_aopen_args; ++int au_aopen_or_create(struct inode *dir, struct dentry *dentry, ++ struct vfsub_aopen_args *args); ++int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode); ++int aufs_link(struct dentry *src_dentry, struct inode *dir, ++ struct dentry *dentry); ++int aufs_mkdir(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode); ++ ++/* i_op_del.c */ ++int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); ++int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir); ++int aufs_unlink(struct inode *dir, struct dentry *dentry); ++int aufs_rmdir(struct inode *dir, struct dentry *dentry); ++ ++/* i_op_ren.c */ ++int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); ++int aufs_rename(struct user_namespace *userns, ++ struct inode *_src_dir, struct dentry *_src_dentry, ++ struct inode *_dst_dir, struct dentry *_dst_dentry, ++ unsigned int _flags); ++ ++/* iinfo.c */ ++struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); ++void au_hiput(struct au_hinode *hinode); ++void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_wh); ++unsigned int au_hi_flags(struct inode *inode, int isdir); ++ ++/* hinode flags */ ++#define AuHi_XINO 1 ++#define AuHi_HNOTIFY (1 << 1) ++#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) ++#define au_fset_hi(flags, name) \ ++ do { (flags) |= AuHi_##name; } while (0) ++#define au_fclr_hi(flags, name) \ ++ do { (flags) &= ~AuHi_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_HNOTIFY ++#undef AuHi_HNOTIFY ++#define AuHi_HNOTIFY 0 ++#endif ++ ++void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, ++ struct inode *h_inode, unsigned int flags); ++ ++void au_update_iigen(struct inode *inode, int half); ++void au_update_ibrange(struct inode *inode, int do_put_zero); ++ ++void au_icntnr_init_once(void *_c); ++void au_hinode_init(struct au_hinode *hinode); ++int au_iinfo_init(struct inode *inode); ++void au_iinfo_fin(struct inode *inode); ++int au_hinode_realloc(struct au_iinfo *iinfo, int nbr, int may_shrink); ++ ++#ifdef CONFIG_PROC_FS ++/* plink.c */ ++int au_plink_maint(struct super_block *sb, int flags); ++struct au_sbinfo; ++void au_plink_maint_leave(struct au_sbinfo *sbinfo); ++int au_plink_maint_enter(struct super_block *sb); ++#ifdef CONFIG_AUFS_DEBUG ++void au_plink_list(struct super_block *sb); ++#else ++AuStubVoid(au_plink_list, struct super_block *sb) ++#endif ++int au_plink_test(struct inode *inode); ++struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); ++void au_plink_append(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_dentry); ++void au_plink_put(struct super_block *sb, int verbose); ++void au_plink_clean(struct super_block *sb, int verbose); ++void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); ++#else ++AuStubInt0(au_plink_maint, struct super_block *sb, int flags); ++AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); ++AuStubInt0(au_plink_maint_enter, struct super_block *sb); ++AuStubVoid(au_plink_list, struct super_block *sb); ++AuStubInt0(au_plink_test, struct inode *inode); ++AuStub(struct dentry *, au_plink_lkup, return NULL, ++ struct inode *inode, aufs_bindex_t bindex); ++AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_dentry); ++AuStubVoid(au_plink_put, struct super_block *sb, int verbose); ++AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); ++AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); ++#endif /* CONFIG_PROC_FS */ ++ ++#ifdef CONFIG_AUFS_XATTR ++/* xattr.c */ ++int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, ++ unsigned int verbose); ++ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); ++void au_xattr_init(struct super_block *sb); ++#else ++AuStubInt0(au_cpup_xattr, struct path *h_dst, struct path *h_src, ++ int ignore_flags, unsigned int verbose); ++AuStubVoid(au_xattr_init, struct super_block *sb); ++#endif ++ ++#ifdef CONFIG_FS_POSIX_ACL ++struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu); ++int aufs_set_acl(struct user_namespace *userns, struct inode *inode, ++ struct posix_acl *acl, int type); ++#endif ++ ++#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) ++enum { ++ AU_XATTR_SET, ++ AU_ACL_SET ++}; ++ ++struct au_sxattr { ++ int type; ++ union { ++ struct { ++ const char *name; ++ const void *value; ++ size_t size; ++ int flags; ++ } set; ++ struct { ++ struct posix_acl *acl; ++ int type; ++ } acl_set; ++ } u; ++}; ++ssize_t au_sxattr(struct dentry *dentry, struct inode *inode, ++ struct au_sxattr *arg); ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* lock subclass for iinfo */ ++enum { ++ AuLsc_II_CHILD, /* child first */ ++ AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ ++ AuLsc_II_CHILD3, /* copyup dirs */ ++ AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ ++ AuLsc_II_PARENT2, ++ AuLsc_II_PARENT3, /* copyup dirs */ ++ AuLsc_II_NEW_CHILD ++}; ++ ++/* ++ * ii_read_lock_child, ii_write_lock_child, ++ * ii_read_lock_child2, ii_write_lock_child2, ++ * ii_read_lock_child3, ii_write_lock_child3, ++ * ii_read_lock_parent, ii_write_lock_parent, ++ * ii_read_lock_parent2, ii_write_lock_parent2, ++ * ii_read_lock_parent3, ii_write_lock_parent3, ++ * ii_read_lock_new_child, ii_write_lock_new_child, ++ */ ++#define AuReadLockFunc(name, lsc) \ ++static inline void ii_read_lock_##name(struct inode *i) \ ++{ \ ++ au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ ++} ++ ++#define AuWriteLockFunc(name, lsc) \ ++static inline void ii_write_lock_##name(struct inode *i) \ ++{ \ ++ au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ ++} ++ ++#define AuRWLockFuncs(name, lsc) \ ++ AuReadLockFunc(name, lsc) \ ++ AuWriteLockFunc(name, lsc) ++ ++AuRWLockFuncs(child, CHILD); ++AuRWLockFuncs(child2, CHILD2); ++AuRWLockFuncs(child3, CHILD3); ++AuRWLockFuncs(parent, PARENT); ++AuRWLockFuncs(parent2, PARENT2); ++AuRWLockFuncs(parent3, PARENT3); ++AuRWLockFuncs(new_child, NEW_CHILD); ++ ++#undef AuReadLockFunc ++#undef AuWriteLockFunc ++#undef AuRWLockFuncs ++ ++#define ii_read_unlock(i) au_rw_read_unlock(&au_ii(i)->ii_rwsem) ++#define ii_write_unlock(i) au_rw_write_unlock(&au_ii(i)->ii_rwsem) ++#define ii_downgrade_lock(i) au_rw_dgrade_lock(&au_ii(i)->ii_rwsem) ++ ++#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) ++#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) ++#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline void au_icntnr_init(struct au_icntnr *c) ++{ ++#ifdef CONFIG_AUFS_DEBUG ++ c->vfs_inode.i_mode = 0; ++#endif ++} ++ ++static inline unsigned int au_iigen(struct inode *inode, unsigned int *igflags) ++{ ++ unsigned int gen; ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ if (igflags) ++ *igflags = iigen->ig_flags; ++ gen = iigen->ig_generation; ++ spin_unlock(&iigen->ig_spin); ++ ++ return gen; ++} ++ ++/* tiny test for inode number */ ++/* tmpfs generation is too rough */ ++static inline int au_test_higen(struct inode *inode, struct inode *h_inode) ++{ ++ struct au_iinfo *iinfo; ++ ++ iinfo = au_ii(inode); ++ AuRwMustAnyLock(&iinfo->ii_rwsem); ++ return !(iinfo->ii_hsb1 == h_inode->i_sb ++ && iinfo->ii_higen == h_inode->i_generation); ++} ++ ++static inline void au_iigen_dec(struct inode *inode) ++{ ++ struct au_iinfo *iinfo; ++ struct au_iigen *iigen; ++ ++ iinfo = au_ii(inode); ++ iigen = &iinfo->ii_generation; ++ spin_lock(&iigen->ig_spin); ++ iigen->ig_generation--; ++ spin_unlock(&iigen->ig_spin); ++} ++ ++static inline int au_iigen_test(struct inode *inode, unsigned int sigen) ++{ ++ int err; ++ ++ err = 0; ++ if (unlikely(inode && au_iigen(inode, NULL) != sigen)) ++ err = -EIO; ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct au_hinode *au_hinode(struct au_iinfo *iinfo, ++ aufs_bindex_t bindex) ++{ ++ return iinfo->ii_hinode + bindex; ++} ++ ++static inline int au_is_bad_inode(struct inode *inode) ++{ ++ return !!(is_bad_inode(inode) || !au_hinode(au_ii(inode), 0)); ++} ++ ++static inline aufs_bindex_t au_ii_br_id(struct inode *inode, ++ aufs_bindex_t bindex) ++{ ++ IiMustAnyLock(inode); ++ return au_hinode(au_ii(inode), bindex)->hi_id; ++} ++ ++static inline aufs_bindex_t au_ibtop(struct inode *inode) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_btop; ++} ++ ++static inline aufs_bindex_t au_ibbot(struct inode *inode) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_bbot; ++} ++ ++static inline struct au_vdir *au_ivdir(struct inode *inode) ++{ ++ IiMustAnyLock(inode); ++ return au_ii(inode)->ii_vdir; ++} ++ ++static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustAnyLock(inode); ++ return au_hinode(au_ii(inode), bindex)->hi_whdentry; ++} ++ ++static inline void au_set_ibtop(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustWriteLock(inode); ++ au_ii(inode)->ii_btop = bindex; ++} ++ ++static inline void au_set_ibbot(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustWriteLock(inode); ++ au_ii(inode)->ii_bbot = bindex; ++} ++ ++static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) ++{ ++ IiMustWriteLock(inode); ++ au_ii(inode)->ii_vdir = vdir; ++} ++ ++static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) ++{ ++ IiMustAnyLock(inode); ++ return au_hinode(au_ii(inode), bindex); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct dentry *au_pinned_parent(struct au_pin *pin) ++{ ++ if (pin) ++ return pin->parent; ++ return NULL; ++} ++ ++static inline struct inode *au_pinned_h_dir(struct au_pin *pin) ++{ ++ if (pin && pin->hdir) ++ return pin->hdir->hi_inode; ++ return NULL; ++} ++ ++static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) ++{ ++ if (pin) ++ return pin->hdir; ++ return NULL; ++} ++ ++static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) ++{ ++ if (pin) ++ pin->dentry = dentry; ++} ++ ++static inline void au_pin_set_parent_lflag(struct au_pin *pin, ++ unsigned char lflag) ++{ ++ if (pin) { ++ if (lflag) ++ au_fset_pin(pin->flags, DI_LOCKED); ++ else ++ au_fclr_pin(pin->flags, DI_LOCKED); ++ } ++} ++ ++#if 0 /* reserved */ ++static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) ++{ ++ if (pin) { ++ dput(pin->parent); ++ pin->parent = dget(parent); ++ } ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_branch; ++#ifdef CONFIG_AUFS_HNOTIFY ++struct au_hnotify_op { ++ void (*ctl)(struct au_hinode *hinode, int do_set); ++ int (*alloc)(struct au_hinode *hinode); ++ ++ /* ++ * if it returns true, the caller should free hinode->hi_notify, ++ * otherwise ->free() frees it. ++ */ ++ int (*free)(struct au_hinode *hinode, ++ struct au_hnotify *hn) __must_check; ++ ++ void (*fin)(void); ++ int (*init)(void); ++ ++ int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); ++ void (*fin_br)(struct au_branch *br); ++ int (*init_br)(struct au_branch *br, int perm); ++}; ++ ++/* hnotify.c */ ++int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); ++void au_hn_free(struct au_hinode *hinode); ++void au_hn_ctl(struct au_hinode *hinode, int do_set); ++void au_hn_reset(struct inode *inode, unsigned int flags); ++int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, ++ const struct qstr *h_child_qstr, struct inode *h_child_inode); ++int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); ++int au_hnotify_init_br(struct au_branch *br, int perm); ++void au_hnotify_fin_br(struct au_branch *br); ++int __init au_hnotify_init(void); ++void au_hnotify_fin(void); ++ ++/* hfsnotify.c */ ++extern const struct au_hnotify_op au_hnotify_op; ++ ++static inline ++void au_hn_init(struct au_hinode *hinode) ++{ ++ hinode->hi_notify = NULL; ++} ++ ++static inline struct au_hnotify *au_hn(struct au_hinode *hinode) ++{ ++ return hinode->hi_notify; ++} ++ ++#else ++AuStub(int, au_hn_alloc, return -EOPNOTSUPP, ++ struct au_hinode *hinode __maybe_unused, ++ struct inode *inode __maybe_unused) ++AuStub(struct au_hnotify *, au_hn, return NULL, struct au_hinode *hinode) ++AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) ++AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, ++ int do_set __maybe_unused) ++AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, ++ unsigned int flags __maybe_unused) ++AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, ++ struct au_branch *br __maybe_unused, ++ int perm __maybe_unused) ++AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, ++ int perm __maybe_unused) ++AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) ++AuStubInt0(__init au_hnotify_init, void) ++AuStubVoid(au_hnotify_fin, void) ++AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) ++#endif /* CONFIG_AUFS_HNOTIFY */ ++ ++static inline void au_hn_suspend(struct au_hinode *hdir) ++{ ++ au_hn_ctl(hdir, /*do_set*/0); ++} ++ ++static inline void au_hn_resume(struct au_hinode *hdir) ++{ ++ au_hn_ctl(hdir, /*do_set*/1); ++} ++ ++static inline void au_hn_inode_lock(struct au_hinode *hdir) ++{ ++ inode_lock(hdir->hi_inode); ++ au_hn_suspend(hdir); ++} ++ ++static inline void au_hn_inode_lock_nested(struct au_hinode *hdir, ++ unsigned int sc __maybe_unused) ++{ ++ inode_lock_nested(hdir->hi_inode, sc); ++ au_hn_suspend(hdir); ++} ++ ++#if 0 /* unused */ ++#include "vfsub.h" ++static inline void au_hn_inode_lock_shared_nested(struct au_hinode *hdir, ++ unsigned int sc) ++{ ++ inode_lock_shared_nested(hdir->hi_inode, sc); ++ au_hn_suspend(hdir); ++} ++#endif ++ ++static inline void au_hn_inode_unlock(struct au_hinode *hdir) ++{ ++ au_hn_resume(hdir); ++ inode_unlock(hdir->hi_inode); ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_INODE_H__ */ +diff -Naur null/fs/aufs/ioctl.c linux-5.15.36/fs/aufs/ioctl.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/ioctl.c 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,220 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * ioctl ++ * plink-management and readdir in userspace. ++ * assist the pathconf(3) wrapper library. ++ * move-down ++ * File-based Hierarchical Storage Management. ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) ++{ ++ int err, fd; ++ aufs_bindex_t wbi, bindex, bbot; ++ struct file *h_file; ++ struct super_block *sb; ++ struct dentry *root; ++ struct au_branch *br; ++ struct aufs_wbr_fd wbrfd = { ++ .oflags = au_dir_roflags, ++ .brid = -1 ++ }; ++ const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY ++ | O_NOATIME | O_CLOEXEC; ++ ++ AuDebugOn(wbrfd.oflags & ~valid); ++ ++ if (arg) { ++ err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ goto out; ++ } ++ ++ err = -EINVAL; ++ AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); ++ wbrfd.oflags |= au_dir_roflags; ++ AuDbg("0%o\n", wbrfd.oflags); ++ if (unlikely(wbrfd.oflags & ~valid)) ++ goto out; ++ } ++ ++ fd = get_unused_fd_flags(0); ++ err = fd; ++ if (unlikely(fd < 0)) ++ goto out; ++ ++ h_file = ERR_PTR(-EINVAL); ++ wbi = 0; ++ br = NULL; ++ sb = path->dentry->d_sb; ++ root = sb->s_root; ++ aufs_read_lock(root, AuLock_IR); ++ bbot = au_sbbot(sb); ++ if (wbrfd.brid >= 0) { ++ wbi = au_br_index(sb, wbrfd.brid); ++ if (unlikely(wbi < 0 || wbi > bbot)) ++ goto out_unlock; ++ } ++ ++ h_file = ERR_PTR(-ENOENT); ++ br = au_sbr(sb, wbi); ++ if (!au_br_writable(br->br_perm)) { ++ if (arg) ++ goto out_unlock; ++ ++ bindex = wbi + 1; ++ wbi = -1; ++ for (; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_writable(br->br_perm)) { ++ wbi = bindex; ++ br = au_sbr(sb, wbi); ++ break; ++ } ++ } ++ } ++ AuDbg("wbi %d\n", wbi); ++ if (wbi >= 0) ++ h_file = au_h_open(root, wbi, wbrfd.oflags, NULL, ++ /*force_wr*/0); ++ ++out_unlock: ++ aufs_read_unlock(root, AuLock_IR); ++ err = PTR_ERR(h_file); ++ if (IS_ERR(h_file)) ++ goto out_fd; ++ ++ au_lcnt_dec(&br->br_nfiles); /* cf. au_h_open() */ ++ fd_install(fd, h_file); ++ err = fd; ++ goto out; /* success */ ++ ++out_fd: ++ put_unused_fd(fd); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ long err; ++ struct dentry *dentry; ++ ++ switch (cmd) { ++ case AUFS_CTL_RDU: ++ case AUFS_CTL_RDU_INO: ++ err = au_rdu_ioctl(file, cmd, arg); ++ break; ++ ++ case AUFS_CTL_WBR_FD: ++ err = au_wbr_fd(&file->f_path, (void __user *)arg); ++ break; ++ ++ case AUFS_CTL_IBUSY: ++ err = au_ibusy_ioctl(file, arg); ++ break; ++ ++ case AUFS_CTL_BRINFO: ++ err = au_brinfo_ioctl(file, arg); ++ break; ++ ++ case AUFS_CTL_FHSM_FD: ++ dentry = file->f_path.dentry; ++ if (IS_ROOT(dentry)) ++ err = au_fhsm_fd(dentry->d_sb, arg); ++ else ++ err = -ENOTTY; ++ break; ++ ++ default: ++ /* do not call the lower */ ++ AuDbg("0x%x\n", cmd); ++ err = -ENOTTY; ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ long err; ++ ++ switch (cmd) { ++ case AUFS_CTL_MVDOWN: ++ err = au_mvdown(file->f_path.dentry, (void __user *)arg); ++ break; ++ ++ case AUFS_CTL_WBR_FD: ++ err = au_wbr_fd(&file->f_path, (void __user *)arg); ++ break; ++ ++ default: ++ /* do not call the lower */ ++ AuDbg("0x%x\n", cmd); ++ err = -ENOTTY; ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++#ifdef CONFIG_COMPAT ++long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, ++ unsigned long arg) ++{ ++ long err; ++ ++ switch (cmd) { ++ case AUFS_CTL_RDU: ++ case AUFS_CTL_RDU_INO: ++ err = au_rdu_compat_ioctl(file, cmd, arg); ++ break; ++ ++ case AUFS_CTL_IBUSY: ++ err = au_ibusy_compat_ioctl(file, arg); ++ break; ++ ++ case AUFS_CTL_BRINFO: ++ err = au_brinfo_compat_ioctl(file, arg); ++ break; ++ ++ default: ++ err = aufs_ioctl_dir(file, cmd, arg); ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, ++ unsigned long arg) ++{ ++ return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); ++} ++#endif +diff -Naur null/fs/aufs/i_op_add.c linux-5.15.36/fs/aufs/i_op_add.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/i_op_add.c 2022-05-10 16:51:39.872744219 +0300 +@@ -0,0 +1,941 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode operations (add entry) ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* ++ * final procedure of adding a new entry, except link(2). ++ * remove whiteout, instantiate, copyup the parent dir's times and size ++ * and update version. ++ * if it failed, re-create the removed whiteout. ++ */ ++static int epilog(struct inode *dir, aufs_bindex_t bindex, ++ struct dentry *wh_dentry, struct dentry *dentry) ++{ ++ int err, rerr; ++ aufs_bindex_t bwh; ++ struct path h_path; ++ struct super_block *sb; ++ struct inode *inode, *h_dir; ++ struct dentry *wh; ++ ++ bwh = -1; ++ sb = dir->i_sb; ++ if (wh_dentry) { ++ h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ ++ IMustLock(h_dir); ++ AuDebugOn(au_h_iptr(dir, bindex) != h_dir); ++ bwh = au_dbwh(dentry); ++ h_path.dentry = wh_dentry; ++ h_path.mnt = au_sbr_mnt(sb, bindex); ++ err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, ++ dentry); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ inode = au_new_inode(dentry, /*must_new*/1); ++ if (!IS_ERR(inode)) { ++ d_instantiate(dentry, inode); ++ dir = d_inode(dentry->d_parent); /* dir inode is locked */ ++ IMustLock(dir); ++ au_dir_ts(dir, bindex); ++ inode_inc_iversion(dir); ++ au_fhsm_wrote(sb, bindex, /*force*/0); ++ return 0; /* success */ ++ } ++ ++ err = PTR_ERR(inode); ++ if (!wh_dentry) ++ goto out; ++ ++ /* revert */ ++ /* dir inode is locked */ ++ wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); ++ rerr = PTR_ERR(wh); ++ if (IS_ERR(wh)) { ++ AuIOErr("%pd reverting whiteout failed(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } else ++ dput(wh); ++ ++out: ++ return err; ++} ++ ++static int au_d_may_add(struct dentry *dentry) ++{ ++ int err; ++ ++ err = 0; ++ if (unlikely(d_unhashed(dentry))) ++ err = -ENOENT; ++ if (unlikely(d_really_is_positive(dentry))) ++ err = -EEXIST; ++ return err; ++} ++ ++/* ++ * simple tests for the adding inode operations. ++ * following the checks in vfs, plus the parent-child relationship. ++ */ ++int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir) ++{ ++ int err; ++ umode_t h_mode; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ ++ err = -ENAMETOOLONG; ++ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ goto out; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (d_really_is_negative(dentry)) { ++ err = -EEXIST; ++ if (unlikely(d_is_positive(h_dentry))) ++ goto out; ++ } else { ++ /* rename(2) case */ ++ err = -EIO; ++ if (unlikely(d_is_negative(h_dentry))) ++ goto out; ++ h_inode = d_inode(h_dentry); ++ if (unlikely(!h_inode->i_nlink)) ++ goto out; ++ ++ h_mode = h_inode->i_mode; ++ if (!isdir) { ++ err = -EISDIR; ++ if (unlikely(S_ISDIR(h_mode))) ++ goto out; ++ } else if (unlikely(!S_ISDIR(h_mode))) { ++ err = -ENOTDIR; ++ goto out; ++ } ++ } ++ ++ err = 0; ++ /* expected parent dir is locked */ ++ if (unlikely(h_parent != h_dentry->d_parent)) ++ err = -EIO; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * initial procedure of adding a new entry. ++ * prepare writable branch and the parent dir, lock it, ++ * and lookup whiteout for the new entry. ++ */ ++static struct dentry* ++lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, ++ struct dentry *src_dentry, struct au_pin *pin, ++ struct au_wr_dir_args *wr_dir_args) ++{ ++ struct dentry *wh_dentry, *h_parent; ++ struct super_block *sb; ++ struct au_branch *br; ++ int err; ++ unsigned int udba; ++ aufs_bindex_t bcpup; ++ ++ AuDbg("%pd\n", dentry); ++ ++ err = au_wr_dir(dentry, src_dentry, wr_dir_args); ++ bcpup = err; ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err < 0)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ udba = au_opt_udba(sb); ++ err = au_pin(pin, dentry, bcpup, udba, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ h_parent = au_pinned_h_parent(pin); ++ if (udba != AuOpt_UDBA_NONE ++ && au_dbtop(dentry) == bcpup) ++ err = au_may_add(dentry, bcpup, h_parent, ++ au_ftest_wrdir(wr_dir_args->flags, ISDIR)); ++ else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ err = -ENAMETOOLONG; ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_unpin; ++ ++ br = au_sbr(sb, bcpup); ++ if (dt) { ++ struct path tmp = { ++ .dentry = h_parent, ++ .mnt = au_br_mnt(br) ++ }; ++ au_dtime_store(dt, au_pinned_parent(pin), &tmp); ++ } ++ ++ wh_dentry = NULL; ++ if (bcpup != au_dbwh(dentry)) ++ goto out; /* success */ ++ ++ /* ++ * ENAMETOOLONG here means that if we allowed create such name, then it ++ * would not be able to removed in the future. So we don't allow such ++ * name here and we don't handle ENAMETOOLONG differently here. ++ */ ++ wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); ++ ++out_unpin: ++ if (IS_ERR(wh_dentry)) ++ au_unpin(pin); ++out: ++ return wh_dentry; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++enum { Mknod, Symlink, Creat }; ++struct simple_arg { ++ int type; ++ union { ++ struct { ++ umode_t mode; ++ bool want_excl; ++ bool try_aopen; ++ struct vfsub_aopen_args *aopen; ++ } c; ++ struct { ++ const char *symname; ++ } s; ++ struct { ++ umode_t mode; ++ dev_t dev; ++ } m; ++ } u; ++}; ++ ++static int add_simple(struct inode *dir, struct dentry *dentry, ++ struct simple_arg *arg) ++{ ++ int err, rerr; ++ aufs_bindex_t btop; ++ unsigned char created; ++ const unsigned char try_aopen ++ = (arg->type == Creat && arg->u.c.try_aopen); ++ struct vfsub_aopen_args *aopen = arg->u.c.aopen; ++ struct dentry *wh_dentry, *parent; ++ struct inode *h_dir; ++ struct super_block *sb; ++ struct au_branch *br; ++ /* to reduce stack size */ ++ struct { ++ struct au_dtime dt; ++ struct au_pin pin; ++ struct path h_path; ++ struct au_wr_dir_args wr_dir_args; ++ } *a; ++ ++ AuDbg("%pd\n", dentry); ++ IMustLock(dir); ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ a->wr_dir_args.force_btgt = -1; ++ a->wr_dir_args.flags = AuWrDir_ADD_ENTRY; ++ ++ parent = dentry->d_parent; /* dir inode is locked */ ++ if (!try_aopen) { ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_free; ++ } ++ err = au_d_may_add(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ if (!try_aopen) ++ di_write_lock_parent(parent); ++ wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, ++ &a->pin, &a->wr_dir_args); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ btop = au_dbtop(dentry); ++ sb = dentry->d_sb; ++ br = au_sbr(sb, btop); ++ a->h_path.dentry = au_h_dptr(dentry, btop); ++ a->h_path.mnt = au_br_mnt(br); ++ h_dir = au_pinned_h_dir(&a->pin); ++ switch (arg->type) { ++ case Creat: ++ if (!try_aopen || !h_dir->i_op->atomic_open) { ++ err = vfsub_create(h_dir, &a->h_path, arg->u.c.mode, ++ arg->u.c.want_excl); ++ created = !err; ++ if (!err && try_aopen) ++ aopen->file->f_mode |= FMODE_CREATED; ++ } else { ++ aopen->br = br; ++ err = vfsub_atomic_open(h_dir, a->h_path.dentry, aopen); ++ AuDbg("err %d\n", err); ++ AuDbgFile(aopen->file); ++ created = err >= 0 ++ && !!(aopen->file->f_mode & FMODE_CREATED); ++ } ++ break; ++ case Symlink: ++ err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); ++ created = !err; ++ break; ++ case Mknod: ++ err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, ++ arg->u.m.dev); ++ created = !err; ++ break; ++ default: ++ BUG(); ++ } ++ if (unlikely(err < 0)) ++ goto out_unpin; ++ ++ err = epilog(dir, btop, wh_dentry, dentry); ++ if (!err) ++ goto out_unpin; /* success */ ++ ++ /* revert */ ++ if (created /* && d_is_positive(a->h_path.dentry) */) { ++ /* no delegation since it is just created */ ++ rerr = vfsub_unlink(h_dir, &a->h_path, /*delegated*/NULL, ++ /*force*/0); ++ if (rerr) { ++ AuIOErr("%pd revert failure(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } ++ au_dtime_revert(&a->dt); ++ } ++ if (try_aopen && h_dir->i_op->atomic_open ++ && (aopen->file->f_mode & FMODE_OPENED)) ++ /* aopen->file is still opened */ ++ au_lcnt_dec(&aopen->br->br_nfiles); ++ ++out_unpin: ++ au_unpin(&a->pin); ++ dput(wh_dentry); ++out_parent: ++ if (!try_aopen) ++ di_write_unlock(parent); ++out_unlock: ++ if (unlikely(err)) { ++ au_update_dbtop(dentry); ++ d_drop(dentry); ++ } ++ if (!try_aopen) ++ aufs_read_unlock(dentry, AuLock_DW); ++out_free: ++ au_kfree_rcu(a); ++out: ++ return err; ++} ++ ++int aufs_mknod(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, dev_t dev) ++{ ++ struct simple_arg arg = { ++ .type = Mknod, ++ .u.m = { ++ .mode = mode, ++ .dev = dev ++ } ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int aufs_symlink(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, const char *symname) ++{ ++ struct simple_arg arg = { ++ .type = Symlink, ++ .u.s.symname = symname ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int aufs_create(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, bool want_excl) ++{ ++ struct simple_arg arg = { ++ .type = Creat, ++ .u.c = { ++ .mode = mode, ++ .want_excl = want_excl ++ } ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int au_aopen_or_create(struct inode *dir, struct dentry *dentry, ++ struct vfsub_aopen_args *aopen_args) ++{ ++ struct simple_arg arg = { ++ .type = Creat, ++ .u.c = { ++ .mode = aopen_args->create_mode, ++ .want_excl = aopen_args->open_flag & O_EXCL, ++ .try_aopen = true, ++ .aopen = aopen_args ++ } ++ }; ++ return add_simple(dir, dentry, &arg); ++} ++ ++int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct super_block *sb; ++ struct dentry *parent, *h_parent, *h_dentry; ++ struct inode *h_dir, *inode; ++ struct vfsmount *h_mnt; ++ struct user_namespace *h_userns; ++ struct au_wr_dir_args wr_dir_args = { ++ .force_btgt = -1, ++ .flags = AuWrDir_TMPFILE ++ }; ++ ++ /* copy-up may happen */ ++ inode_lock(dir); ++ ++ sb = dir->i_sb; ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_di_init(dentry); ++ if (unlikely(err)) ++ goto out_si; ++ ++ err = -EBUSY; ++ parent = d_find_any_alias(dir); ++ AuDebugOn(!parent); ++ di_write_lock_parent(parent); ++ if (unlikely(d_inode(parent) != dir)) ++ goto out_parent; ++ ++ err = au_digen_test(parent, au_sigen(sb)); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ bindex = au_dbtop(parent); ++ au_set_dbtop(dentry, bindex); ++ au_set_dbbot(dentry, bindex); ++ err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); ++ bindex = err; ++ if (unlikely(err < 0)) ++ goto out_parent; ++ ++ err = -EOPNOTSUPP; ++ h_dir = au_h_iptr(dir, bindex); ++ if (unlikely(!h_dir->i_op->tmpfile)) ++ goto out_parent; ++ ++ h_mnt = au_sbr_mnt(sb, bindex); ++ err = vfsub_mnt_want_write(h_mnt); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ h_userns = mnt_user_ns(h_mnt); ++ h_parent = au_h_dptr(parent, bindex); ++ h_dentry = vfs_tmpfile(h_userns, h_parent, mode, /*open_flag*/0); ++ if (IS_ERR(h_dentry)) { ++ err = PTR_ERR(h_dentry); ++ goto out_mnt; ++ } ++ ++ au_set_dbtop(dentry, bindex); ++ au_set_dbbot(dentry, bindex); ++ au_set_h_dptr(dentry, bindex, dget(h_dentry)); ++ inode = au_new_inode(dentry, /*must_new*/1); ++ if (IS_ERR(inode)) { ++ err = PTR_ERR(inode); ++ au_set_h_dptr(dentry, bindex, NULL); ++ au_set_dbtop(dentry, -1); ++ au_set_dbbot(dentry, -1); ++ } else { ++ if (!inode->i_nlink) ++ set_nlink(inode, 1); ++ d_tmpfile(dentry, inode); ++ au_di(dentry)->di_tmpfile = 1; ++ ++ /* update without i_mutex */ ++ if (au_ibtop(dir) == au_dbtop(dentry)) ++ au_cpup_attr_timesizes(dir); ++ } ++ dput(h_dentry); ++ ++out_mnt: ++ vfsub_mnt_drop_write(h_mnt); ++out_parent: ++ di_write_unlock(parent); ++ dput(parent); ++ di_write_unlock(dentry); ++ if (unlikely(err)) { ++ au_di_fin(dentry); ++ dentry->d_fsdata = NULL; ++ } ++out_si: ++ si_read_unlock(sb); ++out: ++ inode_unlock(dir); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_link_args { ++ aufs_bindex_t bdst, bsrc; ++ struct au_pin pin; ++ struct path h_path; ++ struct dentry *src_parent, *parent; ++}; ++ ++static int au_cpup_before_link(struct dentry *src_dentry, ++ struct au_link_args *a) ++{ ++ int err; ++ struct dentry *h_src_dentry; ++ struct au_cp_generic cpg = { ++ .dentry = src_dentry, ++ .bdst = a->bdst, ++ .bsrc = a->bsrc, ++ .len = -1, ++ .pin = &a->pin, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN /* | AuCpup_KEEPLINO */ ++ }; ++ ++ di_read_lock_parent(a->src_parent, AuLock_IR); ++ err = au_test_and_cpup_dirs(src_dentry, a->bdst); ++ if (unlikely(err)) ++ goto out; ++ ++ h_src_dentry = au_h_dptr(src_dentry, a->bsrc); ++ err = au_pin(&a->pin, src_dentry, a->bdst, ++ au_opt_udba(src_dentry->d_sb), ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_sio_cpup_simple(&cpg); ++ au_unpin(&a->pin); ++ ++out: ++ di_read_unlock(a->src_parent, AuLock_IR); ++ return err; ++} ++ ++static int au_cpup_or_link(struct dentry *src_dentry, struct dentry *dentry, ++ struct au_link_args *a) ++{ ++ int err; ++ unsigned char plink; ++ aufs_bindex_t bbot; ++ struct dentry *h_src_dentry; ++ struct inode *h_inode, *inode, *delegated; ++ struct super_block *sb; ++ struct file *h_file; ++ ++ plink = 0; ++ h_inode = NULL; ++ sb = src_dentry->d_sb; ++ inode = d_inode(src_dentry); ++ if (au_ibtop(inode) <= a->bdst) ++ h_inode = au_h_iptr(inode, a->bdst); ++ if (!h_inode || !h_inode->i_nlink) { ++ /* copyup src_dentry as the name of dentry. */ ++ bbot = au_dbbot(dentry); ++ if (bbot < a->bsrc) ++ au_set_dbbot(dentry, a->bsrc); ++ au_set_h_dptr(dentry, a->bsrc, ++ dget(au_h_dptr(src_dentry, a->bsrc))); ++ dget(a->h_path.dentry); ++ au_set_h_dptr(dentry, a->bdst, NULL); ++ AuDbg("temporary d_inode...\n"); ++ spin_lock(&dentry->d_lock); ++ dentry->d_inode = d_inode(src_dentry); /* tmp */ ++ spin_unlock(&dentry->d_lock); ++ h_file = au_h_open_pre(dentry, a->bsrc, /*force_wr*/0); ++ if (IS_ERR(h_file)) ++ err = PTR_ERR(h_file); ++ else { ++ struct au_cp_generic cpg = { ++ .dentry = dentry, ++ .bdst = a->bdst, ++ .bsrc = -1, ++ .len = -1, ++ .pin = &a->pin, ++ .flags = AuCpup_KEEPLINO ++ }; ++ err = au_sio_cpup_simple(&cpg); ++ au_h_open_post(dentry, a->bsrc, h_file); ++ if (!err) { ++ dput(a->h_path.dentry); ++ a->h_path.dentry = au_h_dptr(dentry, a->bdst); ++ } else ++ au_set_h_dptr(dentry, a->bdst, ++ a->h_path.dentry); ++ } ++ spin_lock(&dentry->d_lock); ++ dentry->d_inode = NULL; /* restore */ ++ spin_unlock(&dentry->d_lock); ++ AuDbg("temporary d_inode...done\n"); ++ au_set_h_dptr(dentry, a->bsrc, NULL); ++ au_set_dbbot(dentry, bbot); ++ } else { ++ /* the inode of src_dentry already exists on a.bdst branch */ ++ h_src_dentry = d_find_alias(h_inode); ++ if (!h_src_dentry && au_plink_test(inode)) { ++ plink = 1; ++ h_src_dentry = au_plink_lkup(inode, a->bdst); ++ err = PTR_ERR(h_src_dentry); ++ if (IS_ERR(h_src_dentry)) ++ goto out; ++ ++ if (unlikely(d_is_negative(h_src_dentry))) { ++ dput(h_src_dentry); ++ h_src_dentry = NULL; ++ } ++ ++ } ++ if (h_src_dentry) { ++ delegated = NULL; ++ err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), ++ &a->h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ dput(h_src_dentry); ++ } else { ++ AuIOErr("no dentry found for hi%lu on b%d\n", ++ h_inode->i_ino, a->bdst); ++ err = -EIO; ++ } ++ } ++ ++ if (!err && !plink) ++ au_plink_append(inode, a->bdst, a->h_path.dentry); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int aufs_link(struct dentry *src_dentry, struct inode *dir, ++ struct dentry *dentry) ++{ ++ int err, rerr; ++ struct au_dtime dt; ++ struct au_link_args *a; ++ struct dentry *wh_dentry, *h_src_dentry; ++ struct inode *inode, *delegated; ++ struct super_block *sb; ++ struct au_wr_dir_args wr_dir_args = { ++ /* .force_btgt = -1, */ ++ .flags = AuWrDir_ADD_ENTRY ++ }; ++ ++ IMustLock(dir); ++ inode = d_inode(src_dentry); ++ IMustLock(inode); ++ ++ err = -ENOMEM; ++ a = kzalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ a->parent = dentry->d_parent; /* dir inode is locked */ ++ err = aufs_read_and_write_lock2(dentry, src_dentry, ++ AuLock_NOPLM | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_kfree; ++ err = au_d_linkable(src_dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ err = au_d_may_add(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ a->src_parent = dget_parent(src_dentry); ++ wr_dir_args.force_btgt = au_ibtop(inode); ++ ++ di_write_lock_parent(a->parent); ++ wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); ++ wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, ++ &wr_dir_args); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ err = 0; ++ sb = dentry->d_sb; ++ a->bdst = au_dbtop(dentry); ++ a->h_path.dentry = au_h_dptr(dentry, a->bdst); ++ a->h_path.mnt = au_sbr_mnt(sb, a->bdst); ++ a->bsrc = au_ibtop(inode); ++ h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); ++ if (!h_src_dentry && au_di(src_dentry)->di_tmpfile) ++ h_src_dentry = dget(au_hi_wh(inode, a->bsrc)); ++ if (!h_src_dentry) { ++ a->bsrc = au_dbtop(src_dentry); ++ h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); ++ AuDebugOn(!h_src_dentry); ++ } else if (IS_ERR(h_src_dentry)) { ++ err = PTR_ERR(h_src_dentry); ++ goto out_parent; ++ } ++ ++ /* ++ * aufs doesn't touch the credential so ++ * security_dentry_create_files_as() is unnecessary. ++ */ ++ if (au_opt_test(au_mntflags(sb), PLINK)) { ++ if (a->bdst < a->bsrc ++ /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) ++ err = au_cpup_or_link(src_dentry, dentry, a); ++ else { ++ delegated = NULL; ++ err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), ++ &a->h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ } ++ dput(h_src_dentry); ++ } else { ++ /* ++ * copyup src_dentry to the branch we process, ++ * and then link(2) to it. ++ */ ++ dput(h_src_dentry); ++ if (a->bdst < a->bsrc ++ /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { ++ au_unpin(&a->pin); ++ di_write_unlock(a->parent); ++ err = au_cpup_before_link(src_dentry, a); ++ di_write_lock_parent(a->parent); ++ if (!err) ++ err = au_pin(&a->pin, dentry, a->bdst, ++ au_opt_udba(sb), ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (unlikely(err)) ++ goto out_wh; ++ } ++ if (!err) { ++ h_src_dentry = au_h_dptr(src_dentry, a->bdst); ++ err = -ENOENT; ++ if (h_src_dentry && d_is_positive(h_src_dentry)) { ++ delegated = NULL; ++ err = vfsub_link(h_src_dentry, ++ au_pinned_h_dir(&a->pin), ++ &a->h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry" ++ " for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ } ++ } ++ } ++ if (unlikely(err)) ++ goto out_unpin; ++ ++ if (wh_dentry) { ++ a->h_path.dentry = wh_dentry; ++ err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, ++ dentry); ++ if (unlikely(err)) ++ goto out_revert; ++ } ++ ++ au_dir_ts(dir, a->bdst); ++ inode_inc_iversion(dir); ++ inc_nlink(inode); ++ inode->i_ctime = dir->i_ctime; ++ d_instantiate(dentry, au_igrab(inode)); ++ if (d_unhashed(a->h_path.dentry)) ++ /* some filesystem calls d_drop() */ ++ d_drop(dentry); ++ /* some filesystems consume an inode even hardlink */ ++ au_fhsm_wrote(sb, a->bdst, /*force*/0); ++ goto out_unpin; /* success */ ++ ++out_revert: ++ /* no delegation since it is just created */ ++ rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, ++ /*delegated*/NULL, /*force*/0); ++ if (unlikely(rerr)) { ++ AuIOErr("%pd reverting failed(%d, %d)\n", dentry, err, rerr); ++ err = -EIO; ++ } ++ au_dtime_revert(&dt); ++out_unpin: ++ au_unpin(&a->pin); ++out_wh: ++ dput(wh_dentry); ++out_parent: ++ di_write_unlock(a->parent); ++ dput(a->src_parent); ++out_unlock: ++ if (unlikely(err)) { ++ au_update_dbtop(dentry); ++ d_drop(dentry); ++ } ++ aufs_read_and_write_unlock2(dentry, src_dentry); ++out_kfree: ++ au_kfree_rcu(a); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int aufs_mkdir(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode) ++{ ++ int err, rerr; ++ aufs_bindex_t bindex; ++ unsigned char diropq; ++ struct path h_path; ++ struct dentry *wh_dentry, *parent, *opq_dentry; ++ struct inode *h_inode; ++ struct super_block *sb; ++ struct { ++ struct au_pin pin; ++ struct au_dtime dt; ++ } *a; /* reduce the stack usage */ ++ struct au_wr_dir_args wr_dir_args = { ++ .force_btgt = -1, ++ .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR ++ }; ++ ++ IMustLock(dir); ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_free; ++ err = au_d_may_add(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ parent = dentry->d_parent; /* dir inode is locked */ ++ di_write_lock_parent(parent); ++ wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, ++ &a->pin, &wr_dir_args); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ sb = dentry->d_sb; ++ bindex = au_dbtop(dentry); ++ h_path.dentry = au_h_dptr(dentry, bindex); ++ h_path.mnt = au_sbr_mnt(sb, bindex); ++ err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); ++ if (unlikely(err)) ++ goto out_unpin; ++ ++ /* make the dir opaque */ ++ diropq = 0; ++ h_inode = d_inode(h_path.dentry); ++ if (wh_dentry ++ || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { ++ inode_lock_nested(h_inode, AuLsc_I_CHILD); ++ opq_dentry = au_diropq_create(dentry, bindex); ++ inode_unlock(h_inode); ++ err = PTR_ERR(opq_dentry); ++ if (IS_ERR(opq_dentry)) ++ goto out_dir; ++ dput(opq_dentry); ++ diropq = 1; ++ } ++ ++ err = epilog(dir, bindex, wh_dentry, dentry); ++ if (!err) { ++ inc_nlink(dir); ++ goto out_unpin; /* success */ ++ } ++ ++ /* revert */ ++ if (diropq) { ++ AuLabel(revert opq); ++ inode_lock_nested(h_inode, AuLsc_I_CHILD); ++ rerr = au_diropq_remove(dentry, bindex); ++ inode_unlock(h_inode); ++ if (rerr) { ++ AuIOErr("%pd reverting diropq failed(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } ++ } ++ ++out_dir: ++ AuLabel(revert dir); ++ rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); ++ if (rerr) { ++ AuIOErr("%pd reverting dir failed(%d, %d)\n", ++ dentry, err, rerr); ++ err = -EIO; ++ } ++ au_dtime_revert(&a->dt); ++out_unpin: ++ au_unpin(&a->pin); ++ dput(wh_dentry); ++out_parent: ++ di_write_unlock(parent); ++out_unlock: ++ if (unlikely(err)) { ++ au_update_dbtop(dentry); ++ d_drop(dentry); ++ } ++ aufs_read_unlock(dentry, AuLock_DW); ++out_free: ++ au_kfree_rcu(a); ++out: ++ return err; ++} +diff -Naur null/fs/aufs/i_op.c linux-5.15.36/fs/aufs/i_op.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/i_op.c 2022-05-10 16:51:39.872744219 +0300 +@@ -0,0 +1,1512 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode operations (except add/del/rename) ++ */ ++ ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++static int h_permission(struct inode *h_inode, int mask, ++ struct path *h_path, int brperm) ++{ ++ int err; ++ const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); ++ struct user_namespace *h_userns; ++ ++ err = -EPERM; ++ if (write_mask && IS_IMMUTABLE(h_inode)) ++ goto out; ++ ++ err = -EACCES; ++ if (((mask & MAY_EXEC) ++ && S_ISREG(h_inode->i_mode) ++ && (path_noexec(h_path) ++ || !(h_inode->i_mode & 0111)))) ++ goto out; ++ ++ /* ++ * - skip the lower fs test in the case of write to ro branch. ++ * - nfs dir permission write check is optimized, but a policy for ++ * link/rename requires a real check. ++ * - nfs always sets SB_POSIXACL regardless its mount option 'noacl.' ++ * in this case, generic_permission() returns -EOPNOTSUPP. ++ */ ++ h_userns = mnt_user_ns(h_path->mnt); ++ if ((write_mask && !au_br_writable(brperm)) ++ || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) ++ && write_mask && !(mask & MAY_READ)) ++ || !h_inode->i_op->permission) { ++ /* AuLabel(generic_permission); */ ++ /* AuDbg("get_acl %ps\n", h_inode->i_op->get_acl); */ ++ err = generic_permission(h_userns, h_inode, mask); ++ if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode)) ++ err = h_inode->i_op->permission(h_userns, h_inode, ++ mask); ++ AuTraceErr(err); ++ } else { ++ /* AuLabel(h_inode->permission); */ ++ err = h_inode->i_op->permission(h_userns, h_inode, mask); ++ AuTraceErr(err); ++ } ++ ++ if (!err) ++ err = devcgroup_inode_permission(h_inode, mask); ++ if (!err) ++ err = security_inode_permission(h_inode, mask); ++ ++out: ++ return err; ++} ++ ++static int aufs_permission(struct user_namespace *userns, struct inode *inode, ++ int mask) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ const unsigned char isdir = !!S_ISDIR(inode->i_mode), ++ write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); ++ struct inode *h_inode; ++ struct super_block *sb; ++ struct au_branch *br; ++ ++ /* todo: support rcu-walk? */ ++ if (mask & MAY_NOT_BLOCK) ++ return -ECHILD; ++ ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ ii_read_lock_child(inode); ++#if 0 /* reserved for future use */ ++ /* ++ * This test may be rather 'too much' since the test is essentially done ++ * in the aufs_lookup(). Theoretically it is possible that the inode ++ * generation doesn't match to the superblock's here. But it isn't a ++ * big deal I suppose. ++ */ ++ err = au_iigen_test(inode, au_sigen(sb)); ++ if (unlikely(err)) ++ goto out; ++#endif ++ ++ if (!isdir ++ || write_mask ++ || au_opt_test(au_mntflags(sb), DIRPERM1)) { ++ err = au_busy_or_stale(); ++ h_inode = au_h_iptr(inode, au_ibtop(inode)); ++ if (unlikely(!h_inode ++ || (h_inode->i_mode & S_IFMT) ++ != (inode->i_mode & S_IFMT))) ++ goto out; ++ ++ err = 0; ++ bindex = au_ibtop(inode); ++ br = au_sbr(sb, bindex); ++ err = h_permission(h_inode, mask, &br->br_path, br->br_perm); ++ if (write_mask ++ && !err ++ && !special_file(h_inode->i_mode)) { ++ /* test whether the upper writable branch exists */ ++ err = -EROFS; ++ for (; bindex >= 0; bindex--) ++ if (!au_br_rdonly(au_sbr(sb, bindex))) { ++ err = 0; ++ break; ++ } ++ } ++ goto out; ++ } ++ ++ /* non-write to dir */ ++ err = 0; ++ bbot = au_ibbot(inode); ++ for (bindex = au_ibtop(inode); !err && bindex <= bbot; bindex++) { ++ h_inode = au_h_iptr(inode, bindex); ++ if (h_inode) { ++ err = au_busy_or_stale(); ++ if (unlikely(!S_ISDIR(h_inode->i_mode))) ++ break; ++ ++ br = au_sbr(sb, bindex); ++ err = h_permission(h_inode, mask, &br->br_path, ++ br->br_perm); ++ } ++ } ++ ++out: ++ ii_read_unlock(inode); ++ si_read_unlock(sb); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct dentry *aufs_lookup(struct inode *dir, struct dentry *dentry, ++ unsigned int flags) ++{ ++ struct dentry *ret, *parent; ++ struct inode *inode; ++ struct super_block *sb; ++ int err, npositive; ++ ++ IMustLock(dir); ++ ++ /* todo: support rcu-walk? */ ++ ret = ERR_PTR(-ECHILD); ++ if (flags & LOOKUP_RCU) ++ goto out; ++ ++ ret = ERR_PTR(-ENAMETOOLONG); ++ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ goto out; ++ ++ sb = dir->i_sb; ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ ret = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_di_init(dentry); ++ ret = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_si; ++ ++ inode = NULL; ++ npositive = 0; /* suppress a warning */ ++ parent = dentry->d_parent; /* dir inode is locked */ ++ di_read_lock_parent(parent, AuLock_IR); ++ err = au_alive_dir(parent); ++ if (!err) ++ err = au_digen_test(parent, au_sigen(sb)); ++ if (!err) { ++ /* regardless LOOKUP_CREATE, always ALLOW_NEG */ ++ npositive = au_lkup_dentry(dentry, au_dbtop(parent), ++ AuLkup_ALLOW_NEG); ++ err = npositive; ++ } ++ di_read_unlock(parent, AuLock_IR); ++ ret = ERR_PTR(err); ++ if (unlikely(err < 0)) ++ goto out_unlock; ++ ++ if (npositive) { ++ inode = au_new_inode(dentry, /*must_new*/0); ++ if (IS_ERR(inode)) { ++ ret = (void *)inode; ++ inode = NULL; ++ goto out_unlock; ++ } ++ } ++ ++ if (inode) ++ atomic_inc(&inode->i_count); ++ ret = d_splice_alias(inode, dentry); ++#if 0 /* reserved for future use */ ++ if (unlikely(d_need_lookup(dentry))) { ++ spin_lock(&dentry->d_lock); ++ dentry->d_flags &= ~DCACHE_NEED_LOOKUP; ++ spin_unlock(&dentry->d_lock); ++ } else ++#endif ++ if (inode) { ++ if (!IS_ERR(ret)) { ++ iput(inode); ++ if (ret && ret != dentry) ++ ii_write_unlock(inode); ++ } else { ++ ii_write_unlock(inode); ++ iput(inode); ++ inode = NULL; ++ } ++ } ++ ++out_unlock: ++ di_write_unlock(dentry); ++out_si: ++ si_read_unlock(sb); ++out: ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * very dirty and complicated aufs ->atomic_open(). ++ * aufs_atomic_open() ++ * + au_aopen_or_create() ++ * + add_simple() ++ * + vfsub_atomic_open() ++ * + branch fs ->atomic_open() ++ * may call the actual 'open' for h_file ++ * + inc br_nfiles only if opened ++ * + au_aopen_no_open() or au_aopen_do_open() ++ * ++ * au_aopen_do_open() ++ * + finish_open() ++ * + au_do_aopen() ++ * + au_do_open() the body of all 'open' ++ * + au_do_open_nondir() ++ * set the passed h_file ++ * ++ * au_aopen_no_open() ++ * + finish_no_open() ++ */ ++ ++struct aopen_node { ++ struct hlist_bl_node hblist; ++ struct file *file, *h_file; ++}; ++ ++static int au_do_aopen(struct inode *inode, struct file *file) ++{ ++ struct hlist_bl_head *aopen; ++ struct hlist_bl_node *pos; ++ struct aopen_node *node; ++ struct au_do_open_args args = { ++ .aopen = 1, ++ .open = au_do_open_nondir ++ }; ++ ++ aopen = &au_sbi(inode->i_sb)->si_aopen; ++ hlist_bl_lock(aopen); ++ hlist_bl_for_each_entry(node, pos, aopen, hblist) ++ if (node->file == file) { ++ args.h_file = node->h_file; ++ break; ++ } ++ hlist_bl_unlock(aopen); ++ /* AuDebugOn(!args.h_file); */ ++ ++ return au_do_open(file, &args); ++} ++ ++static int au_aopen_do_open(struct file *file, struct dentry *dentry, ++ struct aopen_node *aopen_node) ++{ ++ int err; ++ struct hlist_bl_head *aopen; ++ ++ AuLabel(here); ++ aopen = &au_sbi(dentry->d_sb)->si_aopen; ++ au_hbl_add(&aopen_node->hblist, aopen); ++ err = finish_open(file, dentry, au_do_aopen); ++ au_hbl_del(&aopen_node->hblist, aopen); ++ /* AuDbgFile(file); */ ++ AuDbg("%pd%s%s\n", dentry, ++ (file->f_mode & FMODE_CREATED) ? " created" : "", ++ (file->f_mode & FMODE_OPENED) ? " opened" : ""); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_aopen_no_open(struct file *file, struct dentry *dentry) ++{ ++ int err; ++ ++ AuLabel(here); ++ dget(dentry); ++ err = finish_no_open(file, dentry); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int aufs_atomic_open(struct inode *dir, struct dentry *dentry, ++ struct file *file, unsigned int open_flag, ++ umode_t create_mode) ++{ ++ int err, did_open; ++ unsigned int lkup_flags; ++ aufs_bindex_t bindex; ++ struct super_block *sb; ++ struct dentry *parent, *d; ++ struct vfsub_aopen_args args = { ++ .open_flag = open_flag, ++ .create_mode = create_mode ++ }; ++ struct aopen_node aopen_node = { ++ .file = file ++ }; ++ ++ IMustLock(dir); ++ AuDbg("open_flag 0%o\n", open_flag); ++ AuDbgDentry(dentry); ++ ++ err = 0; ++ if (!au_di(dentry)) { ++ lkup_flags = LOOKUP_OPEN; ++ if (open_flag & O_CREAT) ++ lkup_flags |= LOOKUP_CREATE; ++ d = aufs_lookup(dir, dentry, lkup_flags); ++ if (IS_ERR(d)) { ++ err = PTR_ERR(d); ++ AuTraceErr(err); ++ goto out; ++ } else if (d) { ++ /* ++ * obsoleted dentry found. ++ * another error will be returned later. ++ */ ++ d_drop(d); ++ AuDbgDentry(d); ++ dput(d); ++ } ++ AuDbgDentry(dentry); ++ } ++ ++ if (d_is_positive(dentry) ++ || d_unhashed(dentry) ++ || d_unlinked(dentry) ++ || !(open_flag & O_CREAT)) { ++ err = au_aopen_no_open(file, dentry); ++ goto out; /* success */ ++ } ++ ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); ++ if (unlikely(err)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ parent = dentry->d_parent; /* dir is locked */ ++ di_write_lock_parent(parent); ++ err = au_lkup_dentry(dentry, /*btop*/0, AuLkup_ALLOW_NEG); ++ if (unlikely(err < 0)) ++ goto out_parent; ++ ++ AuDbgDentry(dentry); ++ if (d_is_positive(dentry)) { ++ err = au_aopen_no_open(file, dentry); ++ goto out_parent; /* success */ ++ } ++ ++ args.file = alloc_empty_file(file->f_flags, current_cred()); ++ err = PTR_ERR(args.file); ++ if (IS_ERR(args.file)) ++ goto out_parent; ++ ++ bindex = au_dbtop(dentry); ++ err = au_aopen_or_create(dir, dentry, &args); ++ AuTraceErr(err); ++ AuDbgFile(args.file); ++ file->f_mode = args.file->f_mode & ~FMODE_OPENED; ++ did_open = !!(args.file->f_mode & FMODE_OPENED); ++ if (!did_open) { ++ fput(args.file); ++ args.file = NULL; ++ } ++ di_write_unlock(parent); ++ di_write_unlock(dentry); ++ if (unlikely(err < 0)) { ++ if (args.file) ++ fput(args.file); ++ goto out_sb; ++ } ++ ++ if (!did_open) ++ err = au_aopen_no_open(file, dentry); ++ else { ++ aopen_node.h_file = args.file; ++ err = au_aopen_do_open(file, dentry, &aopen_node); ++ } ++ if (unlikely(err < 0)) { ++ if (args.file) ++ fput(args.file); ++ if (did_open) ++ au_lcnt_dec(&args.br->br_nfiles); ++ } ++ goto out_sb; /* success */ ++ ++out_parent: ++ di_write_unlock(parent); ++ di_write_unlock(dentry); ++out_sb: ++ si_read_unlock(sb); ++out: ++ AuTraceErr(err); ++ AuDbgFile(file); ++ return err; ++} ++ ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_wr_dir_cpup(struct dentry *dentry, struct dentry *parent, ++ const unsigned char add_entry, aufs_bindex_t bcpup, ++ aufs_bindex_t btop) ++{ ++ int err; ++ struct dentry *h_parent; ++ struct inode *h_dir; ++ ++ if (add_entry) ++ IMustLock(d_inode(parent)); ++ else ++ di_write_lock_parent(parent); ++ ++ err = 0; ++ if (!au_h_dptr(parent, bcpup)) { ++ if (btop > bcpup) ++ err = au_cpup_dirs(dentry, bcpup); ++ else if (btop < bcpup) ++ err = au_cpdown_dirs(dentry, bcpup); ++ else ++ BUG(); ++ } ++ if (!err && add_entry && !au_ftest_wrdir(add_entry, TMPFILE)) { ++ h_parent = au_h_dptr(parent, bcpup); ++ h_dir = d_inode(h_parent); ++ inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); ++ err = au_lkup_neg(dentry, bcpup, /*wh*/0); ++ /* todo: no unlock here */ ++ inode_unlock_shared(h_dir); ++ ++ AuDbg("bcpup %d\n", bcpup); ++ if (!err) { ++ if (d_really_is_negative(dentry)) ++ au_set_h_dptr(dentry, btop, NULL); ++ au_update_dbrange(dentry, /*do_put_zero*/0); ++ } ++ } ++ ++ if (!add_entry) ++ di_write_unlock(parent); ++ if (!err) ++ err = bcpup; /* success */ ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * decide the branch and the parent dir where we will create a new entry. ++ * returns new bindex or an error. ++ * copyup the parent dir if needed. ++ */ ++int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, ++ struct au_wr_dir_args *args) ++{ ++ int err; ++ unsigned int flags; ++ aufs_bindex_t bcpup, btop, src_btop; ++ const unsigned char add_entry ++ = au_ftest_wrdir(args->flags, ADD_ENTRY) ++ | au_ftest_wrdir(args->flags, TMPFILE); ++ struct super_block *sb; ++ struct dentry *parent; ++ struct au_sbinfo *sbinfo; ++ ++ sb = dentry->d_sb; ++ sbinfo = au_sbi(sb); ++ parent = dget_parent(dentry); ++ btop = au_dbtop(dentry); ++ bcpup = btop; ++ if (args->force_btgt < 0) { ++ if (src_dentry) { ++ src_btop = au_dbtop(src_dentry); ++ if (src_btop < btop) ++ bcpup = src_btop; ++ } else if (add_entry) { ++ flags = 0; ++ if (au_ftest_wrdir(args->flags, ISDIR)) ++ au_fset_wbr(flags, DIR); ++ err = AuWbrCreate(sbinfo, dentry, flags); ++ bcpup = err; ++ } ++ ++ if (bcpup < 0 || au_test_ro(sb, bcpup, d_inode(dentry))) { ++ if (add_entry) ++ err = AuWbrCopyup(sbinfo, dentry); ++ else { ++ if (!IS_ROOT(dentry)) { ++ di_read_lock_parent(parent, !AuLock_IR); ++ err = AuWbrCopyup(sbinfo, dentry); ++ di_read_unlock(parent, !AuLock_IR); ++ } else ++ err = AuWbrCopyup(sbinfo, dentry); ++ } ++ bcpup = err; ++ if (unlikely(err < 0)) ++ goto out; ++ } ++ } else { ++ bcpup = args->force_btgt; ++ AuDebugOn(au_test_ro(sb, bcpup, d_inode(dentry))); ++ } ++ ++ AuDbg("btop %d, bcpup %d\n", btop, bcpup); ++ err = bcpup; ++ if (bcpup == btop) ++ goto out; /* success */ ++ ++ /* copyup the new parent into the branch we process */ ++ err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, btop); ++ if (err >= 0) { ++ if (d_really_is_negative(dentry)) { ++ au_set_h_dptr(dentry, btop, NULL); ++ au_set_dbtop(dentry, bcpup); ++ au_set_dbbot(dentry, bcpup); ++ } ++ AuDebugOn(add_entry ++ && !au_ftest_wrdir(args->flags, TMPFILE) ++ && !au_h_dptr(dentry, bcpup)); ++ } ++ ++out: ++ dput(parent); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_pin_hdir_unlock(struct au_pin *p) ++{ ++ if (p->hdir) ++ au_hn_inode_unlock(p->hdir); ++} ++ ++int au_pin_hdir_lock(struct au_pin *p) ++{ ++ int err; ++ ++ err = 0; ++ if (!p->hdir) ++ goto out; ++ ++ /* even if an error happens later, keep this lock */ ++ au_hn_inode_lock_nested(p->hdir, p->lsc_hi); ++ ++ err = -EBUSY; ++ if (unlikely(p->hdir->hi_inode != d_inode(p->h_parent))) ++ goto out; ++ ++ err = 0; ++ if (p->h_dentry) ++ err = au_h_verify(p->h_dentry, p->udba, p->hdir->hi_inode, ++ p->h_parent, p->br); ++ ++out: ++ return err; ++} ++ ++int au_pin_hdir_relock(struct au_pin *p) ++{ ++ int err, i; ++ struct inode *h_i; ++ struct dentry *h_d[] = { ++ p->h_dentry, ++ p->h_parent ++ }; ++ ++ err = au_pin_hdir_lock(p); ++ if (unlikely(err)) ++ goto out; ++ ++ for (i = 0; !err && i < sizeof(h_d)/sizeof(*h_d); i++) { ++ if (!h_d[i]) ++ continue; ++ if (d_is_positive(h_d[i])) { ++ h_i = d_inode(h_d[i]); ++ err = !h_i->i_nlink; ++ } ++ } ++ ++out: ++ return err; ++} ++ ++static void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task) ++{ ++ atomic_long_set(&p->hdir->hi_inode->i_rwsem.owner, (long)task); ++} ++ ++void au_pin_hdir_acquire_nest(struct au_pin *p) ++{ ++ if (p->hdir) { ++ rwsem_acquire_nest(&p->hdir->hi_inode->i_rwsem.dep_map, ++ p->lsc_hi, 0, NULL, _RET_IP_); ++ au_pin_hdir_set_owner(p, current); ++ } ++} ++ ++void au_pin_hdir_release(struct au_pin *p) ++{ ++ if (p->hdir) { ++ au_pin_hdir_set_owner(p, p->task); ++ rwsem_release(&p->hdir->hi_inode->i_rwsem.dep_map, _RET_IP_); ++ } ++} ++ ++struct dentry *au_pinned_h_parent(struct au_pin *pin) ++{ ++ if (pin && pin->parent) ++ return au_h_dptr(pin->parent, pin->bindex); ++ return NULL; ++} ++ ++void au_unpin(struct au_pin *p) ++{ ++ if (p->hdir) ++ au_pin_hdir_unlock(p); ++ if (p->h_mnt && au_ftest_pin(p->flags, MNT_WRITE)) ++ vfsub_mnt_drop_write(p->h_mnt); ++ if (!p->hdir) ++ return; ++ ++ if (!au_ftest_pin(p->flags, DI_LOCKED)) ++ di_read_unlock(p->parent, AuLock_IR); ++ iput(p->hdir->hi_inode); ++ dput(p->parent); ++ p->parent = NULL; ++ p->hdir = NULL; ++ p->h_mnt = NULL; ++ /* do not clear p->task */ ++} ++ ++int au_do_pin(struct au_pin *p) ++{ ++ int err; ++ struct super_block *sb; ++ struct inode *h_dir; ++ ++ err = 0; ++ sb = p->dentry->d_sb; ++ p->br = au_sbr(sb, p->bindex); ++ if (IS_ROOT(p->dentry)) { ++ if (au_ftest_pin(p->flags, MNT_WRITE)) { ++ p->h_mnt = au_br_mnt(p->br); ++ err = vfsub_mnt_want_write(p->h_mnt); ++ if (unlikely(err)) { ++ au_fclr_pin(p->flags, MNT_WRITE); ++ goto out_err; ++ } ++ } ++ goto out; ++ } ++ ++ p->h_dentry = NULL; ++ if (p->bindex <= au_dbbot(p->dentry)) ++ p->h_dentry = au_h_dptr(p->dentry, p->bindex); ++ ++ p->parent = dget_parent(p->dentry); ++ if (!au_ftest_pin(p->flags, DI_LOCKED)) ++ di_read_lock(p->parent, AuLock_IR, p->lsc_di); ++ ++ h_dir = NULL; ++ p->h_parent = au_h_dptr(p->parent, p->bindex); ++ p->hdir = au_hi(d_inode(p->parent), p->bindex); ++ if (p->hdir) ++ h_dir = p->hdir->hi_inode; ++ ++ /* ++ * udba case, or ++ * if DI_LOCKED is not set, then p->parent may be different ++ * and h_parent can be NULL. ++ */ ++ if (unlikely(!p->hdir || !h_dir || !p->h_parent)) { ++ err = -EBUSY; ++ if (!au_ftest_pin(p->flags, DI_LOCKED)) ++ di_read_unlock(p->parent, AuLock_IR); ++ dput(p->parent); ++ p->parent = NULL; ++ goto out_err; ++ } ++ ++ if (au_ftest_pin(p->flags, MNT_WRITE)) { ++ p->h_mnt = au_br_mnt(p->br); ++ err = vfsub_mnt_want_write(p->h_mnt); ++ if (unlikely(err)) { ++ au_fclr_pin(p->flags, MNT_WRITE); ++ if (!au_ftest_pin(p->flags, DI_LOCKED)) ++ di_read_unlock(p->parent, AuLock_IR); ++ dput(p->parent); ++ p->parent = NULL; ++ goto out_err; ++ } ++ } ++ ++ au_igrab(h_dir); ++ err = au_pin_hdir_lock(p); ++ if (!err) ++ goto out; /* success */ ++ ++ au_unpin(p); ++ ++out_err: ++ pr_err("err %d\n", err); ++ err = au_busy_or_stale(); ++out: ++ return err; ++} ++ ++void au_pin_init(struct au_pin *p, struct dentry *dentry, ++ aufs_bindex_t bindex, int lsc_di, int lsc_hi, ++ unsigned int udba, unsigned char flags) ++{ ++ p->dentry = dentry; ++ p->udba = udba; ++ p->lsc_di = lsc_di; ++ p->lsc_hi = lsc_hi; ++ p->flags = flags; ++ p->bindex = bindex; ++ ++ p->parent = NULL; ++ p->hdir = NULL; ++ p->h_mnt = NULL; ++ ++ p->h_dentry = NULL; ++ p->h_parent = NULL; ++ p->br = NULL; ++ p->task = current; ++} ++ ++int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, ++ unsigned int udba, unsigned char flags) ++{ ++ au_pin_init(pin, dentry, bindex, AuLsc_DI_PARENT, AuLsc_I_PARENT2, ++ udba, flags); ++ return au_do_pin(pin); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * ->setattr() and ->getattr() are called in various cases. ++ * chmod, stat: dentry is revalidated. ++ * fchmod, fstat: file and dentry are not revalidated, additionally they may be ++ * unhashed. ++ * for ->setattr(), ia->ia_file is passed from ftruncate only. ++ */ ++/* todo: consolidate with do_refresh() and simple_reval_dpath() */ ++int au_reval_for_attr(struct dentry *dentry, unsigned int sigen) ++{ ++ int err; ++ struct dentry *parent; ++ ++ err = 0; ++ if (au_digen_test(dentry, sigen)) { ++ parent = dget_parent(dentry); ++ di_read_lock_parent(parent, AuLock_IR); ++ err = au_refresh_dentry(dentry, parent); ++ di_read_unlock(parent, AuLock_IR); ++ dput(parent); ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, ++ struct au_icpup_args *a) ++{ ++ int err; ++ loff_t sz; ++ aufs_bindex_t btop, ibtop; ++ struct dentry *hi_wh, *parent; ++ struct inode *inode; ++ struct au_wr_dir_args wr_dir_args = { ++ .force_btgt = -1, ++ .flags = 0 ++ }; ++ ++ if (d_is_dir(dentry)) ++ au_fset_wrdir(wr_dir_args.flags, ISDIR); ++ /* plink or hi_wh() case */ ++ btop = au_dbtop(dentry); ++ inode = d_inode(dentry); ++ ibtop = au_ibtop(inode); ++ if (btop != ibtop && !au_test_ro(inode->i_sb, ibtop, inode)) ++ wr_dir_args.force_btgt = ibtop; ++ err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); ++ if (unlikely(err < 0)) ++ goto out; ++ a->btgt = err; ++ if (err != btop) ++ au_fset_icpup(a->flags, DID_CPUP); ++ ++ err = 0; ++ a->pin_flags = AuPin_MNT_WRITE; ++ parent = NULL; ++ if (!IS_ROOT(dentry)) { ++ au_fset_pin(a->pin_flags, DI_LOCKED); ++ parent = dget_parent(dentry); ++ di_write_lock_parent(parent); ++ } ++ ++ err = au_pin(&a->pin, dentry, a->btgt, a->udba, a->pin_flags); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ sz = -1; ++ a->h_path.dentry = au_h_dptr(dentry, btop); ++ a->h_inode = d_inode(a->h_path.dentry); ++ if (ia && (ia->ia_valid & ATTR_SIZE)) { ++ inode_lock_shared_nested(a->h_inode, AuLsc_I_CHILD); ++ if (ia->ia_size < i_size_read(a->h_inode)) ++ sz = ia->ia_size; ++ inode_unlock_shared(a->h_inode); ++ } ++ ++ hi_wh = NULL; ++ if (au_ftest_icpup(a->flags, DID_CPUP) && d_unlinked(dentry)) { ++ hi_wh = au_hi_wh(inode, a->btgt); ++ if (!hi_wh) { ++ struct au_cp_generic cpg = { ++ .dentry = dentry, ++ .bdst = a->btgt, ++ .bsrc = -1, ++ .len = sz, ++ .pin = &a->pin ++ }; ++ err = au_sio_cpup_wh(&cpg, /*file*/NULL); ++ if (unlikely(err)) ++ goto out_unlock; ++ hi_wh = au_hi_wh(inode, a->btgt); ++ /* todo: revalidate hi_wh? */ ++ } ++ } ++ ++ if (parent) { ++ au_pin_set_parent_lflag(&a->pin, /*lflag*/0); ++ di_downgrade_lock(parent, AuLock_IR); ++ dput(parent); ++ parent = NULL; ++ } ++ if (!au_ftest_icpup(a->flags, DID_CPUP)) ++ goto out; /* success */ ++ ++ if (!d_unhashed(dentry)) { ++ struct au_cp_generic cpg = { ++ .dentry = dentry, ++ .bdst = a->btgt, ++ .bsrc = btop, ++ .len = sz, ++ .pin = &a->pin, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN ++ }; ++ err = au_sio_cpup_simple(&cpg); ++ if (!err) ++ a->h_path.dentry = au_h_dptr(dentry, a->btgt); ++ } else if (!hi_wh) ++ a->h_path.dentry = au_h_dptr(dentry, a->btgt); ++ else ++ a->h_path.dentry = hi_wh; /* do not dget here */ ++ ++out_unlock: ++ a->h_inode = d_inode(a->h_path.dentry); ++ if (!err) ++ goto out; /* success */ ++ au_unpin(&a->pin); ++out_parent: ++ if (parent) { ++ di_write_unlock(parent); ++ dput(parent); ++ } ++out: ++ if (!err) ++ inode_lock_nested(a->h_inode, AuLsc_I_CHILD); ++ return err; ++} ++ ++static int aufs_setattr(struct user_namespace *userns, struct dentry *dentry, ++ struct iattr *ia) ++{ ++ int err; ++ struct inode *inode, *delegated; ++ struct super_block *sb; ++ struct file *file; ++ struct au_icpup_args *a; ++ struct user_namespace *h_userns; ++ ++ inode = d_inode(dentry); ++ IMustLock(inode); ++ ++ err = setattr_prepare(userns, dentry, ia); ++ if (unlikely(err)) ++ goto out; ++ ++ err = -ENOMEM; ++ a = kzalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) ++ ia->ia_valid &= ~ATTR_MODE; ++ ++ file = NULL; ++ sb = dentry->d_sb; ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out_kfree; ++ ++ if (ia->ia_valid & ATTR_FILE) { ++ /* currently ftruncate(2) only */ ++ AuDebugOn(!d_is_reg(dentry)); ++ file = ia->ia_file; ++ err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1, ++ /*fi_lsc*/0); ++ if (unlikely(err)) ++ goto out_si; ++ ia->ia_file = au_hf_top(file); ++ a->udba = AuOpt_UDBA_NONE; ++ } else { ++ /* fchmod() doesn't pass ia_file */ ++ a->udba = au_opt_udba(sb); ++ di_write_lock_child(dentry); ++ /* no d_unlinked(), to set UDBA_NONE for root */ ++ if (d_unhashed(dentry)) ++ a->udba = AuOpt_UDBA_NONE; ++ if (a->udba != AuOpt_UDBA_NONE) { ++ AuDebugOn(IS_ROOT(dentry)); ++ err = au_reval_for_attr(dentry, au_sigen(sb)); ++ if (unlikely(err)) ++ goto out_dentry; ++ } ++ } ++ ++ err = au_pin_and_icpup(dentry, ia, a); ++ if (unlikely(err < 0)) ++ goto out_dentry; ++ if (au_ftest_icpup(a->flags, DID_CPUP)) { ++ ia->ia_file = NULL; ++ ia->ia_valid &= ~ATTR_FILE; ++ } ++ ++ a->h_path.mnt = au_sbr_mnt(sb, a->btgt); ++ if ((ia->ia_valid & (ATTR_MODE | ATTR_CTIME)) ++ == (ATTR_MODE | ATTR_CTIME)) { ++ err = security_path_chmod(&a->h_path, ia->ia_mode); ++ if (unlikely(err)) ++ goto out_unlock; ++ } else if ((ia->ia_valid & (ATTR_UID | ATTR_GID)) ++ && (ia->ia_valid & ATTR_CTIME)) { ++ err = security_path_chown(&a->h_path, ia->ia_uid, ia->ia_gid); ++ if (unlikely(err)) ++ goto out_unlock; ++ } ++ ++ if (ia->ia_valid & ATTR_SIZE) { ++ struct file *f; ++ ++ if (ia->ia_size < i_size_read(inode)) ++ /* unmap only */ ++ truncate_setsize(inode, ia->ia_size); ++ ++ f = NULL; ++ if (ia->ia_valid & ATTR_FILE) ++ f = ia->ia_file; ++ inode_unlock(a->h_inode); ++ err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); ++ inode_lock_nested(a->h_inode, AuLsc_I_CHILD); ++ } else { ++ delegated = NULL; ++ while (1) { ++ err = vfsub_notify_change(&a->h_path, ia, &delegated); ++ if (delegated) { ++ err = break_deleg_wait(&delegated); ++ if (!err) ++ continue; ++ } ++ break; ++ } ++ } ++ /* ++ * regardless aufs 'acl' option setting. ++ * why don't all acl-aware fs call this func from their ->setattr()? ++ */ ++ if (!err && (ia->ia_valid & ATTR_MODE)) { ++ h_userns = mnt_user_ns(a->h_path.mnt); ++ err = vfsub_acl_chmod(h_userns, a->h_inode, ia->ia_mode); ++ } ++ if (!err) ++ au_cpup_attr_changeable(inode); ++ ++out_unlock: ++ inode_unlock(a->h_inode); ++ au_unpin(&a->pin); ++ if (unlikely(err)) ++ au_update_dbtop(dentry); ++out_dentry: ++ di_write_unlock(dentry); ++ if (file) { ++ fi_write_unlock(file); ++ ia->ia_file = file; ++ ia->ia_valid |= ATTR_FILE; ++ } ++out_si: ++ si_read_unlock(sb); ++out_kfree: ++ au_kfree_rcu(a); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) ++static int au_h_path_to_set_attr(struct dentry *dentry, ++ struct au_icpup_args *a, struct path *h_path) ++{ ++ int err; ++ struct super_block *sb; ++ ++ sb = dentry->d_sb; ++ a->udba = au_opt_udba(sb); ++ /* no d_unlinked(), to set UDBA_NONE for root */ ++ if (d_unhashed(dentry)) ++ a->udba = AuOpt_UDBA_NONE; ++ if (a->udba != AuOpt_UDBA_NONE) { ++ AuDebugOn(IS_ROOT(dentry)); ++ err = au_reval_for_attr(dentry, au_sigen(sb)); ++ if (unlikely(err)) ++ goto out; ++ } ++ err = au_pin_and_icpup(dentry, /*ia*/NULL, a); ++ if (unlikely(err < 0)) ++ goto out; ++ ++ h_path->dentry = a->h_path.dentry; ++ h_path->mnt = au_sbr_mnt(sb, a->btgt); ++ ++out: ++ return err; ++} ++ ++ssize_t au_sxattr(struct dentry *dentry, struct inode *inode, ++ struct au_sxattr *arg) ++{ ++ int err; ++ struct path h_path; ++ struct super_block *sb; ++ struct au_icpup_args *a; ++ struct inode *h_inode; ++ struct user_namespace *h_userns; ++ ++ IMustLock(inode); ++ ++ err = -ENOMEM; ++ a = kzalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out_kfree; ++ ++ h_path.dentry = NULL; /* silence gcc */ ++ di_write_lock_child(dentry); ++ err = au_h_path_to_set_attr(dentry, a, &h_path); ++ if (unlikely(err)) ++ goto out_di; ++ h_userns = mnt_user_ns(h_path.mnt); ++ ++ inode_unlock(a->h_inode); ++ switch (arg->type) { ++ case AU_XATTR_SET: ++ AuDebugOn(d_is_negative(h_path.dentry)); ++ err = vfsub_setxattr(h_userns, h_path.dentry, ++ arg->u.set.name, arg->u.set.value, ++ arg->u.set.size, arg->u.set.flags); ++ break; ++ case AU_ACL_SET: ++ err = -EOPNOTSUPP; ++ h_inode = d_inode(h_path.dentry); ++ if (h_inode->i_op->set_acl) { ++ /* this will call posix_acl_update_mode */ ++ err = h_inode->i_op->set_acl(h_userns, h_inode, ++ arg->u.acl_set.acl, ++ arg->u.acl_set.type); ++ } ++ break; ++ } ++ if (!err) ++ au_cpup_attr_timesizes(inode); ++ ++ au_unpin(&a->pin); ++ if (unlikely(err)) ++ au_update_dbtop(dentry); ++ ++out_di: ++ di_write_unlock(dentry); ++ si_read_unlock(sb); ++out_kfree: ++ au_kfree_rcu(a); ++out: ++ AuTraceErr(err); ++ return err; ++} ++#endif ++ ++static void au_refresh_iattr(struct inode *inode, struct kstat *st, ++ unsigned int nlink) ++{ ++ unsigned int n; ++ ++ inode->i_mode = st->mode; ++ /* don't i_[ug]id_write() here */ ++ inode->i_uid = st->uid; ++ inode->i_gid = st->gid; ++ inode->i_atime = st->atime; ++ inode->i_mtime = st->mtime; ++ inode->i_ctime = st->ctime; ++ ++ au_cpup_attr_nlink(inode, /*force*/0); ++ if (S_ISDIR(inode->i_mode)) { ++ n = inode->i_nlink; ++ n -= nlink; ++ n += st->nlink; ++ smp_mb(); /* for i_nlink */ ++ /* 0 can happen */ ++ set_nlink(inode, n); ++ } ++ ++ spin_lock(&inode->i_lock); ++ inode->i_blocks = st->blocks; ++ i_size_write(inode, st->size); ++ spin_unlock(&inode->i_lock); ++} ++ ++/* ++ * common routine for aufs_getattr() and au_getxattr(). ++ * returns zero or negative (an error). ++ * @dentry will be read-locked in success. ++ */ ++int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force, ++ struct path *h_path, int locked) ++{ ++ int err; ++ unsigned int mnt_flags, sigen; ++ unsigned char udba_none; ++ aufs_bindex_t bindex; ++ struct super_block *sb, *h_sb; ++ ++ h_path->mnt = NULL; ++ h_path->dentry = NULL; ++ ++ err = 0; ++ sb = dentry->d_sb; ++ mnt_flags = au_mntflags(sb); ++ udba_none = !!au_opt_test(mnt_flags, UDBA_NONE); ++ ++ if (unlikely(locked)) ++ goto body; /* skip locking dinfo */ ++ ++ /* support fstat(2) */ ++ if (!d_unlinked(dentry) && !udba_none) { ++ sigen = au_sigen(sb); ++ err = au_digen_test(dentry, sigen); ++ if (!err) { ++ di_read_lock_child(dentry, AuLock_IR); ++ err = au_dbrange_test(dentry); ++ if (unlikely(err)) { ++ di_read_unlock(dentry, AuLock_IR); ++ goto out; ++ } ++ } else { ++ AuDebugOn(IS_ROOT(dentry)); ++ di_write_lock_child(dentry); ++ err = au_dbrange_test(dentry); ++ if (!err) ++ err = au_reval_for_attr(dentry, sigen); ++ if (!err) ++ di_downgrade_lock(dentry, AuLock_IR); ++ else { ++ di_write_unlock(dentry); ++ goto out; ++ } ++ } ++ } else ++ di_read_lock_child(dentry, AuLock_IR); ++ ++body: ++ if (!inode) { ++ inode = d_inode(dentry); ++ if (unlikely(!inode)) ++ goto out; ++ } ++ bindex = au_ibtop(inode); ++ h_path->mnt = au_sbr_mnt(sb, bindex); ++ h_sb = h_path->mnt->mnt_sb; ++ if (!force ++ && !au_test_fs_bad_iattr(h_sb) ++ && udba_none) ++ goto out; /* success */ ++ ++ if (au_dbtop(dentry) == bindex) ++ h_path->dentry = au_h_dptr(dentry, bindex); ++ else if (au_opt_test(mnt_flags, PLINK) && au_plink_test(inode)) { ++ h_path->dentry = au_plink_lkup(inode, bindex); ++ if (IS_ERR(h_path->dentry)) ++ /* pretending success */ ++ h_path->dentry = NULL; ++ else ++ dput(h_path->dentry); ++ } ++ ++out: ++ return err; ++} ++ ++static int aufs_getattr(struct user_namespace *userns, const struct path *path, ++ struct kstat *st, u32 request, unsigned int query) ++{ ++ int err; ++ unsigned char positive; ++ struct path h_path; ++ struct dentry *dentry; ++ struct inode *inode; ++ struct super_block *sb; ++ ++ dentry = path->dentry; ++ inode = d_inode(dentry); ++ sb = dentry->d_sb; ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out; ++ err = au_h_path_getattr(dentry, /*inode*/NULL, /*force*/0, &h_path, ++ /*locked*/0); ++ if (unlikely(err)) ++ goto out_si; ++ if (unlikely(!h_path.dentry)) ++ /* illegally overlapped or something */ ++ goto out_fill; /* pretending success */ ++ ++ positive = d_is_positive(h_path.dentry); ++ if (positive) ++ /* no vfsub version */ ++ err = vfs_getattr(&h_path, st, request, query); ++ if (!err) { ++ if (positive) ++ au_refresh_iattr(inode, st, ++ d_inode(h_path.dentry)->i_nlink); ++ goto out_fill; /* success */ ++ } ++ AuTraceErr(err); ++ goto out_di; ++ ++out_fill: ++ generic_fillattr(userns, inode, st); ++out_di: ++ di_read_unlock(dentry, AuLock_IR); ++out_si: ++ si_read_unlock(sb); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static const char *aufs_get_link(struct dentry *dentry, struct inode *inode, ++ struct delayed_call *done) ++{ ++ const char *ret; ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ int err; ++ aufs_bindex_t bindex; ++ ++ ret = NULL; /* suppress a warning */ ++ err = -ECHILD; ++ if (!dentry) ++ goto out; ++ ++ err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_d_hashed_positive(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ err = -EINVAL; ++ inode = d_inode(dentry); ++ bindex = au_ibtop(inode); ++ h_inode = au_h_iptr(inode, bindex); ++ if (unlikely(!h_inode->i_op->get_link)) ++ goto out_unlock; ++ ++ err = -EBUSY; ++ h_dentry = NULL; ++ if (au_dbtop(dentry) <= bindex) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry) ++ dget(h_dentry); ++ } ++ if (!h_dentry) { ++ h_dentry = d_find_any_alias(h_inode); ++ if (IS_ERR(h_dentry)) { ++ err = PTR_ERR(h_dentry); ++ goto out_unlock; ++ } ++ } ++ if (unlikely(!h_dentry)) ++ goto out_unlock; ++ ++ err = 0; ++ AuDbg("%ps\n", h_inode->i_op->get_link); ++ AuDbgDentry(h_dentry); ++ ret = vfs_get_link(h_dentry, done); ++ dput(h_dentry); ++ if (IS_ERR(ret)) ++ err = PTR_ERR(ret); ++ ++out_unlock: ++ aufs_read_unlock(dentry, AuLock_IR); ++out: ++ if (unlikely(err)) ++ ret = ERR_PTR(err); ++ AuTraceErrPtr(ret); ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_is_special(struct inode *inode) ++{ ++ return (inode->i_mode & (S_IFBLK | S_IFCHR | S_IFIFO | S_IFSOCK)); ++} ++ ++static int aufs_update_time(struct inode *inode, struct timespec64 *ts, ++ int flags) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct super_block *sb; ++ struct inode *h_inode; ++ struct vfsmount *h_mnt; ++ ++ sb = inode->i_sb; ++ WARN_ONCE((flags & S_ATIME) && !IS_NOATIME(inode), ++ "unexpected s_flags 0x%lx", sb->s_flags); ++ ++ /* mmap_sem might be acquired already, cf. aufs_mmap() */ ++ lockdep_off(); ++ si_read_lock(sb, AuLock_FLUSH); ++ ii_write_lock_child(inode); ++ ++ err = 0; ++ bindex = au_ibtop(inode); ++ h_inode = au_h_iptr(inode, bindex); ++ if (!au_test_ro(sb, bindex, inode)) { ++ h_mnt = au_sbr_mnt(sb, bindex); ++ err = vfsub_mnt_want_write(h_mnt); ++ if (!err) { ++ err = vfsub_update_time(h_inode, ts, flags); ++ vfsub_mnt_drop_write(h_mnt); ++ } ++ } else if (au_is_special(h_inode)) { ++ /* ++ * Never copy-up here. ++ * These special files may already be opened and used for ++ * communicating. If we copied it up, then the communication ++ * would be corrupted. ++ */ ++ AuWarn1("timestamps for i%lu are ignored " ++ "since it is on readonly branch (hi%lu).\n", ++ inode->i_ino, h_inode->i_ino); ++ } else if (flags & ~S_ATIME) { ++ err = -EIO; ++ AuIOErr1("unexpected flags 0x%x\n", flags); ++ AuDebugOn(1); ++ } ++ ++ if (!err) ++ au_cpup_attr_timesizes(inode); ++ ii_write_unlock(inode); ++ si_read_unlock(sb); ++ lockdep_on(); ++ ++ if (!err && (flags & S_VERSION)) ++ inode_inc_iversion(inode); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* no getattr version will be set by module.c:aufs_init() */ ++struct inode_operations aufs_iop_nogetattr[AuIop_Last], ++ aufs_iop[] = { ++ [AuIop_SYMLINK] = { ++ .permission = aufs_permission, ++#ifdef CONFIG_FS_POSIX_ACL ++ .get_acl = aufs_get_acl, ++ .set_acl = aufs_set_acl, /* unsupport for symlink? */ ++#endif ++ ++ .setattr = aufs_setattr, ++ .getattr = aufs_getattr, ++ ++#ifdef CONFIG_AUFS_XATTR ++ .listxattr = aufs_listxattr, ++#endif ++ ++ .get_link = aufs_get_link, ++ ++ /* .update_time = aufs_update_time */ ++ }, ++ [AuIop_DIR] = { ++ .create = aufs_create, ++ .lookup = aufs_lookup, ++ .link = aufs_link, ++ .unlink = aufs_unlink, ++ .symlink = aufs_symlink, ++ .mkdir = aufs_mkdir, ++ .rmdir = aufs_rmdir, ++ .mknod = aufs_mknod, ++ .rename = aufs_rename, ++ ++ .permission = aufs_permission, ++#ifdef CONFIG_FS_POSIX_ACL ++ .get_acl = aufs_get_acl, ++ .set_acl = aufs_set_acl, ++#endif ++ ++ .setattr = aufs_setattr, ++ .getattr = aufs_getattr, ++ ++#ifdef CONFIG_AUFS_XATTR ++ .listxattr = aufs_listxattr, ++#endif ++ ++ .update_time = aufs_update_time, ++ .atomic_open = aufs_atomic_open, ++ .tmpfile = aufs_tmpfile ++ }, ++ [AuIop_OTHER] = { ++ .permission = aufs_permission, ++#ifdef CONFIG_FS_POSIX_ACL ++ .get_acl = aufs_get_acl, ++ .set_acl = aufs_set_acl, ++#endif ++ ++ .setattr = aufs_setattr, ++ .getattr = aufs_getattr, ++ ++#ifdef CONFIG_AUFS_XATTR ++ .listxattr = aufs_listxattr, ++#endif ++ ++ .update_time = aufs_update_time ++ } ++}; +diff -Naur null/fs/aufs/i_op_del.c linux-5.15.36/fs/aufs/i_op_del.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/i_op_del.c 2022-05-10 16:51:39.873744219 +0300 +@@ -0,0 +1,522 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode operations (del entry) ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* ++ * decide if a new whiteout for @dentry is necessary or not. ++ * when it is necessary, prepare the parent dir for the upper branch whose ++ * branch index is @bcpup for creation. the actual creation of the whiteout will ++ * be done by caller. ++ * return value: ++ * 0: wh is unnecessary ++ * plus: wh is necessary ++ * minus: error ++ */ ++int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup) ++{ ++ int need_wh, err; ++ aufs_bindex_t btop; ++ struct super_block *sb; ++ ++ sb = dentry->d_sb; ++ btop = au_dbtop(dentry); ++ if (*bcpup < 0) { ++ *bcpup = btop; ++ if (au_test_ro(sb, btop, d_inode(dentry))) { ++ err = AuWbrCopyup(au_sbi(sb), dentry); ++ *bcpup = err; ++ if (unlikely(err < 0)) ++ goto out; ++ } ++ } else ++ AuDebugOn(btop < *bcpup ++ || au_test_ro(sb, *bcpup, d_inode(dentry))); ++ AuDbg("bcpup %d, btop %d\n", *bcpup, btop); ++ ++ if (*bcpup != btop) { ++ err = au_cpup_dirs(dentry, *bcpup); ++ if (unlikely(err)) ++ goto out; ++ need_wh = 1; ++ } else { ++ struct au_dinfo *dinfo, *tmp; ++ ++ need_wh = -ENOMEM; ++ dinfo = au_di(dentry); ++ tmp = au_di_alloc(sb, AuLsc_DI_TMP); ++ if (tmp) { ++ au_di_cp(tmp, dinfo); ++ au_di_swap(tmp, dinfo); ++ /* returns the number of positive dentries */ ++ need_wh = au_lkup_dentry(dentry, btop + 1, ++ /* AuLkup_IGNORE_PERM */ 0); ++ au_di_swap(tmp, dinfo); ++ au_rw_write_unlock(&tmp->di_rwsem); ++ au_di_free(tmp); ++ } ++ } ++ AuDbg("need_wh %d\n", need_wh); ++ err = need_wh; ++ ++out: ++ return err; ++} ++ ++/* ++ * simple tests for the del-entry operations. ++ * following the checks in vfs, plus the parent-child relationship. ++ */ ++int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent, int isdir) ++{ ++ int err; ++ umode_t h_mode; ++ struct dentry *h_dentry, *h_latest; ++ struct inode *h_inode; ++ struct path h_ppath; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct user_namespace *h_userns; ++ ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (d_really_is_positive(dentry)) { ++ err = -ENOENT; ++ if (unlikely(d_is_negative(h_dentry))) ++ goto out; ++ h_inode = d_inode(h_dentry); ++ if (unlikely(!h_inode->i_nlink)) ++ goto out; ++ ++ h_mode = h_inode->i_mode; ++ if (!isdir) { ++ err = -EISDIR; ++ if (unlikely(S_ISDIR(h_mode))) ++ goto out; ++ } else if (unlikely(!S_ISDIR(h_mode))) { ++ err = -ENOTDIR; ++ goto out; ++ } ++ } else { ++ /* rename(2) case */ ++ err = -EIO; ++ if (unlikely(d_is_positive(h_dentry))) ++ goto out; ++ } ++ ++ err = -ENOENT; ++ /* expected parent dir is locked */ ++ if (unlikely(h_parent != h_dentry->d_parent)) ++ goto out; ++ err = 0; ++ ++ /* ++ * rmdir a dir may break the consistency on some filesystem. ++ * let's try heavy test. ++ */ ++ err = -EACCES; ++ sb = dentry->d_sb; ++ br = au_sbr(sb, bindex); ++ h_userns = au_br_userns(br); ++ if (unlikely(!au_opt_test(au_mntflags(sb), DIRPERM1) ++ && au_test_h_perm(h_userns, d_inode(h_parent), ++ MAY_EXEC | MAY_WRITE))) ++ goto out; ++ ++ h_ppath.dentry = h_parent; ++ h_ppath.mnt = au_br_mnt(br); ++ h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath); ++ err = -EIO; ++ if (IS_ERR(h_latest)) ++ goto out; ++ if (h_latest == h_dentry) ++ err = 0; ++ dput(h_latest); ++ ++out: ++ return err; ++} ++ ++/* ++ * decide the branch where we operate for @dentry. the branch index will be set ++ * @rbcpup. after deciding it, 'pin' it and store the timestamps of the parent ++ * dir for reverting. ++ * when a new whiteout is necessary, create it. ++ */ ++static struct dentry* ++lock_hdir_create_wh(struct dentry *dentry, int isdir, aufs_bindex_t *rbcpup, ++ struct au_dtime *dt, struct au_pin *pin) ++{ ++ struct dentry *wh_dentry; ++ struct super_block *sb; ++ struct path h_path; ++ int err, need_wh; ++ unsigned int udba; ++ aufs_bindex_t bcpup; ++ ++ need_wh = au_wr_dir_need_wh(dentry, isdir, rbcpup); ++ wh_dentry = ERR_PTR(need_wh); ++ if (unlikely(need_wh < 0)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ udba = au_opt_udba(sb); ++ bcpup = *rbcpup; ++ err = au_pin(pin, dentry, bcpup, udba, ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out; ++ ++ h_path.dentry = au_pinned_h_parent(pin); ++ if (udba != AuOpt_UDBA_NONE ++ && au_dbtop(dentry) == bcpup) { ++ err = au_may_del(dentry, bcpup, h_path.dentry, isdir); ++ wh_dentry = ERR_PTR(err); ++ if (unlikely(err)) ++ goto out_unpin; ++ } ++ ++ h_path.mnt = au_sbr_mnt(sb, bcpup); ++ au_dtime_store(dt, au_pinned_parent(pin), &h_path); ++ wh_dentry = NULL; ++ if (!need_wh) ++ goto out; /* success, no need to create whiteout */ ++ ++ wh_dentry = au_wh_create(dentry, bcpup, h_path.dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_unpin; ++ ++ /* returns with the parent is locked and wh_dentry is dget-ed */ ++ goto out; /* success */ ++ ++out_unpin: ++ au_unpin(pin); ++out: ++ return wh_dentry; ++} ++ ++/* ++ * when removing a dir, rename it to a unique temporary whiteout-ed name first ++ * in order to be revertible and save time for removing many child whiteouts ++ * under the dir. ++ * returns 1 when there are too many child whiteout and caller should remove ++ * them asynchronously. returns 0 when the number of children is enough small to ++ * remove now or the branch fs is a remote fs. ++ * otherwise return an error. ++ */ ++static int renwh_and_rmdir(struct dentry *dentry, aufs_bindex_t bindex, ++ struct au_nhash *whlist, struct inode *dir) ++{ ++ int rmdir_later, err, dirwh; ++ struct dentry *h_dentry; ++ struct super_block *sb; ++ struct inode *inode; ++ ++ sb = dentry->d_sb; ++ SiMustAnyLock(sb); ++ h_dentry = au_h_dptr(dentry, bindex); ++ err = au_whtmp_ren(h_dentry, au_sbr(sb, bindex)); ++ if (unlikely(err)) ++ goto out; ++ ++ /* stop monitoring */ ++ inode = d_inode(dentry); ++ au_hn_free(au_hi(inode, bindex)); ++ ++ if (!au_test_fs_remote(h_dentry->d_sb)) { ++ dirwh = au_sbi(sb)->si_dirwh; ++ rmdir_later = (dirwh <= 1); ++ if (!rmdir_later) ++ rmdir_later = au_nhash_test_longer_wh(whlist, bindex, ++ dirwh); ++ if (rmdir_later) ++ return rmdir_later; ++ } ++ ++ err = au_whtmp_rmdir(dir, bindex, h_dentry, whlist); ++ if (unlikely(err)) { ++ AuIOErr("rmdir %pd, b%d failed, %d. ignored\n", ++ h_dentry, bindex, err); ++ err = 0; ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * final procedure for deleting a entry. ++ * maintain dentry and iattr. ++ */ ++static void epilog(struct inode *dir, struct dentry *dentry, ++ aufs_bindex_t bindex) ++{ ++ struct inode *inode; ++ ++ inode = d_inode(dentry); ++ d_drop(dentry); ++ inode->i_ctime = dir->i_ctime; ++ ++ au_dir_ts(dir, bindex); ++ inode_inc_iversion(dir); ++} ++ ++/* ++ * when an error happened, remove the created whiteout and revert everything. ++ */ ++static int do_revert(int err, struct inode *dir, aufs_bindex_t bindex, ++ aufs_bindex_t bwh, struct dentry *wh_dentry, ++ struct dentry *dentry, struct au_dtime *dt) ++{ ++ int rerr; ++ struct path h_path = { ++ .dentry = wh_dentry, ++ .mnt = au_sbr_mnt(dir->i_sb, bindex) ++ }; ++ ++ rerr = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, dentry); ++ if (!rerr) { ++ au_set_dbwh(dentry, bwh); ++ au_dtime_revert(dt); ++ return 0; ++ } ++ ++ AuIOErr("%pd reverting whiteout failed(%d, %d)\n", dentry, err, rerr); ++ return -EIO; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int aufs_unlink(struct inode *dir, struct dentry *dentry) ++{ ++ int err; ++ aufs_bindex_t bwh, bindex, btop; ++ struct inode *inode, *h_dir, *delegated; ++ struct dentry *parent, *wh_dentry; ++ /* to reduce stack size */ ++ struct { ++ struct au_dtime dt; ++ struct au_pin pin; ++ struct path h_path; ++ } *a; ++ ++ IMustLock(dir); ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_free; ++ err = au_d_hashed_positive(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ inode = d_inode(dentry); ++ IMustLock(inode); ++ err = -EISDIR; ++ if (unlikely(d_is_dir(dentry))) ++ goto out_unlock; /* possible? */ ++ ++ btop = au_dbtop(dentry); ++ bwh = au_dbwh(dentry); ++ bindex = -1; ++ parent = dentry->d_parent; /* dir inode is locked */ ++ di_write_lock_parent(parent); ++ wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/0, &bindex, &a->dt, ++ &a->pin); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ a->h_path.mnt = au_sbr_mnt(dentry->d_sb, btop); ++ a->h_path.dentry = au_h_dptr(dentry, btop); ++ dget(a->h_path.dentry); ++ if (bindex == btop) { ++ h_dir = au_pinned_h_dir(&a->pin); ++ delegated = NULL; ++ err = vfsub_unlink(h_dir, &a->h_path, &delegated, /*force*/0); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ } else { ++ /* dir inode is locked */ ++ h_dir = d_inode(wh_dentry->d_parent); ++ IMustLock(h_dir); ++ err = 0; ++ } ++ ++ if (!err) { ++ vfsub_drop_nlink(inode); ++ epilog(dir, dentry, bindex); ++ ++ /* update target timestamps */ ++ if (bindex == btop) { ++ vfsub_update_h_iattr(&a->h_path, /*did*/NULL); ++ /*ignore*/ ++ inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; ++ } else ++ /* todo: this timestamp may be reverted later */ ++ inode->i_ctime = h_dir->i_ctime; ++ goto out_unpin; /* success */ ++ } ++ ++ /* revert */ ++ if (wh_dentry) { ++ int rerr; ++ ++ rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, ++ &a->dt); ++ if (rerr) ++ err = rerr; ++ } ++ ++out_unpin: ++ au_unpin(&a->pin); ++ dput(wh_dentry); ++ dput(a->h_path.dentry); ++out_parent: ++ di_write_unlock(parent); ++out_unlock: ++ aufs_read_unlock(dentry, AuLock_DW); ++out_free: ++ au_kfree_rcu(a); ++out: ++ return err; ++} ++ ++int aufs_rmdir(struct inode *dir, struct dentry *dentry) ++{ ++ int err, rmdir_later; ++ aufs_bindex_t bwh, bindex, btop; ++ struct inode *inode; ++ struct dentry *parent, *wh_dentry, *h_dentry; ++ struct au_whtmp_rmdir *args; ++ /* to reduce stack size */ ++ struct { ++ struct au_dtime dt; ++ struct au_pin pin; ++ } *a; ++ ++ IMustLock(dir); ++ ++ err = -ENOMEM; ++ a = kmalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); ++ if (unlikely(err)) ++ goto out_free; ++ err = au_alive_dir(dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ inode = d_inode(dentry); ++ IMustLock(inode); ++ err = -ENOTDIR; ++ if (unlikely(!d_is_dir(dentry))) ++ goto out_unlock; /* possible? */ ++ ++ err = -ENOMEM; ++ args = au_whtmp_rmdir_alloc(dir->i_sb, GFP_NOFS); ++ if (unlikely(!args)) ++ goto out_unlock; ++ ++ parent = dentry->d_parent; /* dir inode is locked */ ++ di_write_lock_parent(parent); ++ err = au_test_empty(dentry, &args->whlist); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ btop = au_dbtop(dentry); ++ bwh = au_dbwh(dentry); ++ bindex = -1; ++ wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/1, &bindex, &a->dt, ++ &a->pin); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) ++ goto out_parent; ++ ++ h_dentry = au_h_dptr(dentry, btop); ++ dget(h_dentry); ++ rmdir_later = 0; ++ if (bindex == btop) { ++ err = renwh_and_rmdir(dentry, btop, &args->whlist, dir); ++ if (err > 0) { ++ rmdir_later = err; ++ err = 0; ++ } ++ } else { ++ /* stop monitoring */ ++ au_hn_free(au_hi(inode, btop)); ++ ++ /* dir inode is locked */ ++ IMustLock(d_inode(wh_dentry->d_parent)); ++ err = 0; ++ } ++ ++ if (!err) { ++ vfsub_dead_dir(inode); ++ au_set_dbdiropq(dentry, -1); ++ epilog(dir, dentry, bindex); ++ ++ if (rmdir_later) { ++ au_whtmp_kick_rmdir(dir, btop, h_dentry, args); ++ args = NULL; ++ } ++ ++ goto out_unpin; /* success */ ++ } ++ ++ /* revert */ ++ AuLabel(revert); ++ if (wh_dentry) { ++ int rerr; ++ ++ rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, ++ &a->dt); ++ if (rerr) ++ err = rerr; ++ } ++ ++out_unpin: ++ au_unpin(&a->pin); ++ dput(wh_dentry); ++ dput(h_dentry); ++out_parent: ++ di_write_unlock(parent); ++ if (args) ++ au_whtmp_rmdir_free(args); ++out_unlock: ++ aufs_read_unlock(dentry, AuLock_DW); ++out_free: ++ au_kfree_rcu(a); ++out: ++ AuTraceErr(err); ++ return err; ++} +diff -Naur null/fs/aufs/i_op_ren.c linux-5.15.36/fs/aufs/i_op_ren.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/i_op_ren.c 2022-05-10 16:51:39.873744219 +0300 +@@ -0,0 +1,1257 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * inode operation (rename entry) ++ * todo: this is crazy monster ++ */ ++ ++#include ++#include "aufs.h" ++ ++enum { AuSRC, AuDST, AuSrcDst }; ++enum { AuPARENT, AuCHILD, AuParentChild }; ++ ++#define AuRen_ISDIR_SRC 1 ++#define AuRen_ISDIR_DST (1 << 1) ++#define AuRen_ISSAMEDIR (1 << 2) ++#define AuRen_WHSRC (1 << 3) ++#define AuRen_WHDST (1 << 4) ++#define AuRen_MNT_WRITE (1 << 5) ++#define AuRen_DT_DSTDIR (1 << 6) ++#define AuRen_DIROPQ_SRC (1 << 7) ++#define AuRen_DIROPQ_DST (1 << 8) ++#define AuRen_DIRREN (1 << 9) ++#define AuRen_DROPPED_SRC (1 << 10) ++#define AuRen_DROPPED_DST (1 << 11) ++#define au_ftest_ren(flags, name) ((flags) & AuRen_##name) ++#define au_fset_ren(flags, name) \ ++ do { (flags) |= AuRen_##name; } while (0) ++#define au_fclr_ren(flags, name) \ ++ do { (flags) &= ~AuRen_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_DIRREN ++#undef AuRen_DIRREN ++#define AuRen_DIRREN 0 ++#endif ++ ++struct au_ren_args { ++ struct { ++ struct dentry *dentry, *h_dentry, *parent, *h_parent, ++ *wh_dentry; ++ struct inode *dir, *inode; ++ struct au_hinode *hdir, *hinode; ++ struct au_dtime dt[AuParentChild]; ++ aufs_bindex_t btop, bdiropq; ++ } sd[AuSrcDst]; ++ ++#define src_dentry sd[AuSRC].dentry ++#define src_dir sd[AuSRC].dir ++#define src_inode sd[AuSRC].inode ++#define src_h_dentry sd[AuSRC].h_dentry ++#define src_parent sd[AuSRC].parent ++#define src_h_parent sd[AuSRC].h_parent ++#define src_wh_dentry sd[AuSRC].wh_dentry ++#define src_hdir sd[AuSRC].hdir ++#define src_hinode sd[AuSRC].hinode ++#define src_h_dir sd[AuSRC].hdir->hi_inode ++#define src_dt sd[AuSRC].dt ++#define src_btop sd[AuSRC].btop ++#define src_bdiropq sd[AuSRC].bdiropq ++ ++#define dst_dentry sd[AuDST].dentry ++#define dst_dir sd[AuDST].dir ++#define dst_inode sd[AuDST].inode ++#define dst_h_dentry sd[AuDST].h_dentry ++#define dst_parent sd[AuDST].parent ++#define dst_h_parent sd[AuDST].h_parent ++#define dst_wh_dentry sd[AuDST].wh_dentry ++#define dst_hdir sd[AuDST].hdir ++#define dst_hinode sd[AuDST].hinode ++#define dst_h_dir sd[AuDST].hdir->hi_inode ++#define dst_dt sd[AuDST].dt ++#define dst_btop sd[AuDST].btop ++#define dst_bdiropq sd[AuDST].bdiropq ++ ++ struct dentry *h_trap; ++ struct au_branch *br; ++ struct path h_path; ++ struct au_nhash whlist; ++ aufs_bindex_t btgt, src_bwh; ++ ++ struct { ++ unsigned short auren_flags; ++ unsigned char flags; /* syscall parameter */ ++ unsigned char exchange; ++ } __packed; ++ ++ struct au_whtmp_rmdir *thargs; ++ struct dentry *h_dst; ++ struct au_hinode *h_root; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * functions for reverting. ++ * when an error happened in a single rename systemcall, we should revert ++ * everything as if nothing happened. ++ * we don't need to revert the copied-up/down the parent dir since they are ++ * harmless. ++ */ ++ ++#define RevertFailure(fmt, ...) do { \ ++ AuIOErr("revert failure: " fmt " (%d, %d)\n", \ ++ ##__VA_ARGS__, err, rerr); \ ++ err = -EIO; \ ++} while (0) ++ ++static void au_ren_do_rev_diropq(int err, struct au_ren_args *a, int idx) ++{ ++ int rerr; ++ struct dentry *d; ++#define src_or_dst(member) a->sd[idx].member ++ ++ d = src_or_dst(dentry); /* {src,dst}_dentry */ ++ au_hn_inode_lock_nested(src_or_dst(hinode), AuLsc_I_CHILD); ++ rerr = au_diropq_remove(d, a->btgt); ++ au_hn_inode_unlock(src_or_dst(hinode)); ++ au_set_dbdiropq(d, src_or_dst(bdiropq)); ++ if (rerr) ++ RevertFailure("remove diropq %pd", d); ++ ++#undef src_or_dst_ ++} ++ ++static void au_ren_rev_diropq(int err, struct au_ren_args *a) ++{ ++ if (au_ftest_ren(a->auren_flags, DIROPQ_SRC)) ++ au_ren_do_rev_diropq(err, a, AuSRC); ++ if (au_ftest_ren(a->auren_flags, DIROPQ_DST)) ++ au_ren_do_rev_diropq(err, a, AuDST); ++} ++ ++static void au_ren_rev_rename(int err, struct au_ren_args *a) ++{ ++ int rerr; ++ struct inode *delegated; ++ struct path h_ppath = { ++ .dentry = a->src_h_parent, ++ .mnt = a->h_path.mnt ++ }; ++ ++ a->h_path.dentry = vfsub_lkup_one(&a->src_dentry->d_name, &h_ppath); ++ rerr = PTR_ERR(a->h_path.dentry); ++ if (IS_ERR(a->h_path.dentry)) { ++ RevertFailure("lkup one %pd", a->src_dentry); ++ return; ++ } ++ ++ delegated = NULL; ++ rerr = vfsub_rename(a->dst_h_dir, ++ au_h_dptr(a->src_dentry, a->btgt), ++ a->src_h_dir, &a->h_path, &delegated, a->flags); ++ if (unlikely(rerr == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal rename\n"); ++ iput(delegated); ++ } ++ d_drop(a->h_path.dentry); ++ dput(a->h_path.dentry); ++ /* au_set_h_dptr(a->src_dentry, a->btgt, NULL); */ ++ if (rerr) ++ RevertFailure("rename %pd", a->src_dentry); ++} ++ ++static void au_ren_rev_whtmp(int err, struct au_ren_args *a) ++{ ++ int rerr; ++ struct inode *delegated; ++ struct path h_ppath = { ++ .dentry = a->dst_h_parent, ++ .mnt = a->h_path.mnt ++ }; ++ ++ a->h_path.dentry = vfsub_lkup_one(&a->dst_dentry->d_name, &h_ppath); ++ rerr = PTR_ERR(a->h_path.dentry); ++ if (IS_ERR(a->h_path.dentry)) { ++ RevertFailure("lkup one %pd", a->dst_dentry); ++ return; ++ } ++ if (d_is_positive(a->h_path.dentry)) { ++ d_drop(a->h_path.dentry); ++ dput(a->h_path.dentry); ++ return; ++ } ++ ++ delegated = NULL; ++ rerr = vfsub_rename(a->dst_h_dir, a->h_dst, a->dst_h_dir, &a->h_path, ++ &delegated, a->flags); ++ if (unlikely(rerr == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal rename\n"); ++ iput(delegated); ++ } ++ d_drop(a->h_path.dentry); ++ dput(a->h_path.dentry); ++ if (!rerr) ++ au_set_h_dptr(a->dst_dentry, a->btgt, dget(a->h_dst)); ++ else ++ RevertFailure("rename %pd", a->h_dst); ++} ++ ++static void au_ren_rev_whsrc(int err, struct au_ren_args *a) ++{ ++ int rerr; ++ ++ a->h_path.dentry = a->src_wh_dentry; ++ rerr = au_wh_unlink_dentry(a->src_h_dir, &a->h_path, a->src_dentry); ++ au_set_dbwh(a->src_dentry, a->src_bwh); ++ if (rerr) ++ RevertFailure("unlink %pd", a->src_wh_dentry); ++} ++#undef RevertFailure ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * when we have to copyup the renaming entry, do it with the rename-target name ++ * in order to minimize the cost (the later actual rename is unnecessary). ++ * otherwise rename it on the target branch. ++ */ ++static int au_ren_or_cpup(struct au_ren_args *a) ++{ ++ int err; ++ struct dentry *d; ++ struct inode *delegated; ++ ++ d = a->src_dentry; ++ if (au_dbtop(d) == a->btgt) { ++ a->h_path.dentry = a->dst_h_dentry; ++ AuDebugOn(au_dbtop(d) != a->btgt); ++ delegated = NULL; ++ err = vfsub_rename(a->src_h_dir, au_h_dptr(d, a->btgt), ++ a->dst_h_dir, &a->h_path, &delegated, ++ a->flags); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal rename\n"); ++ iput(delegated); ++ } ++ } else ++ BUG(); ++ ++ if (!err && a->h_dst) ++ /* it will be set to dinfo later */ ++ dget(a->h_dst); ++ ++ return err; ++} ++ ++/* cf. aufs_rmdir() */ ++static int au_ren_del_whtmp(struct au_ren_args *a) ++{ ++ int err; ++ struct inode *dir; ++ ++ dir = a->dst_dir; ++ SiMustAnyLock(dir->i_sb); ++ if (!au_nhash_test_longer_wh(&a->whlist, a->btgt, ++ au_sbi(dir->i_sb)->si_dirwh) ++ || au_test_fs_remote(a->h_dst->d_sb)) { ++ err = au_whtmp_rmdir(dir, a->btgt, a->h_dst, &a->whlist); ++ if (unlikely(err)) ++ pr_warn("failed removing whtmp dir %pd (%d), " ++ "ignored.\n", a->h_dst, err); ++ } else { ++ au_nhash_wh_free(&a->thargs->whlist); ++ a->thargs->whlist = a->whlist; ++ a->whlist.nh_num = 0; ++ au_whtmp_kick_rmdir(dir, a->btgt, a->h_dst, a->thargs); ++ dput(a->h_dst); ++ a->thargs = NULL; ++ } ++ ++ return 0; ++} ++ ++/* make it 'opaque' dir. */ ++static int au_ren_do_diropq(struct au_ren_args *a, int idx) ++{ ++ int err; ++ struct dentry *d, *diropq; ++#define src_or_dst(member) a->sd[idx].member ++ ++ err = 0; ++ d = src_or_dst(dentry); /* {src,dst}_dentry */ ++ src_or_dst(bdiropq) = au_dbdiropq(d); ++ src_or_dst(hinode) = au_hi(src_or_dst(inode), a->btgt); ++ au_hn_inode_lock_nested(src_or_dst(hinode), AuLsc_I_CHILD); ++ diropq = au_diropq_create(d, a->btgt); ++ au_hn_inode_unlock(src_or_dst(hinode)); ++ if (IS_ERR(diropq)) ++ err = PTR_ERR(diropq); ++ else ++ dput(diropq); ++ ++#undef src_or_dst_ ++ return err; ++} ++ ++static int au_ren_diropq(struct au_ren_args *a) ++{ ++ int err; ++ unsigned char always; ++ struct dentry *d; ++ ++ err = 0; ++ d = a->dst_dentry; /* already renamed on the branch */ ++ always = !!au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ); ++ if (au_ftest_ren(a->auren_flags, ISDIR_SRC) ++ && !au_ftest_ren(a->auren_flags, DIRREN) ++ && a->btgt != au_dbdiropq(a->src_dentry) ++ && (a->dst_wh_dentry ++ || a->btgt <= au_dbdiropq(d) ++ /* hide the lower to keep xino */ ++ /* the lowers may not be a dir, but we hide them anyway */ ++ || a->btgt < au_dbbot(d) ++ || always)) { ++ AuDbg("here\n"); ++ err = au_ren_do_diropq(a, AuSRC); ++ if (unlikely(err)) ++ goto out; ++ au_fset_ren(a->auren_flags, DIROPQ_SRC); ++ } ++ if (!a->exchange) ++ goto out; /* success */ ++ ++ d = a->src_dentry; /* already renamed on the branch */ ++ if (au_ftest_ren(a->auren_flags, ISDIR_DST) ++ && a->btgt != au_dbdiropq(a->dst_dentry) ++ && (a->btgt < au_dbdiropq(d) ++ || a->btgt < au_dbbot(d) ++ || always)) { ++ AuDbgDentry(a->src_dentry); ++ AuDbgDentry(a->dst_dentry); ++ err = au_ren_do_diropq(a, AuDST); ++ if (unlikely(err)) ++ goto out_rev_src; ++ au_fset_ren(a->auren_flags, DIROPQ_DST); ++ } ++ goto out; /* success */ ++ ++out_rev_src: ++ AuDbg("err %d, reverting src\n", err); ++ au_ren_rev_diropq(err, a); ++out: ++ return err; ++} ++ ++static int do_rename(struct au_ren_args *a) ++{ ++ int err; ++ struct dentry *d, *h_d; ++ ++ if (!a->exchange) { ++ /* prepare workqueue args for asynchronous rmdir */ ++ h_d = a->dst_h_dentry; ++ if (au_ftest_ren(a->auren_flags, ISDIR_DST) ++ /* && !au_ftest_ren(a->auren_flags, DIRREN) */ ++ && d_is_positive(h_d)) { ++ err = -ENOMEM; ++ a->thargs = au_whtmp_rmdir_alloc(a->src_dentry->d_sb, ++ GFP_NOFS); ++ if (unlikely(!a->thargs)) ++ goto out; ++ a->h_dst = dget(h_d); ++ } ++ ++ /* create whiteout for src_dentry */ ++ if (au_ftest_ren(a->auren_flags, WHSRC)) { ++ a->src_bwh = au_dbwh(a->src_dentry); ++ AuDebugOn(a->src_bwh >= 0); ++ a->src_wh_dentry = au_wh_create(a->src_dentry, a->btgt, ++ a->src_h_parent); ++ err = PTR_ERR(a->src_wh_dentry); ++ if (IS_ERR(a->src_wh_dentry)) ++ goto out_thargs; ++ } ++ ++ /* lookup whiteout for dentry */ ++ if (au_ftest_ren(a->auren_flags, WHDST)) { ++ h_d = au_wh_lkup(a->dst_h_parent, ++ &a->dst_dentry->d_name, a->br); ++ err = PTR_ERR(h_d); ++ if (IS_ERR(h_d)) ++ goto out_whsrc; ++ if (d_is_negative(h_d)) ++ dput(h_d); ++ else ++ a->dst_wh_dentry = h_d; ++ } ++ ++ /* rename dentry to tmpwh */ ++ if (a->thargs) { ++ err = au_whtmp_ren(a->dst_h_dentry, a->br); ++ if (unlikely(err)) ++ goto out_whdst; ++ ++ d = a->dst_dentry; ++ au_set_h_dptr(d, a->btgt, NULL); ++ err = au_lkup_neg(d, a->btgt, /*wh*/0); ++ if (unlikely(err)) ++ goto out_whtmp; ++ a->dst_h_dentry = au_h_dptr(d, a->btgt); ++ } ++ } ++ ++ BUG_ON(d_is_positive(a->dst_h_dentry) && a->src_btop != a->btgt); ++#if 0 /* debugging */ ++ BUG_ON(!au_ftest_ren(a->auren_flags, DIRREN) ++ && d_is_positive(a->dst_h_dentry) ++ && a->src_btop != a->btgt); ++#endif ++ ++ /* rename by vfs_rename or cpup */ ++ err = au_ren_or_cpup(a); ++ if (unlikely(err)) ++ /* leave the copied-up one */ ++ goto out_whtmp; ++ ++ /* make dir opaque */ ++ err = au_ren_diropq(a); ++ if (unlikely(err)) ++ goto out_rename; ++ ++ /* update target timestamps */ ++ if (a->exchange) { ++ AuDebugOn(au_dbtop(a->dst_dentry) != a->btgt); ++ a->h_path.dentry = au_h_dptr(a->dst_dentry, a->btgt); ++ vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ ++ a->dst_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; ++ } ++ AuDebugOn(au_dbtop(a->src_dentry) != a->btgt); ++ a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); ++ vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ ++ a->src_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; ++ ++ if (!a->exchange) { ++ /* remove whiteout for dentry */ ++ if (a->dst_wh_dentry) { ++ a->h_path.dentry = a->dst_wh_dentry; ++ err = au_wh_unlink_dentry(a->dst_h_dir, &a->h_path, ++ a->dst_dentry); ++ if (unlikely(err)) ++ goto out_diropq; ++ } ++ ++ /* remove whtmp */ ++ if (a->thargs) ++ au_ren_del_whtmp(a); /* ignore this error */ ++ ++ au_fhsm_wrote(a->src_dentry->d_sb, a->btgt, /*force*/0); ++ } ++ err = 0; ++ goto out_success; ++ ++out_diropq: ++ au_ren_rev_diropq(err, a); ++out_rename: ++ au_ren_rev_rename(err, a); ++ dput(a->h_dst); ++out_whtmp: ++ if (a->thargs) ++ au_ren_rev_whtmp(err, a); ++out_whdst: ++ dput(a->dst_wh_dentry); ++ a->dst_wh_dentry = NULL; ++out_whsrc: ++ if (a->src_wh_dentry) ++ au_ren_rev_whsrc(err, a); ++out_success: ++ dput(a->src_wh_dentry); ++ dput(a->dst_wh_dentry); ++out_thargs: ++ if (a->thargs) { ++ dput(a->h_dst); ++ au_whtmp_rmdir_free(a->thargs); ++ a->thargs = NULL; ++ } ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * test if @dentry dir can be rename destination or not. ++ * success means, it is a logically empty dir. ++ */ ++static int may_rename_dstdir(struct dentry *dentry, struct au_nhash *whlist) ++{ ++ return au_test_empty(dentry, whlist); ++} ++ ++/* ++ * test if @a->src_dentry dir can be rename source or not. ++ * if it can, return 0. ++ * success means, ++ * - it is a logically empty dir. ++ * - or, it exists on writable branch and has no children including whiteouts ++ * on the lower branch unless DIRREN is on. ++ */ ++static int may_rename_srcdir(struct au_ren_args *a) ++{ ++ int err; ++ unsigned int rdhash; ++ aufs_bindex_t btop, btgt; ++ struct dentry *dentry; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ ++ dentry = a->src_dentry; ++ sb = dentry->d_sb; ++ sbinfo = au_sbi(sb); ++ if (au_opt_test(sbinfo->si_mntflags, DIRREN)) ++ au_fset_ren(a->auren_flags, DIRREN); ++ ++ btgt = a->btgt; ++ btop = au_dbtop(dentry); ++ if (btop != btgt) { ++ struct au_nhash whlist; ++ ++ SiMustAnyLock(sb); ++ rdhash = sbinfo->si_rdhash; ++ if (!rdhash) ++ rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, ++ dentry)); ++ err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ err = au_test_empty(dentry, &whlist); ++ au_nhash_wh_free(&whlist); ++ goto out; ++ } ++ ++ if (btop == au_dbtaildir(dentry)) ++ return 0; /* success */ ++ ++ err = au_test_empty_lower(dentry); ++ ++out: ++ if (err == -ENOTEMPTY) { ++ if (au_ftest_ren(a->auren_flags, DIRREN)) { ++ err = 0; ++ } else { ++ AuWarn1("renaming dir who has child(ren) on multiple " ++ "branches, is not supported\n"); ++ err = -EXDEV; ++ } ++ } ++ return err; ++} ++ ++/* side effect: sets whlist and h_dentry */ ++static int au_ren_may_dir(struct au_ren_args *a) ++{ ++ int err; ++ unsigned int rdhash; ++ struct dentry *d; ++ ++ d = a->dst_dentry; ++ SiMustAnyLock(d->d_sb); ++ ++ err = 0; ++ if (au_ftest_ren(a->auren_flags, ISDIR_DST) && a->dst_inode) { ++ rdhash = au_sbi(d->d_sb)->si_rdhash; ++ if (!rdhash) ++ rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, d)); ++ err = au_nhash_alloc(&a->whlist, rdhash, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ ++ if (!a->exchange) { ++ au_set_dbtop(d, a->dst_btop); ++ err = may_rename_dstdir(d, &a->whlist); ++ au_set_dbtop(d, a->btgt); ++ } else ++ err = may_rename_srcdir(a); ++ } ++ a->dst_h_dentry = au_h_dptr(d, au_dbtop(d)); ++ if (unlikely(err)) ++ goto out; ++ ++ d = a->src_dentry; ++ a->src_h_dentry = au_h_dptr(d, au_dbtop(d)); ++ if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) { ++ err = may_rename_srcdir(a); ++ if (unlikely(err)) { ++ au_nhash_wh_free(&a->whlist); ++ a->whlist.nh_num = 0; ++ } ++ } ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * simple tests for rename. ++ * following the checks in vfs, plus the parent-child relationship. ++ */ ++static int au_may_ren(struct au_ren_args *a) ++{ ++ int err, isdir; ++ struct inode *h_inode; ++ ++ if (a->src_btop == a->btgt) { ++ err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, ++ au_ftest_ren(a->auren_flags, ISDIR_SRC)); ++ if (unlikely(err)) ++ goto out; ++ err = -EINVAL; ++ if (unlikely(a->src_h_dentry == a->h_trap)) ++ goto out; ++ } ++ ++ err = 0; ++ if (a->dst_btop != a->btgt) ++ goto out; ++ ++ err = -ENOTEMPTY; ++ if (unlikely(a->dst_h_dentry == a->h_trap)) ++ goto out; ++ ++ err = -EIO; ++ isdir = !!au_ftest_ren(a->auren_flags, ISDIR_DST); ++ if (d_really_is_negative(a->dst_dentry)) { ++ if (d_is_negative(a->dst_h_dentry)) ++ err = au_may_add(a->dst_dentry, a->btgt, ++ a->dst_h_parent, isdir); ++ } else { ++ if (unlikely(d_is_negative(a->dst_h_dentry))) ++ goto out; ++ h_inode = d_inode(a->dst_h_dentry); ++ if (h_inode->i_nlink) ++ err = au_may_del(a->dst_dentry, a->btgt, ++ a->dst_h_parent, isdir); ++ } ++ ++out: ++ if (unlikely(err == -ENOENT || err == -EEXIST)) ++ err = -EIO; ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * locking order ++ * (VFS) ++ * - src_dir and dir by lock_rename() ++ * - inode if exists ++ * (aufs) ++ * - lock all ++ * + src_dentry and dentry by aufs_read_and_write_lock2() which calls, ++ * + si_read_lock ++ * + di_write_lock2_child() ++ * + di_write_lock_child() ++ * + ii_write_lock_child() ++ * + di_write_lock_child2() ++ * + ii_write_lock_child2() ++ * + src_parent and parent ++ * + di_write_lock_parent() ++ * + ii_write_lock_parent() ++ * + di_write_lock_parent2() ++ * + ii_write_lock_parent2() ++ * + lower src_dir and dir by vfsub_lock_rename() ++ * + verify the every relationships between child and parent. if any ++ * of them failed, unlock all and return -EBUSY. ++ */ ++static void au_ren_unlock(struct au_ren_args *a) ++{ ++ vfsub_unlock_rename(a->src_h_parent, a->src_hdir, ++ a->dst_h_parent, a->dst_hdir); ++ if (au_ftest_ren(a->auren_flags, DIRREN) ++ && a->h_root) ++ au_hn_inode_unlock(a->h_root); ++ if (au_ftest_ren(a->auren_flags, MNT_WRITE)) ++ vfsub_mnt_drop_write(au_br_mnt(a->br)); ++} ++ ++static int au_ren_lock(struct au_ren_args *a) ++{ ++ int err; ++ unsigned int udba; ++ ++ err = 0; ++ a->src_h_parent = au_h_dptr(a->src_parent, a->btgt); ++ a->src_hdir = au_hi(a->src_dir, a->btgt); ++ a->dst_h_parent = au_h_dptr(a->dst_parent, a->btgt); ++ a->dst_hdir = au_hi(a->dst_dir, a->btgt); ++ ++ err = vfsub_mnt_want_write(au_br_mnt(a->br)); ++ if (unlikely(err)) ++ goto out; ++ au_fset_ren(a->auren_flags, MNT_WRITE); ++ if (au_ftest_ren(a->auren_flags, DIRREN)) { ++ struct dentry *root; ++ struct inode *dir; ++ ++ /* ++ * sbinfo is already locked, so this ii_read_lock is ++ * unnecessary. but our debugging feature checks it. ++ */ ++ root = a->src_inode->i_sb->s_root; ++ if (root != a->src_parent && root != a->dst_parent) { ++ dir = d_inode(root); ++ ii_read_lock_parent3(dir); ++ a->h_root = au_hi(dir, a->btgt); ++ ii_read_unlock(dir); ++ au_hn_inode_lock_nested(a->h_root, AuLsc_I_PARENT3); ++ } ++ } ++ a->h_trap = vfsub_lock_rename(a->src_h_parent, a->src_hdir, ++ a->dst_h_parent, a->dst_hdir); ++ udba = au_opt_udba(a->src_dentry->d_sb); ++ if (unlikely(a->src_hdir->hi_inode != d_inode(a->src_h_parent) ++ || a->dst_hdir->hi_inode != d_inode(a->dst_h_parent))) ++ err = au_busy_or_stale(); ++ if (!err && au_dbtop(a->src_dentry) == a->btgt) ++ err = au_h_verify(a->src_h_dentry, udba, ++ d_inode(a->src_h_parent), a->src_h_parent, ++ a->br); ++ if (!err && au_dbtop(a->dst_dentry) == a->btgt) ++ err = au_h_verify(a->dst_h_dentry, udba, ++ d_inode(a->dst_h_parent), a->dst_h_parent, ++ a->br); ++ if (!err) ++ goto out; /* success */ ++ ++ err = au_busy_or_stale(); ++ au_ren_unlock(a); ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void au_ren_refresh_dir(struct au_ren_args *a) ++{ ++ struct inode *dir; ++ ++ dir = a->dst_dir; ++ inode_inc_iversion(dir); ++ if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) { ++ /* is this updating defined in POSIX? */ ++ au_cpup_attr_timesizes(a->src_inode); ++ au_cpup_attr_nlink(dir, /*force*/1); ++ } ++ au_dir_ts(dir, a->btgt); ++ ++ if (a->exchange) { ++ dir = a->src_dir; ++ inode_inc_iversion(dir); ++ if (au_ftest_ren(a->auren_flags, ISDIR_DST)) { ++ /* is this updating defined in POSIX? */ ++ au_cpup_attr_timesizes(a->dst_inode); ++ au_cpup_attr_nlink(dir, /*force*/1); ++ } ++ au_dir_ts(dir, a->btgt); ++ } ++ ++ if (au_ftest_ren(a->auren_flags, ISSAMEDIR)) ++ return; ++ ++ dir = a->src_dir; ++ inode_inc_iversion(dir); ++ if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) ++ au_cpup_attr_nlink(dir, /*force*/1); ++ au_dir_ts(dir, a->btgt); ++} ++ ++static void au_ren_refresh(struct au_ren_args *a) ++{ ++ aufs_bindex_t bbot, bindex; ++ struct dentry *d, *h_d; ++ struct inode *i, *h_i; ++ struct super_block *sb; ++ ++ d = a->dst_dentry; ++ d_drop(d); ++ if (a->h_dst) ++ /* already dget-ed by au_ren_or_cpup() */ ++ au_set_h_dptr(d, a->btgt, a->h_dst); ++ ++ i = a->dst_inode; ++ if (i) { ++ if (!a->exchange) { ++ if (!au_ftest_ren(a->auren_flags, ISDIR_DST)) ++ vfsub_drop_nlink(i); ++ else { ++ vfsub_dead_dir(i); ++ au_cpup_attr_timesizes(i); ++ } ++ au_update_dbrange(d, /*do_put_zero*/1); ++ } else ++ au_cpup_attr_nlink(i, /*force*/1); ++ } else { ++ bbot = a->btgt; ++ for (bindex = au_dbtop(d); bindex < bbot; bindex++) ++ au_set_h_dptr(d, bindex, NULL); ++ bbot = au_dbbot(d); ++ for (bindex = a->btgt + 1; bindex <= bbot; bindex++) ++ au_set_h_dptr(d, bindex, NULL); ++ au_update_dbrange(d, /*do_put_zero*/0); ++ } ++ ++ if (a->exchange ++ || au_ftest_ren(a->auren_flags, DIRREN)) { ++ d_drop(a->src_dentry); ++ if (au_ftest_ren(a->auren_flags, DIRREN)) ++ au_set_dbwh(a->src_dentry, -1); ++ return; ++ } ++ ++ d = a->src_dentry; ++ au_set_dbwh(d, -1); ++ bbot = au_dbbot(d); ++ for (bindex = a->btgt + 1; bindex <= bbot; bindex++) { ++ h_d = au_h_dptr(d, bindex); ++ if (h_d) ++ au_set_h_dptr(d, bindex, NULL); ++ } ++ au_set_dbbot(d, a->btgt); ++ ++ sb = d->d_sb; ++ i = a->src_inode; ++ if (au_opt_test(au_mntflags(sb), PLINK) && au_plink_test(i)) ++ return; /* success */ ++ ++ bbot = au_ibbot(i); ++ for (bindex = a->btgt + 1; bindex <= bbot; bindex++) { ++ h_i = au_h_iptr(i, bindex); ++ if (h_i) { ++ au_xino_write(sb, bindex, h_i->i_ino, /*ino*/0); ++ /* ignore this error */ ++ au_set_h_iptr(i, bindex, NULL, 0); ++ } ++ } ++ au_set_ibbot(i, a->btgt); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* mainly for link(2) and rename(2) */ ++int au_wbr(struct dentry *dentry, aufs_bindex_t btgt) ++{ ++ aufs_bindex_t bdiropq, bwh; ++ struct dentry *parent; ++ struct au_branch *br; ++ ++ parent = dentry->d_parent; ++ IMustLock(d_inode(parent)); /* dir is locked */ ++ ++ bdiropq = au_dbdiropq(parent); ++ bwh = au_dbwh(dentry); ++ br = au_sbr(dentry->d_sb, btgt); ++ if (au_br_rdonly(br) ++ || (0 <= bdiropq && bdiropq < btgt) ++ || (0 <= bwh && bwh < btgt)) ++ btgt = -1; ++ ++ AuDbg("btgt %d\n", btgt); ++ return btgt; ++} ++ ++/* sets src_btop, dst_btop and btgt */ ++static int au_ren_wbr(struct au_ren_args *a) ++{ ++ int err; ++ struct au_wr_dir_args wr_dir_args = { ++ /* .force_btgt = -1, */ ++ .flags = AuWrDir_ADD_ENTRY ++ }; ++ ++ a->src_btop = au_dbtop(a->src_dentry); ++ a->dst_btop = au_dbtop(a->dst_dentry); ++ if (au_ftest_ren(a->auren_flags, ISDIR_SRC) ++ || au_ftest_ren(a->auren_flags, ISDIR_DST)) ++ au_fset_wrdir(wr_dir_args.flags, ISDIR); ++ wr_dir_args.force_btgt = a->src_btop; ++ if (a->dst_inode && a->dst_btop < a->src_btop) ++ wr_dir_args.force_btgt = a->dst_btop; ++ wr_dir_args.force_btgt = au_wbr(a->dst_dentry, wr_dir_args.force_btgt); ++ err = au_wr_dir(a->dst_dentry, a->src_dentry, &wr_dir_args); ++ a->btgt = err; ++ if (a->exchange) ++ au_update_dbtop(a->dst_dentry); ++ ++ return err; ++} ++ ++static void au_ren_dt(struct au_ren_args *a) ++{ ++ a->h_path.dentry = a->src_h_parent; ++ au_dtime_store(a->src_dt + AuPARENT, a->src_parent, &a->h_path); ++ if (!au_ftest_ren(a->auren_flags, ISSAMEDIR)) { ++ a->h_path.dentry = a->dst_h_parent; ++ au_dtime_store(a->dst_dt + AuPARENT, a->dst_parent, &a->h_path); ++ } ++ ++ au_fclr_ren(a->auren_flags, DT_DSTDIR); ++ if (!au_ftest_ren(a->auren_flags, ISDIR_SRC) ++ && !a->exchange) ++ return; ++ ++ a->h_path.dentry = a->src_h_dentry; ++ au_dtime_store(a->src_dt + AuCHILD, a->src_dentry, &a->h_path); ++ if (d_is_positive(a->dst_h_dentry)) { ++ au_fset_ren(a->auren_flags, DT_DSTDIR); ++ a->h_path.dentry = a->dst_h_dentry; ++ au_dtime_store(a->dst_dt + AuCHILD, a->dst_dentry, &a->h_path); ++ } ++} ++ ++static void au_ren_rev_dt(int err, struct au_ren_args *a) ++{ ++ struct dentry *h_d; ++ struct inode *h_inode; ++ ++ au_dtime_revert(a->src_dt + AuPARENT); ++ if (!au_ftest_ren(a->auren_flags, ISSAMEDIR)) ++ au_dtime_revert(a->dst_dt + AuPARENT); ++ ++ if (au_ftest_ren(a->auren_flags, ISDIR_SRC) && err != -EIO) { ++ h_d = a->src_dt[AuCHILD].dt_h_path.dentry; ++ h_inode = d_inode(h_d); ++ inode_lock_nested(h_inode, AuLsc_I_CHILD); ++ au_dtime_revert(a->src_dt + AuCHILD); ++ inode_unlock(h_inode); ++ ++ if (au_ftest_ren(a->auren_flags, DT_DSTDIR)) { ++ h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; ++ h_inode = d_inode(h_d); ++ inode_lock_nested(h_inode, AuLsc_I_CHILD); ++ au_dtime_revert(a->dst_dt + AuCHILD); ++ inode_unlock(h_inode); ++ } ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int aufs_rename(struct user_namespace *userns, ++ struct inode *_src_dir, struct dentry *_src_dentry, ++ struct inode *_dst_dir, struct dentry *_dst_dentry, ++ unsigned int _flags) ++{ ++ int err, lock_flags; ++ void *rev; ++ /* reduce stack space */ ++ struct au_ren_args *a; ++ struct au_pin pin; ++ ++ AuDbg("%pd, %pd, 0x%x\n", _src_dentry, _dst_dentry, _flags); ++ IMustLock(_src_dir); ++ IMustLock(_dst_dir); ++ ++ err = -EINVAL; ++ if (unlikely(_flags & RENAME_WHITEOUT)) ++ goto out; ++ ++ err = -ENOMEM; ++ BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); ++ a = kzalloc(sizeof(*a), GFP_NOFS); ++ if (unlikely(!a)) ++ goto out; ++ ++ a->flags = _flags; ++ BUILD_BUG_ON(sizeof(a->exchange) == sizeof(u8) ++ && RENAME_EXCHANGE > U8_MAX); ++ a->exchange = _flags & RENAME_EXCHANGE; ++ a->src_dir = _src_dir; ++ a->src_dentry = _src_dentry; ++ a->src_inode = NULL; ++ if (d_really_is_positive(a->src_dentry)) ++ a->src_inode = d_inode(a->src_dentry); ++ a->src_parent = a->src_dentry->d_parent; /* dir inode is locked */ ++ a->dst_dir = _dst_dir; ++ a->dst_dentry = _dst_dentry; ++ a->dst_inode = NULL; ++ if (d_really_is_positive(a->dst_dentry)) ++ a->dst_inode = d_inode(a->dst_dentry); ++ a->dst_parent = a->dst_dentry->d_parent; /* dir inode is locked */ ++ if (a->dst_inode) { ++ /* ++ * if EXCHANGE && src is non-dir && dst is dir, ++ * dst is not locked. ++ */ ++ /* IMustLock(a->dst_inode); */ ++ au_igrab(a->dst_inode); ++ } ++ ++ err = -ENOTDIR; ++ lock_flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; ++ if (d_is_dir(a->src_dentry)) { ++ au_fset_ren(a->auren_flags, ISDIR_SRC); ++ if (unlikely(!a->exchange ++ && d_really_is_positive(a->dst_dentry) ++ && !d_is_dir(a->dst_dentry))) ++ goto out_free; ++ lock_flags |= AuLock_DIRS; ++ } ++ if (a->dst_inode && d_is_dir(a->dst_dentry)) { ++ au_fset_ren(a->auren_flags, ISDIR_DST); ++ if (unlikely(!a->exchange ++ && d_really_is_positive(a->src_dentry) ++ && !d_is_dir(a->src_dentry))) ++ goto out_free; ++ lock_flags |= AuLock_DIRS; ++ } ++ err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, ++ lock_flags); ++ if (unlikely(err)) ++ goto out_free; ++ ++ err = au_d_hashed_positive(a->src_dentry); ++ if (unlikely(err)) ++ goto out_unlock; ++ err = -ENOENT; ++ if (a->dst_inode) { ++ /* ++ * If it is a dir, VFS unhash it before this ++ * function. It means we cannot rely upon d_unhashed(). ++ */ ++ if (unlikely(!a->dst_inode->i_nlink)) ++ goto out_unlock; ++ if (!au_ftest_ren(a->auren_flags, ISDIR_DST)) { ++ err = au_d_hashed_positive(a->dst_dentry); ++ if (unlikely(err && !a->exchange)) ++ goto out_unlock; ++ } else if (unlikely(IS_DEADDIR(a->dst_inode))) ++ goto out_unlock; ++ } else if (unlikely(d_unhashed(a->dst_dentry))) ++ goto out_unlock; ++ ++ /* ++ * is it possible? ++ * yes, it happened (in linux-3.3-rcN) but I don't know why. ++ * there may exist a problem somewhere else. ++ */ ++ err = -EINVAL; ++ if (unlikely(d_inode(a->dst_parent) == d_inode(a->src_dentry))) ++ goto out_unlock; ++ ++ au_fset_ren(a->auren_flags, ISSAMEDIR); /* temporary */ ++ di_write_lock_parent(a->dst_parent); ++ ++ /* which branch we process */ ++ err = au_ren_wbr(a); ++ if (unlikely(err < 0)) ++ goto out_parent; ++ a->br = au_sbr(a->dst_dentry->d_sb, a->btgt); ++ a->h_path.mnt = au_br_mnt(a->br); ++ ++ /* are they available to be renamed */ ++ err = au_ren_may_dir(a); ++ if (unlikely(err)) ++ goto out_children; ++ ++ /* prepare the writable parent dir on the same branch */ ++ if (a->dst_btop == a->btgt) { ++ au_fset_ren(a->auren_flags, WHDST); ++ } else { ++ err = au_cpup_dirs(a->dst_dentry, a->btgt); ++ if (unlikely(err)) ++ goto out_children; ++ } ++ ++ err = 0; ++ if (!a->exchange) { ++ if (a->src_dir != a->dst_dir) { ++ /* ++ * this temporary unlock is safe, ++ * because both dir->i_mutex are locked. ++ */ ++ di_write_unlock(a->dst_parent); ++ di_write_lock_parent(a->src_parent); ++ err = au_wr_dir_need_wh(a->src_dentry, ++ au_ftest_ren(a->auren_flags, ++ ISDIR_SRC), ++ &a->btgt); ++ di_write_unlock(a->src_parent); ++ di_write_lock2_parent(a->src_parent, a->dst_parent, ++ /*isdir*/1); ++ au_fclr_ren(a->auren_flags, ISSAMEDIR); ++ } else ++ err = au_wr_dir_need_wh(a->src_dentry, ++ au_ftest_ren(a->auren_flags, ++ ISDIR_SRC), ++ &a->btgt); ++ } ++ if (unlikely(err < 0)) ++ goto out_children; ++ if (err) ++ au_fset_ren(a->auren_flags, WHSRC); ++ ++ /* cpup src */ ++ if (a->src_btop != a->btgt) { ++ err = au_pin(&pin, a->src_dentry, a->btgt, ++ au_opt_udba(a->src_dentry->d_sb), ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (!err) { ++ struct au_cp_generic cpg = { ++ .dentry = a->src_dentry, ++ .bdst = a->btgt, ++ .bsrc = a->src_btop, ++ .len = -1, ++ .pin = &pin, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN ++ }; ++ AuDebugOn(au_dbtop(a->src_dentry) != a->src_btop); ++ err = au_sio_cpup_simple(&cpg); ++ au_unpin(&pin); ++ } ++ if (unlikely(err)) ++ goto out_children; ++ a->src_btop = a->btgt; ++ a->src_h_dentry = au_h_dptr(a->src_dentry, a->btgt); ++ if (!a->exchange) ++ au_fset_ren(a->auren_flags, WHSRC); ++ } ++ ++ /* cpup dst */ ++ if (a->exchange && a->dst_inode ++ && a->dst_btop != a->btgt) { ++ err = au_pin(&pin, a->dst_dentry, a->btgt, ++ au_opt_udba(a->dst_dentry->d_sb), ++ AuPin_DI_LOCKED | AuPin_MNT_WRITE); ++ if (!err) { ++ struct au_cp_generic cpg = { ++ .dentry = a->dst_dentry, ++ .bdst = a->btgt, ++ .bsrc = a->dst_btop, ++ .len = -1, ++ .pin = &pin, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN ++ }; ++ err = au_sio_cpup_simple(&cpg); ++ au_unpin(&pin); ++ } ++ if (unlikely(err)) ++ goto out_children; ++ a->dst_btop = a->btgt; ++ a->dst_h_dentry = au_h_dptr(a->dst_dentry, a->btgt); ++ } ++ ++ /* lock them all */ ++ err = au_ren_lock(a); ++ if (unlikely(err)) ++ /* leave the copied-up one */ ++ goto out_children; ++ ++ if (!a->exchange) { ++ if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) ++ err = au_may_ren(a); ++ else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN)) ++ err = -ENAMETOOLONG; ++ if (unlikely(err)) ++ goto out_hdir; ++ } ++ ++ /* store timestamps to be revertible */ ++ au_ren_dt(a); ++ ++ /* store dirren info */ ++ if (au_ftest_ren(a->auren_flags, DIRREN)) { ++ err = au_dr_rename(a->src_dentry, a->btgt, ++ &a->dst_dentry->d_name, &rev); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ goto out_dt; ++ } ++ ++ /* here we go */ ++ err = do_rename(a); ++ if (unlikely(err)) ++ goto out_dirren; ++ ++ if (au_ftest_ren(a->auren_flags, DIRREN)) ++ au_dr_rename_fin(a->src_dentry, a->btgt, rev); ++ ++ /* update dir attributes */ ++ au_ren_refresh_dir(a); ++ ++ /* dput/iput all lower dentries */ ++ au_ren_refresh(a); ++ ++ goto out_hdir; /* success */ ++ ++out_dirren: ++ if (au_ftest_ren(a->auren_flags, DIRREN)) ++ au_dr_rename_rev(a->src_dentry, a->btgt, rev); ++out_dt: ++ au_ren_rev_dt(err, a); ++out_hdir: ++ au_ren_unlock(a); ++out_children: ++ au_nhash_wh_free(&a->whlist); ++ if (err && a->dst_inode && a->dst_btop != a->btgt) { ++ AuDbg("btop %d, btgt %d\n", a->dst_btop, a->btgt); ++ au_set_h_dptr(a->dst_dentry, a->btgt, NULL); ++ au_set_dbtop(a->dst_dentry, a->dst_btop); ++ } ++out_parent: ++ if (!err) { ++ if (d_unhashed(a->src_dentry)) ++ au_fset_ren(a->auren_flags, DROPPED_SRC); ++ if (d_unhashed(a->dst_dentry)) ++ au_fset_ren(a->auren_flags, DROPPED_DST); ++ if (!a->exchange) ++ d_move(a->src_dentry, a->dst_dentry); ++ else { ++ d_exchange(a->src_dentry, a->dst_dentry); ++ if (au_ftest_ren(a->auren_flags, DROPPED_DST)) ++ d_drop(a->dst_dentry); ++ } ++ if (au_ftest_ren(a->auren_flags, DROPPED_SRC)) ++ d_drop(a->src_dentry); ++ } else { ++ au_update_dbtop(a->dst_dentry); ++ if (!a->dst_inode) ++ d_drop(a->dst_dentry); ++ } ++ if (au_ftest_ren(a->auren_flags, ISSAMEDIR)) ++ di_write_unlock(a->dst_parent); ++ else ++ di_write_unlock2(a->src_parent, a->dst_parent); ++out_unlock: ++ aufs_read_and_write_unlock2(a->dst_dentry, a->src_dentry); ++out_free: ++ iput(a->dst_inode); ++ if (a->thargs) ++ au_whtmp_rmdir_free(a->thargs); ++ au_kfree_rcu(a); ++out: ++ AuTraceErr(err); ++ return err; ++} +diff -Naur null/fs/aufs/Kconfig linux-5.15.36/fs/aufs/Kconfig +--- /dev/null ++++ linux-5.15.36/fs/aufs/Kconfig 2022-05-10 16:51:39.866744220 +0300 +@@ -0,0 +1,199 @@ ++# SPDX-License-Identifier: GPL-2.0 ++config AUFS_FS ++ tristate "Aufs (Advanced multi layered unification filesystem) support" ++ help ++ Aufs is a stackable unification filesystem such as Unionfs, ++ which unifies several directories and provides a merged single ++ directory. ++ In the early days, aufs was entirely re-designed and ++ re-implemented Unionfs Version 1.x series. Introducing many ++ original ideas, approaches and improvements, it becomes totally ++ different from Unionfs while keeping the basic features. ++ ++if AUFS_FS ++choice ++ prompt "Maximum number of branches" ++ default AUFS_BRANCH_MAX_127 ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_127 ++ bool "127" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_511 ++ bool "511" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_1023 ++ bool "1023" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++config AUFS_BRANCH_MAX_32767 ++ bool "32767" ++ help ++ Specifies the maximum number of branches (or member directories) ++ in a single aufs. The larger value consumes more system ++ resources and has a minor impact to performance. ++endchoice ++ ++config AUFS_SBILIST ++ bool ++ depends on AUFS_MAGIC_SYSRQ || PROC_FS ++ default y ++ help ++ Automatic configuration for internal use. ++ When aufs supports Magic SysRq or /proc, enabled automatically. ++ ++config AUFS_HNOTIFY ++ bool "Detect direct branch access (bypassing aufs)" ++ help ++ If you want to modify files on branches directly, eg. bypassing aufs, ++ and want aufs to detect the changes of them fully, then enable this ++ option and use 'udba=notify' mount option. ++ Currently there is only one available configuration, "fsnotify". ++ It will have a negative impact to the performance. ++ See detail in aufs.5. ++ ++choice ++ prompt "method" if AUFS_HNOTIFY ++ default AUFS_HFSNOTIFY ++config AUFS_HFSNOTIFY ++ bool "fsnotify" ++ select FSNOTIFY ++endchoice ++ ++config AUFS_EXPORT ++ bool "NFS-exportable aufs" ++ depends on EXPORTFS ++ help ++ If you want to export your mounted aufs via NFS, then enable this ++ option. There are several requirements for this configuration. ++ See detail in aufs.5. ++ ++config AUFS_INO_T_64 ++ bool ++ depends on AUFS_EXPORT ++ depends on 64BIT && !(ALPHA || S390) ++ default y ++ help ++ Automatic configuration for internal use. ++ /* typedef unsigned long/int __kernel_ino_t */ ++ /* alpha and s390x are int */ ++ ++config AUFS_XATTR ++ bool "support for XATTR/EA (including Security Labels)" ++ help ++ If your branch fs supports XATTR/EA and you want to make them ++ available in aufs too, then enable this opsion and specify the ++ branch attributes for EA. ++ See detail in aufs.5. ++ ++config AUFS_FHSM ++ bool "File-based Hierarchical Storage Management" ++ help ++ Hierarchical Storage Management (or HSM) is a well-known feature ++ in the storage world. Aufs provides this feature as file-based. ++ with multiple branches. ++ These multiple branches are prioritized, ie. the topmost one ++ should be the fastest drive and be used heavily. ++ ++config AUFS_RDU ++ bool "Readdir in userspace" ++ help ++ Aufs has two methods to provide a merged view for a directory, ++ by a user-space library and by kernel-space natively. The latter ++ is always enabled but sometimes large and slow. ++ If you enable this option, install the library in aufs2-util ++ package, and set some environment variables for your readdir(3), ++ then the work will be handled in user-space which generally ++ shows better performance in most cases. ++ See detail in aufs.5. ++ ++config AUFS_DIRREN ++ bool "Workaround for rename(2)-ing a directory" ++ help ++ By default, aufs returns EXDEV error in renameing a dir who has ++ his child on the lower branch, since it is a bad idea to issue ++ rename(2) internally for every lower branch. But user may not ++ accept this behaviour. So here is a workaround to allow such ++ rename(2) and store some extra infromation on the writable ++ branch. Obviously this costs high (and I don't like it). ++ To use this feature, you need to enable this configuration AND ++ to specify the mount option `dirren.' ++ See details in aufs.5 and the design documents. ++ ++config AUFS_SHWH ++ bool "Show whiteouts" ++ help ++ If you want to make the whiteouts in aufs visible, then enable ++ this option and specify 'shwh' mount option. Although it may ++ sounds like philosophy or something, but in technically it ++ simply shows the name of whiteout with keeping its behaviour. ++ ++config AUFS_BR_RAMFS ++ bool "Ramfs (initramfs/rootfs) as an aufs branch" ++ help ++ If you want to use ramfs as an aufs branch fs, then enable this ++ option. Generally tmpfs is recommended. ++ Aufs prohibited them to be a branch fs by default, because ++ initramfs becomes unusable after switch_root or something ++ generally. If you sets initramfs as an aufs branch and boot your ++ system by switch_root, you will meet a problem easily since the ++ files in initramfs may be inaccessible. ++ Unless you are going to use ramfs as an aufs branch fs without ++ switch_root or something, leave it N. ++ ++config AUFS_BR_FUSE ++ bool "Fuse fs as an aufs branch" ++ depends on FUSE_FS ++ select AUFS_POLL ++ help ++ If you want to use fuse-based userspace filesystem as an aufs ++ branch fs, then enable this option. ++ It implements the internal poll(2) operation which is ++ implemented by fuse only (curretnly). ++ ++config AUFS_POLL ++ bool ++ help ++ Automatic configuration for internal use. ++ ++config AUFS_BR_HFSPLUS ++ bool "Hfsplus as an aufs branch" ++ depends on HFSPLUS_FS ++ default y ++ help ++ If you want to use hfsplus fs as an aufs branch fs, then enable ++ this option. This option introduces a small overhead at ++ copying-up a file on hfsplus. ++ ++config AUFS_BDEV_LOOP ++ bool ++ depends on BLK_DEV_LOOP ++ default y ++ help ++ Automatic configuration for internal use. ++ Convert =[ym] into =y. ++ ++config AUFS_DEBUG ++ bool "Debug aufs" ++ help ++ Enable this to compile aufs internal debug code. ++ It will have a negative impact to the performance. ++ ++config AUFS_MAGIC_SYSRQ ++ bool ++ depends on AUFS_DEBUG && MAGIC_SYSRQ ++ default y ++ help ++ Automatic configuration for internal use. ++ When aufs supports Magic SysRq, enabled automatically. ++endif +diff -Naur null/fs/aufs/lcnt.h linux-5.15.36/fs/aufs/lcnt.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/lcnt.h 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,186 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2018-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * simple long counter wrapper ++ */ ++ ++#ifndef __AUFS_LCNT_H__ ++#define __AUFS_LCNT_H__ ++ ++#ifdef __KERNEL__ ++ ++#include "debug.h" ++ ++#define AuLCntATOMIC 1 ++#define AuLCntPCPUCNT 2 ++/* ++ * why does percpu_refcount require extra synchronize_rcu()s in ++ * au_br_do_free() ++ */ ++#define AuLCntPCPUREF 3 ++ ++/* #define AuLCntChosen AuLCntATOMIC */ ++#define AuLCntChosen AuLCntPCPUCNT ++/* #define AuLCntChosen AuLCntPCPUREF */ ++ ++#if AuLCntChosen == AuLCntATOMIC ++#include ++ ++typedef atomic_long_t au_lcnt_t; ++ ++static inline int au_lcnt_init(au_lcnt_t *cnt, void *release __maybe_unused) ++{ ++ atomic_long_set(cnt, 0); ++ return 0; ++} ++ ++static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) ++{ ++ /* empty */ ++} ++ ++static inline void au_lcnt_fin(au_lcnt_t *cnt __maybe_unused, ++ int do_sync __maybe_unused) ++{ ++ /* empty */ ++} ++ ++static inline void au_lcnt_inc(au_lcnt_t *cnt) ++{ ++ atomic_long_inc(cnt); ++} ++ ++static inline void au_lcnt_dec(au_lcnt_t *cnt) ++{ ++ atomic_long_dec(cnt); ++} ++ ++static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev __maybe_unused) ++{ ++ return atomic_long_read(cnt); ++} ++#endif ++ ++#if AuLCntChosen == AuLCntPCPUCNT ++#include ++ ++typedef struct percpu_counter au_lcnt_t; ++ ++static inline int au_lcnt_init(au_lcnt_t *cnt, void *release __maybe_unused) ++{ ++ return percpu_counter_init(cnt, 0, GFP_NOFS); ++} ++ ++static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) ++{ ++ /* empty */ ++} ++ ++static inline void au_lcnt_fin(au_lcnt_t *cnt, int do_sync __maybe_unused) ++{ ++ percpu_counter_destroy(cnt); ++} ++ ++static inline void au_lcnt_inc(au_lcnt_t *cnt) ++{ ++ percpu_counter_inc(cnt); ++} ++ ++static inline void au_lcnt_dec(au_lcnt_t *cnt) ++{ ++ percpu_counter_dec(cnt); ++} ++ ++static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev __maybe_unused) ++{ ++ s64 n; ++ ++ n = percpu_counter_sum(cnt); ++ BUG_ON(n < 0); ++ if (LONG_MAX != LLONG_MAX ++ && n > LONG_MAX) ++ AuWarn1("%s\n", "wrap-around"); ++ ++ return n; ++} ++#endif ++ ++#if AuLCntChosen == AuLCntPCPUREF ++#include ++ ++typedef struct percpu_ref au_lcnt_t; ++ ++static inline int au_lcnt_init(au_lcnt_t *cnt, percpu_ref_func_t *release) ++{ ++ if (!release) ++ release = percpu_ref_exit; ++ return percpu_ref_init(cnt, release, /*percpu mode*/0, GFP_NOFS); ++} ++ ++static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) ++{ ++ synchronize_rcu(); ++} ++ ++static inline void au_lcnt_fin(au_lcnt_t *cnt, int do_sync) ++{ ++ percpu_ref_kill(cnt); ++ if (do_sync) ++ au_lcnt_wait_for_fin(cnt); ++} ++ ++static inline void au_lcnt_inc(au_lcnt_t *cnt) ++{ ++ percpu_ref_get(cnt); ++} ++ ++static inline void au_lcnt_dec(au_lcnt_t *cnt) ++{ ++ percpu_ref_put(cnt); ++} ++ ++/* ++ * avoid calling this func as possible. ++ */ ++static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev) ++{ ++ long l; ++ ++ percpu_ref_switch_to_atomic_sync(cnt); ++ l = atomic_long_read(&cnt->count); ++ if (do_rev) ++ percpu_ref_switch_to_percpu(cnt); ++ ++ /* percpu_ref is initialized by 1 instead of 0 */ ++ return l - 1; ++} ++#endif ++ ++#ifdef CONFIG_AUFS_DEBUG ++#define AuLCntZero(val) do { \ ++ long l = val; \ ++ if (l) \ ++ AuDbg("%s = %ld\n", #val, l); \ ++} while (0) ++#else ++#define AuLCntZero(val) do {} while (0) ++#endif ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_LCNT_H__ */ +diff -Naur null/fs/aufs/loop.c linux-5.15.36/fs/aufs/loop.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/loop.c 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,148 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * support for loopback block device as a branch ++ */ ++ ++#include "aufs.h" ++ ++/* added into drivers/block/loop.c */ ++static struct file *(*backing_file_func)(struct super_block *sb); ++ ++/* ++ * test if two lower dentries have overlapping branches. ++ */ ++int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) ++{ ++ struct super_block *h_sb; ++ struct file *backing_file; ++ ++ if (unlikely(!backing_file_func)) { ++ /* don't load "loop" module here */ ++ backing_file_func = symbol_get(loop_backing_file); ++ if (unlikely(!backing_file_func)) ++ /* "loop" module is not loaded */ ++ return 0; ++ } ++ ++ h_sb = h_adding->d_sb; ++ backing_file = backing_file_func(h_sb); ++ if (!backing_file) ++ return 0; ++ ++ h_adding = backing_file->f_path.dentry; ++ /* ++ * h_adding can be local NFS. ++ * in this case aufs cannot detect the loop. ++ */ ++ if (unlikely(h_adding->d_sb == sb)) ++ return 1; ++ return !!au_test_subdir(h_adding, sb->s_root); ++} ++ ++/* true if a kernel thread named 'loop[0-9].*' accesses a file */ ++int au_test_loopback_kthread(void) ++{ ++ int ret; ++ struct task_struct *tsk = current; ++ char c, comm[sizeof(tsk->comm)]; ++ ++ ret = 0; ++ if (tsk->flags & PF_KTHREAD) { ++ get_task_comm(comm, tsk); ++ c = comm[4]; ++ ret = ('0' <= c && c <= '9' ++ && !strncmp(comm, "loop", 4)); ++ } ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define au_warn_loopback_step 16 ++static int au_warn_loopback_nelem = au_warn_loopback_step; ++static unsigned long *au_warn_loopback_array; ++ ++void au_warn_loopback(struct super_block *h_sb) ++{ ++ int i, new_nelem; ++ unsigned long *a, magic; ++ static DEFINE_SPINLOCK(spin); ++ ++ magic = h_sb->s_magic; ++ spin_lock(&spin); ++ a = au_warn_loopback_array; ++ for (i = 0; i < au_warn_loopback_nelem && *a; i++) ++ if (a[i] == magic) { ++ spin_unlock(&spin); ++ return; ++ } ++ ++ /* h_sb is new to us, print it */ ++ if (i < au_warn_loopback_nelem) { ++ a[i] = magic; ++ goto pr; ++ } ++ ++ /* expand the array */ ++ new_nelem = au_warn_loopback_nelem + au_warn_loopback_step; ++ a = au_kzrealloc(au_warn_loopback_array, ++ au_warn_loopback_nelem * sizeof(unsigned long), ++ new_nelem * sizeof(unsigned long), GFP_ATOMIC, ++ /*may_shrink*/0); ++ if (a) { ++ au_warn_loopback_nelem = new_nelem; ++ au_warn_loopback_array = a; ++ a[i] = magic; ++ goto pr; ++ } ++ ++ spin_unlock(&spin); ++ AuWarn1("realloc failed, ignored\n"); ++ return; ++ ++pr: ++ spin_unlock(&spin); ++ pr_warn("you may want to try another patch for loopback file " ++ "on %s(0x%lx) branch\n", au_sbtype(h_sb), magic); ++} ++ ++int au_loopback_init(void) ++{ ++ int err; ++ struct super_block *sb __maybe_unused; ++ ++ BUILD_BUG_ON(sizeof(sb->s_magic) != sizeof(*au_warn_loopback_array)); ++ ++ err = 0; ++ au_warn_loopback_array = kcalloc(au_warn_loopback_step, ++ sizeof(unsigned long), GFP_NOFS); ++ if (unlikely(!au_warn_loopback_array)) ++ err = -ENOMEM; ++ ++ return err; ++} ++ ++void au_loopback_fin(void) ++{ ++ if (backing_file_func) ++ symbol_put(loop_backing_file); ++ au_kfree_try_rcu(au_warn_loopback_array); ++} +diff -Naur null/fs/aufs/loop.h linux-5.15.36/fs/aufs/loop.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/loop.h 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,55 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * support for loopback mount as a branch ++ */ ++ ++#ifndef __AUFS_LOOP_H__ ++#define __AUFS_LOOP_H__ ++ ++#ifdef __KERNEL__ ++ ++struct dentry; ++struct super_block; ++ ++#ifdef CONFIG_AUFS_BDEV_LOOP ++/* drivers/block/loop.c */ ++struct file *loop_backing_file(struct super_block *sb); ++ ++/* loop.c */ ++int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding); ++int au_test_loopback_kthread(void); ++void au_warn_loopback(struct super_block *h_sb); ++ ++int au_loopback_init(void); ++void au_loopback_fin(void); ++#else ++AuStub(struct file *, loop_backing_file, return NULL, struct super_block *sb) ++ ++AuStubInt0(au_test_loopback_overlap, struct super_block *sb, ++ struct dentry *h_adding) ++AuStubInt0(au_test_loopback_kthread, void) ++AuStubVoid(au_warn_loopback, struct super_block *h_sb) ++ ++AuStubInt0(au_loopback_init, void) ++AuStubVoid(au_loopback_fin, void) ++#endif /* BLK_DEV_LOOP */ ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_LOOP_H__ */ +diff -Naur null/fs/aufs/magic.mk linux-5.15.36/fs/aufs/magic.mk +--- /dev/null ++++ linux-5.15.36/fs/aufs/magic.mk 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,31 @@ ++# SPDX-License-Identifier: GPL-2.0 ++ ++# defined in ${srctree}/fs/fuse/inode.c ++# tristate ++ifdef CONFIG_FUSE_FS ++ccflags-y += -DFUSE_SUPER_MAGIC=0x65735546 ++endif ++ ++# defined in ${srctree}/fs/xfs/xfs_sb.h ++# tristate ++ifdef CONFIG_XFS_FS ++ccflags-y += -DXFS_SB_MAGIC=0x58465342 ++endif ++ ++# defined in ${srctree}/fs/configfs/mount.c ++# tristate ++ifdef CONFIG_CONFIGFS_FS ++ccflags-y += -DCONFIGFS_MAGIC=0x62656570 ++endif ++ ++# defined in ${srctree}/fs/ubifs/ubifs.h ++# tristate ++ifdef CONFIG_UBIFS_FS ++ccflags-y += -DUBIFS_SUPER_MAGIC=0x24051905 ++endif ++ ++# defined in ${srctree}/fs/hfsplus/hfsplus_raw.h ++# tristate ++ifdef CONFIG_HFSPLUS_FS ++ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b ++endif +diff -Naur null/fs/aufs/Makefile linux-5.15.36/fs/aufs/Makefile +--- /dev/null ++++ linux-5.15.36/fs/aufs/Makefile 2022-05-10 16:51:39.866744220 +0300 +@@ -0,0 +1,46 @@ ++# SPDX-License-Identifier: GPL-2.0 ++ ++include ${src}/magic.mk ++ifeq (${CONFIG_AUFS_FS},m) ++include ${src}/conf.mk ++endif ++-include ${src}/priv_def.mk ++ ++# cf. include/linux/kernel.h ++# enable pr_debug ++ccflags-y += -DDEBUG ++# sparse requires the full pathname ++ifdef M ++ccflags-y += -include ${M}/../../include/uapi/linux/aufs_type.h ++else ++ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h ++endif ++ ++obj-$(CONFIG_AUFS_FS) += aufs.o ++aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o fsctx.o \ ++ wkq.o vfsub.o dcsub.o \ ++ cpup.o whout.o wbr_policy.o \ ++ dinfo.o dentry.o \ ++ dynop.o \ ++ finfo.o file.o f_op.o \ ++ dir.o vdir.o \ ++ iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ ++ mvdown.o ioctl.o ++ ++# all are boolean ++aufs-$(CONFIG_PROC_FS) += procfs.o plink.o ++aufs-$(CONFIG_SYSFS) += sysfs.o ++aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o ++aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o ++aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o ++aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o ++aufs-$(CONFIG_AUFS_EXPORT) += export.o ++aufs-$(CONFIG_AUFS_XATTR) += xattr.o ++aufs-$(CONFIG_FS_POSIX_ACL) += posix_acl.o ++aufs-$(CONFIG_AUFS_DIRREN) += dirren.o ++aufs-$(CONFIG_AUFS_FHSM) += fhsm.o ++aufs-$(CONFIG_AUFS_POLL) += poll.o ++aufs-$(CONFIG_AUFS_RDU) += rdu.o ++aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o ++aufs-$(CONFIG_AUFS_DEBUG) += debug.o ++aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o +diff -Naur null/fs/aufs/module.c linux-5.15.36/fs/aufs/module.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/module.c 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,273 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * module global variables and operations ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++/* shrinkable realloc */ ++void *au_krealloc(void *p, unsigned int new_sz, gfp_t gfp, int may_shrink) ++{ ++ size_t sz; ++ int diff; ++ ++ sz = 0; ++ diff = -1; ++ if (p) { ++#if 0 /* unused */ ++ if (!new_sz) { ++ au_kfree_rcu(p); ++ p = NULL; ++ goto out; ++ } ++#else ++ AuDebugOn(!new_sz); ++#endif ++ sz = ksize(p); ++ diff = au_kmidx_sub(sz, new_sz); ++ } ++ if (sz && !diff) ++ goto out; ++ ++ if (sz < new_sz) ++ /* expand or SLOB */ ++ p = krealloc(p, new_sz, gfp); ++ else if (new_sz < sz && may_shrink) { ++ /* shrink */ ++ void *q; ++ ++ q = kmalloc(new_sz, gfp); ++ if (q) { ++ if (p) { ++ memcpy(q, p, new_sz); ++ au_kfree_try_rcu(p); ++ } ++ p = q; ++ } else ++ p = NULL; ++ } ++ ++out: ++ return p; ++} ++ ++void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp, ++ int may_shrink) ++{ ++ p = au_krealloc(p, new_sz, gfp, may_shrink); ++ if (p && new_sz > nused) ++ memset(p + nused, 0, new_sz - nused); ++ return p; ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * aufs caches ++ */ ++struct kmem_cache *au_cache[AuCache_Last]; ++ ++static void au_cache_fin(void) ++{ ++ int i; ++ ++ /* ++ * Make sure all delayed rcu free inodes are flushed before we ++ * destroy cache. ++ */ ++ rcu_barrier(); ++ ++ /* excluding AuCache_HNOTIFY */ ++ BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); ++ for (i = 0; i < AuCache_HNOTIFY; i++) { ++ kmem_cache_destroy(au_cache[i]); ++ au_cache[i] = NULL; ++ } ++} ++ ++static int __init au_cache_init(void) ++{ ++ au_cache[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); ++ if (au_cache[AuCache_DINFO]) ++ /* SLAB_DESTROY_BY_RCU */ ++ au_cache[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, ++ au_icntnr_init_once); ++ if (au_cache[AuCache_ICNTNR]) ++ au_cache[AuCache_FINFO] = AuCacheCtor(au_finfo, ++ au_fi_init_once); ++ if (au_cache[AuCache_FINFO]) ++ au_cache[AuCache_VDIR] = AuCache(au_vdir); ++ if (au_cache[AuCache_VDIR]) ++ au_cache[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); ++ if (au_cache[AuCache_DEHSTR]) ++ return 0; ++ ++ au_cache_fin(); ++ return -ENOMEM; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_dir_roflags; ++ ++#ifdef CONFIG_AUFS_SBILIST ++/* ++ * iterate_supers_type() doesn't protect us from ++ * remounting (branch management) ++ */ ++struct hlist_bl_head au_sbilist; ++#endif ++ ++/* ++ * functions for module interface. ++ */ ++MODULE_LICENSE("GPL"); ++/* MODULE_LICENSE("GPL v2"); */ ++MODULE_AUTHOR("Junjiro R. Okajima "); ++MODULE_DESCRIPTION(AUFS_NAME ++ " -- Advanced multi layered unification filesystem"); ++MODULE_VERSION(AUFS_VERSION); ++MODULE_ALIAS_FS(AUFS_NAME); ++ ++/* this module parameter has no meaning when SYSFS is disabled */ ++int sysaufs_brs = 1; ++MODULE_PARM_DESC(brs, "use /fs/aufs/si_*/brN"); ++module_param_named(brs, sysaufs_brs, int, 0444); ++ ++/* this module parameter has no meaning when USER_NS is disabled */ ++bool au_userns; ++MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns"); ++module_param_named(allow_userns, au_userns, bool, 0444); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ ++ ++int au_seq_path(struct seq_file *seq, struct path *path) ++{ ++ int err; ++ ++ err = seq_path(seq, path, au_esc_chars); ++ if (err >= 0) ++ err = 0; ++ else ++ err = -ENOMEM; ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int __init aufs_init(void) ++{ ++ int err, i; ++ char *p; ++ ++ p = au_esc_chars; ++ for (i = 1; i <= ' '; i++) ++ *p++ = i; ++ *p++ = '\\'; ++ *p++ = '\x7f'; ++ *p = 0; ++ ++ au_dir_roflags = au_file_roflags(O_DIRECTORY | O_LARGEFILE); ++ ++ memcpy(aufs_iop_nogetattr, aufs_iop, sizeof(aufs_iop)); ++ for (i = 0; i < AuIop_Last; i++) ++ aufs_iop_nogetattr[i].getattr = NULL; ++ ++ memset(au_cache, 0, sizeof(au_cache)); /* including hnotify */ ++ ++ au_sbilist_init(); ++ sysaufs_brs_init(); ++ au_debug_init(); ++ au_dy_init(); ++ err = sysaufs_init(); ++ if (unlikely(err)) ++ goto out; ++ err = dbgaufs_init(); ++ if (unlikely(err)) ++ goto out_sysaufs; ++ err = au_procfs_init(); ++ if (unlikely(err)) ++ goto out_dbgaufs; ++ err = au_wkq_init(); ++ if (unlikely(err)) ++ goto out_procfs; ++ err = au_loopback_init(); ++ if (unlikely(err)) ++ goto out_wkq; ++ err = au_hnotify_init(); ++ if (unlikely(err)) ++ goto out_loopback; ++ err = au_sysrq_init(); ++ if (unlikely(err)) ++ goto out_hin; ++ err = au_cache_init(); ++ if (unlikely(err)) ++ goto out_sysrq; ++ ++ aufs_fs_type.fs_flags |= au_userns ? FS_USERNS_MOUNT : 0; ++ err = register_filesystem(&aufs_fs_type); ++ if (unlikely(err)) ++ goto out_cache; ++ ++ /* since we define pr_fmt, call printk directly */ ++ printk(KERN_INFO AUFS_NAME " " AUFS_VERSION "\n"); ++ goto out; /* success */ ++ ++out_cache: ++ au_cache_fin(); ++out_sysrq: ++ au_sysrq_fin(); ++out_hin: ++ au_hnotify_fin(); ++out_loopback: ++ au_loopback_fin(); ++out_wkq: ++ au_wkq_fin(); ++out_procfs: ++ au_procfs_fin(); ++out_dbgaufs: ++ dbgaufs_fin(); ++out_sysaufs: ++ sysaufs_fin(); ++ au_dy_fin(); ++out: ++ return err; ++} ++ ++static void __exit aufs_exit(void) ++{ ++ unregister_filesystem(&aufs_fs_type); ++ au_cache_fin(); ++ au_sysrq_fin(); ++ au_hnotify_fin(); ++ au_loopback_fin(); ++ au_wkq_fin(); ++ au_procfs_fin(); ++ dbgaufs_fin(); ++ sysaufs_fin(); ++ au_dy_fin(); ++} ++ ++module_init(aufs_init); ++module_exit(aufs_exit); +diff -Naur null/fs/aufs/module.h linux-5.15.36/fs/aufs/module.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/module.h 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,166 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * module initialization and module-global ++ */ ++ ++#ifndef __AUFS_MODULE_H__ ++#define __AUFS_MODULE_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include "debug.h" ++#include "dentry.h" ++#include "dir.h" ++#include "file.h" ++#include "inode.h" ++ ++struct path; ++struct seq_file; ++ ++/* module parameters */ ++extern int sysaufs_brs; ++extern bool au_userns; ++ ++/* ---------------------------------------------------------------------- */ ++ ++extern int au_dir_roflags; ++ ++void *au_krealloc(void *p, unsigned int new_sz, gfp_t gfp, int may_shrink); ++void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp, ++ int may_shrink); ++ ++/* ++ * Comparing the size of the object with sizeof(struct rcu_head) ++ * case 1: object is always larger ++ * --> au_kfree_rcu() or au_kfree_do_rcu() ++ * case 2: object is always smaller ++ * --> au_kfree_small() ++ * case 3: object can be any size ++ * --> au_kfree_try_rcu() ++ */ ++ ++static inline void au_kfree_do_rcu(const void *p) ++{ ++ struct { ++ struct rcu_head rcu; ++ } *a = (void *)p; ++ ++ kfree_rcu(a, rcu); ++} ++ ++#define au_kfree_rcu(_p) do { \ ++ typeof(_p) p = (_p); \ ++ BUILD_BUG_ON(sizeof(*p) < sizeof(struct rcu_head)); \ ++ if (p) \ ++ au_kfree_do_rcu(p); \ ++ } while (0) ++ ++#define au_kfree_do_sz_test(sz) (sz >= sizeof(struct rcu_head)) ++#define au_kfree_sz_test(p) (p && au_kfree_do_sz_test(ksize(p))) ++ ++static inline void au_kfree_try_rcu(const void *p) ++{ ++ if (!p) ++ return; ++ if (au_kfree_sz_test(p)) ++ au_kfree_do_rcu(p); ++ else ++ kfree(p); ++} ++ ++static inline void au_kfree_small(const void *p) ++{ ++ if (!p) ++ return; ++ AuDebugOn(au_kfree_sz_test(p)); ++ kfree(p); ++} ++ ++static inline int au_kmidx_sub(size_t sz, size_t new_sz) ++{ ++#ifndef CONFIG_SLOB ++ return __kmalloc_index(sz, false) - __kmalloc_index(new_sz, false); ++#else ++ return -1; /* SLOB is untested */ ++#endif ++} ++ ++int au_seq_path(struct seq_file *seq, struct path *path); ++ ++#ifdef CONFIG_PROC_FS ++/* procfs.c */ ++int __init au_procfs_init(void); ++void au_procfs_fin(void); ++#else ++AuStubInt0(au_procfs_init, void); ++AuStubVoid(au_procfs_fin, void); ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* kmem cache */ ++enum { ++ AuCache_DINFO, ++ AuCache_ICNTNR, ++ AuCache_FINFO, ++ AuCache_VDIR, ++ AuCache_DEHSTR, ++ AuCache_HNOTIFY, /* must be last */ ++ AuCache_Last ++}; ++ ++extern struct kmem_cache *au_cache[AuCache_Last]; ++ ++#define AuCacheFlags (SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD) ++#define AuCache(type) KMEM_CACHE(type, AuCacheFlags) ++#define AuCacheCtor(type, ctor) \ ++ kmem_cache_create(#type, sizeof(struct type), \ ++ __alignof__(struct type), AuCacheFlags, ctor) ++ ++#define AuCacheFuncs(name, index) \ ++ static inline struct au_##name *au_cache_alloc_##name(void) \ ++ { return kmem_cache_alloc(au_cache[AuCache_##index], GFP_NOFS); } \ ++ static inline void au_cache_free_##name##_norcu(struct au_##name *p) \ ++ { kmem_cache_free(au_cache[AuCache_##index], p); } \ ++ \ ++ static inline void au_cache_free_##name##_rcu_cb(struct rcu_head *rcu) \ ++ { void *p = rcu; \ ++ p -= offsetof(struct au_##name, rcu); \ ++ kmem_cache_free(au_cache[AuCache_##index], p); } \ ++ static inline void au_cache_free_##name##_rcu(struct au_##name *p) \ ++ { BUILD_BUG_ON(sizeof(struct au_##name) < sizeof(struct rcu_head)); \ ++ call_rcu(&p->rcu, au_cache_free_##name##_rcu_cb); } \ ++ \ ++ static inline void au_cache_free_##name(struct au_##name *p) \ ++ { /* au_cache_free_##name##_norcu(p); */ \ ++ au_cache_free_##name##_rcu(p); } ++ ++AuCacheFuncs(dinfo, DINFO); ++AuCacheFuncs(icntnr, ICNTNR); ++AuCacheFuncs(finfo, FINFO); ++AuCacheFuncs(vdir, VDIR); ++AuCacheFuncs(vdir_dehstr, DEHSTR); ++#ifdef CONFIG_AUFS_HNOTIFY ++AuCacheFuncs(hnotify, HNOTIFY); ++#endif ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_MODULE_H__ */ +diff -Naur null/fs/aufs/mvdown.c linux-5.15.36/fs/aufs/mvdown.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/mvdown.c 2022-05-10 16:51:39.874744219 +0300 +@@ -0,0 +1,706 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2011-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * move-down, opposite of copy-up ++ */ ++ ++#include "aufs.h" ++ ++struct au_mvd_args { ++ struct { ++ struct super_block *h_sb; ++ struct dentry *h_parent; ++ struct au_hinode *hdir; ++ struct inode *h_dir, *h_inode; ++ struct au_pin pin; ++ } info[AUFS_MVDOWN_NARRAY]; ++ ++ struct aufs_mvdown mvdown; ++ struct dentry *dentry, *parent; ++ struct inode *inode, *dir; ++ struct super_block *sb; ++ aufs_bindex_t bopq, bwh, bfound; ++ unsigned char rename_lock; ++}; ++ ++#define mvd_errno mvdown.au_errno ++#define mvd_bsrc mvdown.stbr[AUFS_MVDOWN_UPPER].bindex ++#define mvd_src_brid mvdown.stbr[AUFS_MVDOWN_UPPER].brid ++#define mvd_bdst mvdown.stbr[AUFS_MVDOWN_LOWER].bindex ++#define mvd_dst_brid mvdown.stbr[AUFS_MVDOWN_LOWER].brid ++ ++#define mvd_h_src_sb info[AUFS_MVDOWN_UPPER].h_sb ++#define mvd_h_src_parent info[AUFS_MVDOWN_UPPER].h_parent ++#define mvd_hdir_src info[AUFS_MVDOWN_UPPER].hdir ++#define mvd_h_src_dir info[AUFS_MVDOWN_UPPER].h_dir ++#define mvd_h_src_inode info[AUFS_MVDOWN_UPPER].h_inode ++#define mvd_pin_src info[AUFS_MVDOWN_UPPER].pin ++ ++#define mvd_h_dst_sb info[AUFS_MVDOWN_LOWER].h_sb ++#define mvd_h_dst_parent info[AUFS_MVDOWN_LOWER].h_parent ++#define mvd_hdir_dst info[AUFS_MVDOWN_LOWER].hdir ++#define mvd_h_dst_dir info[AUFS_MVDOWN_LOWER].h_dir ++#define mvd_h_dst_inode info[AUFS_MVDOWN_LOWER].h_inode ++#define mvd_pin_dst info[AUFS_MVDOWN_LOWER].pin ++ ++#define AU_MVD_PR(flag, ...) do { \ ++ if (flag) \ ++ pr_err(__VA_ARGS__); \ ++ } while (0) ++ ++static int find_lower_writable(struct au_mvd_args *a) ++{ ++ struct super_block *sb; ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ ++ sb = a->sb; ++ bindex = a->mvd_bsrc; ++ bbot = au_sbbot(sb); ++ if (a->mvdown.flags & AUFS_MVDOWN_FHSM_LOWER) ++ for (bindex++; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_fhsm(br->br_perm) ++ && !sb_rdonly(au_br_sb(br))) ++ return bindex; ++ } ++ else if (!(a->mvdown.flags & AUFS_MVDOWN_ROLOWER)) ++ for (bindex++; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (!au_br_rdonly(br)) ++ return bindex; ++ } ++ else ++ for (bindex++; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (!sb_rdonly(au_br_sb(br))) { ++ if (au_br_rdonly(br)) ++ a->mvdown.flags ++ |= AUFS_MVDOWN_ROLOWER_R; ++ return bindex; ++ } ++ } ++ ++ return -1; ++} ++ ++/* make the parent dir on bdst */ ++static int au_do_mkdir(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ ++ err = 0; ++ a->mvd_hdir_src = au_hi(a->dir, a->mvd_bsrc); ++ a->mvd_hdir_dst = au_hi(a->dir, a->mvd_bdst); ++ a->mvd_h_src_parent = au_h_dptr(a->parent, a->mvd_bsrc); ++ a->mvd_h_dst_parent = NULL; ++ if (au_dbbot(a->parent) >= a->mvd_bdst) ++ a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); ++ if (!a->mvd_h_dst_parent) { ++ err = au_cpdown_dirs(a->dentry, a->mvd_bdst); ++ if (unlikely(err)) { ++ AU_MVD_PR(dmsg, "cpdown_dirs failed\n"); ++ goto out; ++ } ++ a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* lock them all */ ++static int au_do_lock(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ struct dentry *h_trap; ++ ++ a->mvd_h_src_sb = au_sbr_sb(a->sb, a->mvd_bsrc); ++ a->mvd_h_dst_sb = au_sbr_sb(a->sb, a->mvd_bdst); ++ err = au_pin(&a->mvd_pin_dst, a->dentry, a->mvd_bdst, ++ au_opt_udba(a->sb), ++ AuPin_MNT_WRITE | AuPin_DI_LOCKED); ++ AuTraceErr(err); ++ if (unlikely(err)) { ++ AU_MVD_PR(dmsg, "pin_dst failed\n"); ++ goto out; ++ } ++ ++ if (a->mvd_h_src_sb != a->mvd_h_dst_sb) { ++ a->rename_lock = 0; ++ au_pin_init(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, ++ AuLsc_DI_PARENT, AuLsc_I_PARENT3, ++ au_opt_udba(a->sb), ++ AuPin_MNT_WRITE | AuPin_DI_LOCKED); ++ err = au_do_pin(&a->mvd_pin_src); ++ AuTraceErr(err); ++ a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); ++ if (unlikely(err)) { ++ AU_MVD_PR(dmsg, "pin_src failed\n"); ++ goto out_dst; ++ } ++ goto out; /* success */ ++ } ++ ++ a->rename_lock = 1; ++ au_pin_hdir_unlock(&a->mvd_pin_dst); ++ err = au_pin(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, ++ au_opt_udba(a->sb), ++ AuPin_MNT_WRITE | AuPin_DI_LOCKED); ++ AuTraceErr(err); ++ a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); ++ if (unlikely(err)) { ++ AU_MVD_PR(dmsg, "pin_src failed\n"); ++ au_pin_hdir_lock(&a->mvd_pin_dst); ++ goto out_dst; ++ } ++ au_pin_hdir_unlock(&a->mvd_pin_src); ++ h_trap = vfsub_lock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, ++ a->mvd_h_dst_parent, a->mvd_hdir_dst); ++ if (h_trap) { ++ err = (h_trap != a->mvd_h_src_parent); ++ if (err) ++ err = (h_trap != a->mvd_h_dst_parent); ++ } ++ BUG_ON(err); /* it should never happen */ ++ if (unlikely(a->mvd_h_src_dir != au_pinned_h_dir(&a->mvd_pin_src))) { ++ err = -EBUSY; ++ AuTraceErr(err); ++ vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, ++ a->mvd_h_dst_parent, a->mvd_hdir_dst); ++ au_pin_hdir_lock(&a->mvd_pin_src); ++ au_unpin(&a->mvd_pin_src); ++ au_pin_hdir_lock(&a->mvd_pin_dst); ++ goto out_dst; ++ } ++ goto out; /* success */ ++ ++out_dst: ++ au_unpin(&a->mvd_pin_dst); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static void au_do_unlock(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ if (!a->rename_lock) ++ au_unpin(&a->mvd_pin_src); ++ else { ++ vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, ++ a->mvd_h_dst_parent, a->mvd_hdir_dst); ++ au_pin_hdir_lock(&a->mvd_pin_src); ++ au_unpin(&a->mvd_pin_src); ++ au_pin_hdir_lock(&a->mvd_pin_dst); ++ } ++ au_unpin(&a->mvd_pin_dst); ++} ++ ++/* copy-down the file */ ++static int au_do_cpdown(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ struct au_cp_generic cpg = { ++ .dentry = a->dentry, ++ .bdst = a->mvd_bdst, ++ .bsrc = a->mvd_bsrc, ++ .len = -1, ++ .pin = &a->mvd_pin_dst, ++ .flags = AuCpup_DTIME | AuCpup_HOPEN ++ }; ++ ++ AuDbg("b%d, b%d\n", cpg.bsrc, cpg.bdst); ++ if (a->mvdown.flags & AUFS_MVDOWN_OWLOWER) ++ au_fset_cpup(cpg.flags, OVERWRITE); ++ if (a->mvdown.flags & AUFS_MVDOWN_ROLOWER) ++ au_fset_cpup(cpg.flags, RWDST); ++ err = au_sio_cpdown_simple(&cpg); ++ if (unlikely(err)) ++ AU_MVD_PR(dmsg, "cpdown failed\n"); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * unlink the whiteout on bdst if exist which may be created by UDBA while we ++ * were sleeping ++ */ ++static int au_do_unlink_wh(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ struct path h_path; ++ struct au_branch *br; ++ struct inode *delegated; ++ ++ br = au_sbr(a->sb, a->mvd_bdst); ++ h_path.dentry = au_wh_lkup(a->mvd_h_dst_parent, &a->dentry->d_name, br); ++ err = PTR_ERR(h_path.dentry); ++ if (IS_ERR(h_path.dentry)) { ++ AU_MVD_PR(dmsg, "wh_lkup failed\n"); ++ goto out; ++ } ++ ++ err = 0; ++ if (d_is_positive(h_path.dentry)) { ++ h_path.mnt = au_br_mnt(br); ++ delegated = NULL; ++ err = vfsub_unlink(d_inode(a->mvd_h_dst_parent), &h_path, ++ &delegated, /*force*/0); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ if (unlikely(err)) ++ AU_MVD_PR(dmsg, "wh_unlink failed\n"); ++ } ++ dput(h_path.dentry); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ++ * unlink the topmost h_dentry ++ */ ++static int au_do_unlink(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ struct path h_path; ++ struct inode *delegated; ++ ++ h_path.mnt = au_sbr_mnt(a->sb, a->mvd_bsrc); ++ h_path.dentry = au_h_dptr(a->dentry, a->mvd_bsrc); ++ delegated = NULL; ++ err = vfsub_unlink(a->mvd_h_src_dir, &h_path, &delegated, /*force*/0); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ if (unlikely(err)) ++ AU_MVD_PR(dmsg, "unlink failed\n"); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++/* Since mvdown succeeded, we ignore an error of this function */ ++static void au_do_stfs(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ struct au_branch *br; ++ ++ a->mvdown.flags |= AUFS_MVDOWN_STFS_FAILED; ++ br = au_sbr(a->sb, a->mvd_bsrc); ++ err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_UPPER].stfs); ++ if (!err) { ++ br = au_sbr(a->sb, a->mvd_bdst); ++ a->mvdown.stbr[AUFS_MVDOWN_LOWER].brid = br->br_id; ++ err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_LOWER].stfs); ++ } ++ if (!err) ++ a->mvdown.flags &= ~AUFS_MVDOWN_STFS_FAILED; ++ else ++ AU_MVD_PR(dmsg, "statfs failed (%d), ignored\n", err); ++} ++ ++/* ++ * copy-down the file and unlink the bsrc file. ++ * - unlink the bdst whout if exist ++ * - copy-down the file (with whtmp name and rename) ++ * - unlink the bsrc file ++ */ ++static int au_do_mvdown(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ ++ err = au_do_mkdir(dmsg, a); ++ if (!err) ++ err = au_do_lock(dmsg, a); ++ if (unlikely(err)) ++ goto out; ++ ++ /* ++ * do not revert the activities we made on bdst since they should be ++ * harmless in aufs. ++ */ ++ ++ err = au_do_cpdown(dmsg, a); ++ if (!err) ++ err = au_do_unlink_wh(dmsg, a); ++ if (!err && !(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) ++ err = au_do_unlink(dmsg, a); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ AuDbg("%pd2, 0x%x, %d --> %d\n", ++ a->dentry, a->mvdown.flags, a->mvd_bsrc, a->mvd_bdst); ++ if (find_lower_writable(a) < 0) ++ a->mvdown.flags |= AUFS_MVDOWN_BOTTOM; ++ ++ if (a->mvdown.flags & AUFS_MVDOWN_STFS) ++ au_do_stfs(dmsg, a); ++ ++ /* maintain internal array */ ++ if (!(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) { ++ au_set_h_dptr(a->dentry, a->mvd_bsrc, NULL); ++ au_set_dbtop(a->dentry, a->mvd_bdst); ++ au_set_h_iptr(a->inode, a->mvd_bsrc, NULL, /*flags*/0); ++ au_set_ibtop(a->inode, a->mvd_bdst); ++ } else { ++ /* hide the lower */ ++ au_set_h_dptr(a->dentry, a->mvd_bdst, NULL); ++ au_set_dbbot(a->dentry, a->mvd_bsrc); ++ au_set_h_iptr(a->inode, a->mvd_bdst, NULL, /*flags*/0); ++ au_set_ibbot(a->inode, a->mvd_bsrc); ++ } ++ if (au_dbbot(a->dentry) < a->mvd_bdst) ++ au_set_dbbot(a->dentry, a->mvd_bdst); ++ if (au_ibbot(a->inode) < a->mvd_bdst) ++ au_set_ibbot(a->inode, a->mvd_bdst); ++ ++out_unlock: ++ au_do_unlock(dmsg, a); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* make sure the file is idle */ ++static int au_mvd_args_busy(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err, plinked; ++ ++ err = 0; ++ plinked = !!au_opt_test(au_mntflags(a->sb), PLINK); ++ if (au_dbtop(a->dentry) == a->mvd_bsrc ++ && au_dcount(a->dentry) == 1 ++ && atomic_read(&a->inode->i_count) == 1 ++ /* && a->mvd_h_src_inode->i_nlink == 1 */ ++ && (!plinked || !au_plink_test(a->inode)) ++ && a->inode->i_nlink == 1) ++ goto out; ++ ++ err = -EBUSY; ++ AU_MVD_PR(dmsg, ++ "b%d, d{b%d, c%d?}, i{c%d?, l%u}, hi{l%u}, p{%d, %d}\n", ++ a->mvd_bsrc, au_dbtop(a->dentry), au_dcount(a->dentry), ++ atomic_read(&a->inode->i_count), a->inode->i_nlink, ++ a->mvd_h_src_inode->i_nlink, ++ plinked, plinked ? au_plink_test(a->inode) : 0); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* make sure the parent dir is fine */ ++static int au_mvd_args_parent(const unsigned char dmsg, ++ struct au_mvd_args *a) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ ++ err = 0; ++ if (unlikely(au_alive_dir(a->parent))) { ++ err = -ENOENT; ++ AU_MVD_PR(dmsg, "parent dir is dead\n"); ++ goto out; ++ } ++ ++ a->bopq = au_dbdiropq(a->parent); ++ bindex = au_wbr_nonopq(a->dentry, a->mvd_bdst); ++ AuDbg("b%d\n", bindex); ++ if (unlikely((bindex >= 0 && bindex < a->mvd_bdst) ++ || (a->bopq != -1 && a->bopq < a->mvd_bdst))) { ++ err = -EINVAL; ++ a->mvd_errno = EAU_MVDOWN_OPAQUE; ++ AU_MVD_PR(dmsg, "ancestor is opaque b%d, b%d\n", ++ a->bopq, a->mvd_bdst); ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_mvd_args_intermediate(const unsigned char dmsg, ++ struct au_mvd_args *a) ++{ ++ int err; ++ struct au_dinfo *dinfo, *tmp; ++ ++ /* lookup the next lower positive entry */ ++ err = -ENOMEM; ++ tmp = au_di_alloc(a->sb, AuLsc_DI_TMP); ++ if (unlikely(!tmp)) ++ goto out; ++ ++ a->bfound = -1; ++ a->bwh = -1; ++ dinfo = au_di(a->dentry); ++ au_di_cp(tmp, dinfo); ++ au_di_swap(tmp, dinfo); ++ ++ /* returns the number of positive dentries */ ++ err = au_lkup_dentry(a->dentry, a->mvd_bsrc + 1, ++ /* AuLkup_IGNORE_PERM */ 0); ++ if (!err) ++ a->bwh = au_dbwh(a->dentry); ++ else if (err > 0) ++ a->bfound = au_dbtop(a->dentry); ++ ++ au_di_swap(tmp, dinfo); ++ au_rw_write_unlock(&tmp->di_rwsem); ++ au_di_free(tmp); ++ if (unlikely(err < 0)) ++ AU_MVD_PR(dmsg, "failed look-up lower\n"); ++ ++ /* ++ * here, we have these cases. ++ * bfound == -1 ++ * no positive dentry under bsrc. there are more sub-cases. ++ * bwh < 0 ++ * there no whiteout, we can safely move-down. ++ * bwh <= bsrc ++ * impossible ++ * bsrc < bwh && bwh < bdst ++ * there is a whiteout on RO branch. cannot proceed. ++ * bwh == bdst ++ * there is a whiteout on the RW target branch. it should ++ * be removed. ++ * bdst < bwh ++ * there is a whiteout somewhere unrelated branch. ++ * -1 < bfound && bfound <= bsrc ++ * impossible. ++ * bfound < bdst ++ * found, but it is on RO branch between bsrc and bdst. cannot ++ * proceed. ++ * bfound == bdst ++ * found, replace it if AUFS_MVDOWN_FORCE is set. otherwise return ++ * error. ++ * bdst < bfound ++ * found, after we create the file on bdst, it will be hidden. ++ */ ++ ++ AuDebugOn(a->bfound == -1 ++ && a->bwh != -1 ++ && a->bwh <= a->mvd_bsrc); ++ AuDebugOn(-1 < a->bfound ++ && a->bfound <= a->mvd_bsrc); ++ ++ err = -EINVAL; ++ if (a->bfound == -1 ++ && a->mvd_bsrc < a->bwh ++ && a->bwh != -1 ++ && a->bwh < a->mvd_bdst) { ++ a->mvd_errno = EAU_MVDOWN_WHITEOUT; ++ AU_MVD_PR(dmsg, "bsrc %d, bdst %d, bfound %d, bwh %d\n", ++ a->mvd_bsrc, a->mvd_bdst, a->bfound, a->bwh); ++ goto out; ++ } else if (a->bfound != -1 && a->bfound < a->mvd_bdst) { ++ a->mvd_errno = EAU_MVDOWN_UPPER; ++ AU_MVD_PR(dmsg, "bdst %d, bfound %d\n", ++ a->mvd_bdst, a->bfound); ++ goto out; ++ } ++ ++ err = 0; /* success */ ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_mvd_args_exist(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ ++ err = 0; ++ if (!(a->mvdown.flags & AUFS_MVDOWN_OWLOWER) ++ && a->bfound == a->mvd_bdst) ++ err = -EEXIST; ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_mvd_args(const unsigned char dmsg, struct au_mvd_args *a) ++{ ++ int err; ++ struct au_branch *br; ++ ++ err = -EISDIR; ++ if (unlikely(S_ISDIR(a->inode->i_mode))) ++ goto out; ++ ++ err = -EINVAL; ++ if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_UPPER)) ++ a->mvd_bsrc = au_ibtop(a->inode); ++ else { ++ a->mvd_bsrc = au_br_index(a->sb, a->mvd_src_brid); ++ if (unlikely(a->mvd_bsrc < 0 ++ || (a->mvd_bsrc < au_dbtop(a->dentry) ++ || au_dbbot(a->dentry) < a->mvd_bsrc ++ || !au_h_dptr(a->dentry, a->mvd_bsrc)) ++ || (a->mvd_bsrc < au_ibtop(a->inode) ++ || au_ibbot(a->inode) < a->mvd_bsrc ++ || !au_h_iptr(a->inode, a->mvd_bsrc)))) { ++ a->mvd_errno = EAU_MVDOWN_NOUPPER; ++ AU_MVD_PR(dmsg, "no upper\n"); ++ goto out; ++ } ++ } ++ if (unlikely(a->mvd_bsrc == au_sbbot(a->sb))) { ++ a->mvd_errno = EAU_MVDOWN_BOTTOM; ++ AU_MVD_PR(dmsg, "on the bottom\n"); ++ goto out; ++ } ++ a->mvd_h_src_inode = au_h_iptr(a->inode, a->mvd_bsrc); ++ br = au_sbr(a->sb, a->mvd_bsrc); ++ err = au_br_rdonly(br); ++ if (!(a->mvdown.flags & AUFS_MVDOWN_ROUPPER)) { ++ if (unlikely(err)) ++ goto out; ++ } else if (!(vfsub_native_ro(a->mvd_h_src_inode) ++ || IS_APPEND(a->mvd_h_src_inode))) { ++ if (err) ++ a->mvdown.flags |= AUFS_MVDOWN_ROUPPER_R; ++ /* go on */ ++ } else ++ goto out; ++ ++ err = -EINVAL; ++ if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_LOWER)) { ++ a->mvd_bdst = find_lower_writable(a); ++ if (unlikely(a->mvd_bdst < 0)) { ++ a->mvd_errno = EAU_MVDOWN_BOTTOM; ++ AU_MVD_PR(dmsg, "no writable lower branch\n"); ++ goto out; ++ } ++ } else { ++ a->mvd_bdst = au_br_index(a->sb, a->mvd_dst_brid); ++ if (unlikely(a->mvd_bdst < 0 ++ || au_sbbot(a->sb) < a->mvd_bdst)) { ++ a->mvd_errno = EAU_MVDOWN_NOLOWERBR; ++ AU_MVD_PR(dmsg, "no lower brid\n"); ++ goto out; ++ } ++ } ++ ++ err = au_mvd_args_busy(dmsg, a); ++ if (!err) ++ err = au_mvd_args_parent(dmsg, a); ++ if (!err) ++ err = au_mvd_args_intermediate(dmsg, a); ++ if (!err) ++ err = au_mvd_args_exist(dmsg, a); ++ if (!err) ++ AuDbg("b%d, b%d\n", a->mvd_bsrc, a->mvd_bdst); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *uarg) ++{ ++ int err, e; ++ unsigned char dmsg; ++ struct au_mvd_args *args; ++ struct inode *inode; ++ ++ inode = d_inode(dentry); ++ err = -EPERM; ++ if (unlikely(!capable(CAP_SYS_ADMIN))) ++ goto out; ++ ++ err = -ENOMEM; ++ args = kmalloc(sizeof(*args), GFP_NOFS); ++ if (unlikely(!args)) ++ goto out; ++ ++ err = copy_from_user(&args->mvdown, uarg, sizeof(args->mvdown)); ++ if (!err) ++ /* VERIFY_WRITE */ ++ err = !access_ok(uarg, sizeof(*uarg)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ goto out_free; ++ } ++ AuDbg("flags 0x%x\n", args->mvdown.flags); ++ args->mvdown.flags &= ~(AUFS_MVDOWN_ROLOWER_R | AUFS_MVDOWN_ROUPPER_R); ++ args->mvdown.au_errno = 0; ++ args->dentry = dentry; ++ args->inode = inode; ++ args->sb = dentry->d_sb; ++ ++ err = -ENOENT; ++ dmsg = !!(args->mvdown.flags & AUFS_MVDOWN_DMSG); ++ args->parent = dget_parent(dentry); ++ args->dir = d_inode(args->parent); ++ inode_lock_nested(args->dir, I_MUTEX_PARENT); ++ dput(args->parent); ++ if (unlikely(args->parent != dentry->d_parent)) { ++ AU_MVD_PR(dmsg, "parent dir is moved\n"); ++ goto out_dir; ++ } ++ ++ inode_lock_nested(inode, I_MUTEX_CHILD); ++ err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_NOPLMW); ++ if (unlikely(err)) ++ goto out_inode; ++ ++ di_write_lock_parent(args->parent); ++ err = au_mvd_args(dmsg, args); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ err = au_do_mvdown(dmsg, args); ++ if (unlikely(err)) ++ goto out_parent; ++ ++ au_cpup_attr_timesizes(args->dir); ++ au_cpup_attr_timesizes(inode); ++ if (!(args->mvdown.flags & AUFS_MVDOWN_KUPPER)) ++ au_cpup_igen(inode, au_h_iptr(inode, args->mvd_bdst)); ++ /* au_digen_dec(dentry); */ ++ ++out_parent: ++ di_write_unlock(args->parent); ++ aufs_read_unlock(dentry, AuLock_DW); ++out_inode: ++ inode_unlock(inode); ++out_dir: ++ inode_unlock(args->dir); ++out_free: ++ e = copy_to_user(uarg, &args->mvdown, sizeof(args->mvdown)); ++ if (unlikely(e)) ++ err = -EFAULT; ++ au_kfree_rcu(args); ++out: ++ AuTraceErr(err); ++ return err; ++} +diff -Naur null/fs/aufs/opts.c linux-5.15.36/fs/aufs/opts.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/opts.c 2022-05-10 16:51:39.875744219 +0300 +@@ -0,0 +1,1032 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * mount options/flags ++ */ ++ ++#include /* a distribution requires */ ++#include ++#include "aufs.h" ++ ++/* ---------------------------------------------------------------------- */ ++ ++static const char *au_parser_pattern(int val, match_table_t tbl) ++{ ++ struct match_token *p; ++ ++ p = tbl; ++ while (p->pattern) { ++ if (p->token == val) ++ return p->pattern; ++ p++; ++ } ++ BUG(); ++ return "??"; ++} ++ ++static const char *au_optstr(int *val, match_table_t tbl) ++{ ++ struct match_token *p; ++ int v; ++ ++ v = *val; ++ if (!v) ++ goto out; ++ p = tbl; ++ while (p->pattern) { ++ if (p->token ++ && (v & p->token) == p->token) { ++ *val &= ~p->token; ++ return p->pattern; ++ } ++ p++; ++ } ++ ++out: ++ return NULL; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static match_table_t brperm = { ++ {AuBrPerm_RO, AUFS_BRPERM_RO}, ++ {AuBrPerm_RR, AUFS_BRPERM_RR}, ++ {AuBrPerm_RW, AUFS_BRPERM_RW}, ++ {0, NULL} ++}; ++ ++static match_table_t brattr = { ++ /* general */ ++ {AuBrAttr_COO_REG, AUFS_BRATTR_COO_REG}, ++ {AuBrAttr_COO_ALL, AUFS_BRATTR_COO_ALL}, ++ /* 'unpin' attrib is meaningless since linux-3.18-rc1 */ ++ {AuBrAttr_UNPIN, AUFS_BRATTR_UNPIN}, ++#ifdef CONFIG_AUFS_FHSM ++ {AuBrAttr_FHSM, AUFS_BRATTR_FHSM}, ++#endif ++#ifdef CONFIG_AUFS_XATTR ++ {AuBrAttr_ICEX, AUFS_BRATTR_ICEX}, ++ {AuBrAttr_ICEX_SEC, AUFS_BRATTR_ICEX_SEC}, ++ {AuBrAttr_ICEX_SYS, AUFS_BRATTR_ICEX_SYS}, ++ {AuBrAttr_ICEX_TR, AUFS_BRATTR_ICEX_TR}, ++ {AuBrAttr_ICEX_USR, AUFS_BRATTR_ICEX_USR}, ++ {AuBrAttr_ICEX_OTH, AUFS_BRATTR_ICEX_OTH}, ++#endif ++ ++ /* ro/rr branch */ ++ {AuBrRAttr_WH, AUFS_BRRATTR_WH}, ++ ++ /* rw branch */ ++ {AuBrWAttr_MOO, AUFS_BRWATTR_MOO}, ++ {AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH}, ++ ++ {0, NULL} ++}; ++ ++static int br_attr_val(char *str, match_table_t table, substring_t args[]) ++{ ++ int attr, v; ++ char *p; ++ ++ attr = 0; ++ do { ++ p = strchr(str, '+'); ++ if (p) ++ *p = 0; ++ v = match_token(str, table, args); ++ if (v) { ++ if (v & AuBrAttr_CMOO_Mask) ++ attr &= ~AuBrAttr_CMOO_Mask; ++ attr |= v; ++ } else { ++ if (p) ++ *p = '+'; ++ pr_warn("ignored branch attribute %s\n", str); ++ break; ++ } ++ if (p) ++ str = p + 1; ++ } while (p); ++ ++ return attr; ++} ++ ++static int au_do_optstr_br_attr(au_br_perm_str_t *str, int perm) ++{ ++ int sz; ++ const char *p; ++ char *q; ++ ++ q = str->a; ++ *q = 0; ++ p = au_optstr(&perm, brattr); ++ if (p) { ++ sz = strlen(p); ++ memcpy(q, p, sz + 1); ++ q += sz; ++ } else ++ goto out; ++ ++ do { ++ p = au_optstr(&perm, brattr); ++ if (p) { ++ *q++ = '+'; ++ sz = strlen(p); ++ memcpy(q, p, sz + 1); ++ q += sz; ++ } ++ } while (p); ++ ++out: ++ return q - str->a; ++} ++ ++int au_br_perm_val(char *perm) ++{ ++ int val, bad, sz; ++ char *p; ++ substring_t args[MAX_OPT_ARGS]; ++ au_br_perm_str_t attr; ++ ++ p = strchr(perm, '+'); ++ if (p) ++ *p = 0; ++ val = match_token(perm, brperm, args); ++ if (!val) { ++ if (p) ++ *p = '+'; ++ pr_warn("ignored branch permission %s\n", perm); ++ val = AuBrPerm_RO; ++ goto out; ++ } ++ if (!p) ++ goto out; ++ ++ val |= br_attr_val(p + 1, brattr, args); ++ ++ bad = 0; ++ switch (val & AuBrPerm_Mask) { ++ case AuBrPerm_RO: ++ case AuBrPerm_RR: ++ bad = val & AuBrWAttr_Mask; ++ val &= ~AuBrWAttr_Mask; ++ break; ++ case AuBrPerm_RW: ++ bad = val & AuBrRAttr_Mask; ++ val &= ~AuBrRAttr_Mask; ++ break; ++ } ++ ++ /* ++ * 'unpin' attrib becomes meaningless since linux-3.18-rc1, but aufs ++ * does not treat it as an error, just warning. ++ * this is a tiny guard for the user operation. ++ */ ++ if (val & AuBrAttr_UNPIN) { ++ bad |= AuBrAttr_UNPIN; ++ val &= ~AuBrAttr_UNPIN; ++ } ++ ++ if (unlikely(bad)) { ++ sz = au_do_optstr_br_attr(&attr, bad); ++ AuDebugOn(!sz); ++ pr_warn("ignored branch attribute %s\n", attr.a); ++ } ++ ++out: ++ return val; ++} ++ ++void au_optstr_br_perm(au_br_perm_str_t *str, int perm) ++{ ++ au_br_perm_str_t attr; ++ const char *p; ++ char *q; ++ int sz; ++ ++ q = str->a; ++ p = au_optstr(&perm, brperm); ++ AuDebugOn(!p || !*p); ++ sz = strlen(p); ++ memcpy(q, p, sz + 1); ++ q += sz; ++ ++ sz = au_do_optstr_br_attr(&attr, perm); ++ if (sz) { ++ *q++ = '+'; ++ memcpy(q, attr.a, sz + 1); ++ } ++ ++ AuDebugOn(strlen(str->a) >= sizeof(str->a)); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static match_table_t udbalevel = { ++ {AuOpt_UDBA_REVAL, "reval"}, ++ {AuOpt_UDBA_NONE, "none"}, ++#ifdef CONFIG_AUFS_HNOTIFY ++ {AuOpt_UDBA_HNOTIFY, "notify"}, /* abstraction */ ++#ifdef CONFIG_AUFS_HFSNOTIFY ++ {AuOpt_UDBA_HNOTIFY, "fsnotify"}, ++#endif ++#endif ++ {-1, NULL} ++}; ++ ++int au_udba_val(char *str) ++{ ++ substring_t args[MAX_OPT_ARGS]; ++ ++ return match_token(str, udbalevel, args); ++} ++ ++const char *au_optstr_udba(int udba) ++{ ++ return au_parser_pattern(udba, udbalevel); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static match_table_t au_wbr_create_policy = { ++ {AuWbrCreate_TDP, "tdp"}, ++ {AuWbrCreate_TDP, "top-down-parent"}, ++ {AuWbrCreate_RR, "rr"}, ++ {AuWbrCreate_RR, "round-robin"}, ++ {AuWbrCreate_MFS, "mfs"}, ++ {AuWbrCreate_MFS, "most-free-space"}, ++ {AuWbrCreate_MFSV, "mfs:%d"}, ++ {AuWbrCreate_MFSV, "most-free-space:%d"}, ++ ++ /* top-down regardless the parent, and then mfs */ ++ {AuWbrCreate_TDMFS, "tdmfs:%d"}, ++ {AuWbrCreate_TDMFSV, "tdmfs:%d:%d"}, ++ ++ {AuWbrCreate_MFSRR, "mfsrr:%d"}, ++ {AuWbrCreate_MFSRRV, "mfsrr:%d:%d"}, ++ {AuWbrCreate_PMFS, "pmfs"}, ++ {AuWbrCreate_PMFSV, "pmfs:%d"}, ++ {AuWbrCreate_PMFSRR, "pmfsrr:%d"}, ++ {AuWbrCreate_PMFSRRV, "pmfsrr:%d:%d"}, ++ ++ {-1, NULL} ++}; ++ ++static int au_wbr_mfs_wmark(substring_t *arg, char *str, ++ struct au_opt_wbr_create *create) ++{ ++ int err; ++ unsigned long long ull; ++ ++ err = 0; ++ if (!match_u64(arg, &ull)) ++ create->mfsrr_watermark = ull; ++ else { ++ pr_err("bad integer in %s\n", str); ++ err = -EINVAL; ++ } ++ ++ return err; ++} ++ ++static int au_wbr_mfs_sec(substring_t *arg, char *str, ++ struct au_opt_wbr_create *create) ++{ ++ int n, err; ++ ++ err = 0; ++ if (!match_int(arg, &n) && 0 <= n && n <= AUFS_MFS_MAX_SEC) ++ create->mfs_second = n; ++ else { ++ pr_err("bad integer in %s\n", str); ++ err = -EINVAL; ++ } ++ ++ return err; ++} ++ ++int au_wbr_create_val(char *str, struct au_opt_wbr_create *create) ++{ ++ int err, e; ++ substring_t args[MAX_OPT_ARGS]; ++ ++ err = match_token(str, au_wbr_create_policy, args); ++ create->wbr_create = err; ++ switch (err) { ++ case AuWbrCreate_MFSRRV: ++ case AuWbrCreate_TDMFSV: ++ case AuWbrCreate_PMFSRRV: ++ e = au_wbr_mfs_wmark(&args[0], str, create); ++ if (!e) ++ e = au_wbr_mfs_sec(&args[1], str, create); ++ if (unlikely(e)) ++ err = e; ++ break; ++ case AuWbrCreate_MFSRR: ++ case AuWbrCreate_TDMFS: ++ case AuWbrCreate_PMFSRR: ++ e = au_wbr_mfs_wmark(&args[0], str, create); ++ if (unlikely(e)) { ++ err = e; ++ break; ++ } ++ fallthrough; ++ case AuWbrCreate_MFS: ++ case AuWbrCreate_PMFS: ++ create->mfs_second = AUFS_MFS_DEF_SEC; ++ break; ++ case AuWbrCreate_MFSV: ++ case AuWbrCreate_PMFSV: ++ e = au_wbr_mfs_sec(&args[0], str, create); ++ if (unlikely(e)) ++ err = e; ++ break; ++ } ++ ++ return err; ++} ++ ++const char *au_optstr_wbr_create(int wbr_create) ++{ ++ return au_parser_pattern(wbr_create, au_wbr_create_policy); ++} ++ ++static match_table_t au_wbr_copyup_policy = { ++ {AuWbrCopyup_TDP, "tdp"}, ++ {AuWbrCopyup_TDP, "top-down-parent"}, ++ {AuWbrCopyup_BUP, "bup"}, ++ {AuWbrCopyup_BUP, "bottom-up-parent"}, ++ {AuWbrCopyup_BU, "bu"}, ++ {AuWbrCopyup_BU, "bottom-up"}, ++ {-1, NULL} ++}; ++ ++int au_wbr_copyup_val(char *str) ++{ ++ substring_t args[MAX_OPT_ARGS]; ++ ++ return match_token(str, au_wbr_copyup_policy, args); ++} ++ ++const char *au_optstr_wbr_copyup(int wbr_copyup) ++{ ++ return au_parser_pattern(wbr_copyup, au_wbr_copyup_policy); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, ++ aufs_bindex_t bindex) ++{ ++ int err; ++ struct au_opt_add *add = &opt->add; ++ char *p; ++ ++ add->bindex = bindex; ++ add->perm = AuBrPerm_RO; ++ add->pathname = opt_str; ++ p = strchr(opt_str, '='); ++ if (p) { ++ *p++ = 0; ++ if (*p) ++ add->perm = au_br_perm_val(p); ++ } ++ ++ err = vfsub_kern_path(add->pathname, AuOpt_LkupDirFlags, &add->path); ++ if (!err) { ++ if (!p) { ++ add->perm = AuBrPerm_RO; ++ if (au_test_fs_rr(add->path.dentry->d_sb)) ++ add->perm = AuBrPerm_RR; ++ else if (!bindex && !(sb_flags & SB_RDONLY)) ++ add->perm = AuBrPerm_RW; ++ } ++ opt->type = Opt_add; ++ goto out; ++ } ++ pr_err("lookup failed %s (%d)\n", add->pathname, err); ++ err = -EINVAL; ++ ++out: ++ return err; ++} ++ ++static int au_opt_wbr_create(struct super_block *sb, ++ struct au_opt_wbr_create *create) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ ++ SiMustWriteLock(sb); ++ ++ err = 1; /* handled */ ++ sbinfo = au_sbi(sb); ++ if (sbinfo->si_wbr_create_ops->fin) { ++ err = sbinfo->si_wbr_create_ops->fin(sb); ++ if (!err) ++ err = 1; ++ } ++ ++ sbinfo->si_wbr_create = create->wbr_create; ++ sbinfo->si_wbr_create_ops = au_wbr_create_ops + create->wbr_create; ++ switch (create->wbr_create) { ++ case AuWbrCreate_MFSRRV: ++ case AuWbrCreate_MFSRR: ++ case AuWbrCreate_TDMFS: ++ case AuWbrCreate_TDMFSV: ++ case AuWbrCreate_PMFSRR: ++ case AuWbrCreate_PMFSRRV: ++ sbinfo->si_wbr_mfs.mfsrr_watermark = create->mfsrr_watermark; ++ fallthrough; ++ case AuWbrCreate_MFS: ++ case AuWbrCreate_MFSV: ++ case AuWbrCreate_PMFS: ++ case AuWbrCreate_PMFSV: ++ sbinfo->si_wbr_mfs.mfs_expire ++ = msecs_to_jiffies(create->mfs_second * MSEC_PER_SEC); ++ break; ++ } ++ ++ if (sbinfo->si_wbr_create_ops->init) ++ sbinfo->si_wbr_create_ops->init(sb); /* ignore */ ++ ++ return err; ++} ++ ++/* ++ * returns, ++ * plus: processed without an error ++ * zero: unprocessed ++ */ ++static int au_opt_simple(struct super_block *sb, struct au_opt *opt, ++ struct au_opts *opts) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ ++ SiMustWriteLock(sb); ++ ++ err = 1; /* handled */ ++ sbinfo = au_sbi(sb); ++ switch (opt->type) { ++ case Opt_udba: ++ sbinfo->si_mntflags &= ~AuOptMask_UDBA; ++ sbinfo->si_mntflags |= opt->udba; ++ opts->given_udba |= opt->udba; ++ break; ++ ++ case Opt_plink: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, PLINK); ++ else { ++ if (au_opt_test(sbinfo->si_mntflags, PLINK)) ++ au_plink_put(sb, /*verbose*/1); ++ au_opt_clr(sbinfo->si_mntflags, PLINK); ++ } ++ break; ++ case Opt_list_plink: ++ if (au_opt_test(sbinfo->si_mntflags, PLINK)) ++ au_plink_list(sb); ++ break; ++ ++ case Opt_dio: ++ 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); ++ } ++ break; ++ ++ case Opt_fhsm_sec: ++ au_fhsm_set(sbinfo, opt->fhsm_second); ++ break; ++ ++ case Opt_diropq_a: ++ au_opt_set(sbinfo->si_mntflags, ALWAYS_DIROPQ); ++ break; ++ case Opt_diropq_w: ++ au_opt_clr(sbinfo->si_mntflags, ALWAYS_DIROPQ); ++ break; ++ ++ case Opt_warn_perm: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, WARN_PERM); ++ else ++ au_opt_clr(sbinfo->si_mntflags, WARN_PERM); ++ break; ++ ++ case Opt_verbose: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, VERBOSE); ++ else ++ au_opt_clr(sbinfo->si_mntflags, VERBOSE); ++ break; ++ ++ case Opt_sum: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, SUM); ++ else { ++ au_opt_clr(sbinfo->si_mntflags, SUM); ++ au_opt_clr(sbinfo->si_mntflags, SUM_W); ++ } ++ break; ++ case Opt_wsum: ++ au_opt_clr(sbinfo->si_mntflags, SUM); ++ au_opt_set(sbinfo->si_mntflags, SUM_W); ++ break; ++ ++ case Opt_wbr_create: ++ err = au_opt_wbr_create(sb, &opt->wbr_create); ++ break; ++ case Opt_wbr_copyup: ++ sbinfo->si_wbr_copyup = opt->wbr_copyup; ++ sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + opt->wbr_copyup; ++ break; ++ ++ case Opt_dirwh: ++ sbinfo->si_dirwh = opt->dirwh; ++ break; ++ ++ case Opt_rdcache: ++ sbinfo->si_rdcache ++ = msecs_to_jiffies(opt->rdcache * MSEC_PER_SEC); ++ break; ++ case Opt_rdblk: ++ sbinfo->si_rdblk = opt->rdblk; ++ break; ++ case Opt_rdhash: ++ sbinfo->si_rdhash = opt->rdhash; ++ break; ++ ++ case Opt_shwh: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, SHWH); ++ else ++ au_opt_clr(sbinfo->si_mntflags, SHWH); ++ break; ++ ++ case Opt_dirperm1: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, DIRPERM1); ++ else ++ au_opt_clr(sbinfo->si_mntflags, DIRPERM1); ++ break; ++ ++ case Opt_trunc_xino: ++ if (opt->tf) ++ au_opt_set(sbinfo->si_mntflags, TRUNC_XINO); ++ else ++ au_opt_clr(sbinfo->si_mntflags, TRUNC_XINO); ++ break; ++ ++ case Opt_trunc_xino_path: ++ case Opt_itrunc_xino: ++ err = au_xino_trunc(sb, opt->xino_itrunc.bindex, ++ /*idx_begin*/0); ++ if (!err) ++ err = 1; ++ break; ++ ++ case Opt_trunc_xib: ++ if (opt->tf) ++ au_fset_opts(opts->flags, TRUNC_XIB); ++ else ++ au_fclr_opts(opts->flags, TRUNC_XIB); ++ break; ++ ++ case Opt_dirren: ++ err = 1; ++ if (opt->tf) { ++ if (!au_opt_test(sbinfo->si_mntflags, DIRREN)) { ++ err = au_dr_opt_set(sb); ++ if (!err) ++ err = 1; ++ } ++ if (err == 1) ++ au_opt_set(sbinfo->si_mntflags, DIRREN); ++ } else { ++ if (au_opt_test(sbinfo->si_mntflags, DIRREN)) { ++ err = au_dr_opt_clr(sb, au_ftest_opts(opts->flags, ++ DR_FLUSHED)); ++ if (!err) ++ err = 1; ++ } ++ if (err == 1) ++ au_opt_clr(sbinfo->si_mntflags, DIRREN); ++ } ++ break; ++ ++ case Opt_acl: ++ if (opt->tf) ++ sb->s_flags |= SB_POSIXACL; ++ else ++ sb->s_flags &= ~SB_POSIXACL; ++ break; ++ ++ default: ++ err = 0; ++ break; ++ } ++ ++ return err; ++} ++ ++/* ++ * returns tri-state. ++ * plus: processed without an error ++ * zero: unprocessed ++ * minus: error ++ */ ++static int au_opt_br(struct super_block *sb, struct au_opt *opt, ++ struct au_opts *opts) ++{ ++ int err, do_refresh; ++ ++ err = 0; ++ switch (opt->type) { ++ case Opt_append: ++ opt->add.bindex = au_sbbot(sb) + 1; ++ if (opt->add.bindex < 0) ++ opt->add.bindex = 0; ++ goto add; ++ /* Always goto add, not fallthrough */ ++ case Opt_prepend: ++ opt->add.bindex = 0; ++ fallthrough; ++ add: /* indented label */ ++ case Opt_add: ++ err = au_br_add(sb, &opt->add, ++ au_ftest_opts(opts->flags, REMOUNT)); ++ if (!err) { ++ err = 1; ++ au_fset_opts(opts->flags, REFRESH); ++ } ++ break; ++ ++ case Opt_del: ++ case Opt_idel: ++ err = au_br_del(sb, &opt->del, ++ au_ftest_opts(opts->flags, REMOUNT)); ++ if (!err) { ++ err = 1; ++ au_fset_opts(opts->flags, TRUNC_XIB); ++ au_fset_opts(opts->flags, REFRESH); ++ } ++ break; ++ ++ case Opt_mod: ++ case Opt_imod: ++ err = au_br_mod(sb, &opt->mod, ++ au_ftest_opts(opts->flags, REMOUNT), ++ &do_refresh); ++ if (!err) { ++ err = 1; ++ if (do_refresh) ++ au_fset_opts(opts->flags, REFRESH); ++ } ++ break; ++ } ++ return err; ++} ++ ++static int au_opt_xino(struct super_block *sb, struct au_opt *opt, ++ struct au_opt_xino **opt_xino, ++ struct au_opts *opts) ++{ ++ int err; ++ ++ err = 0; ++ switch (opt->type) { ++ case Opt_xino: ++ err = au_xino_set(sb, &opt->xino, ++ !!au_ftest_opts(opts->flags, REMOUNT)); ++ if (!err) ++ *opt_xino = &opt->xino; ++ break; ++ case Opt_noxino: ++ au_xino_clr(sb); ++ *opt_xino = (void *)-1; ++ break; ++ } ++ ++ return err; ++} ++ ++int au_opts_verify(struct super_block *sb, unsigned long sb_flags, ++ unsigned int pending) ++{ ++ int err, fhsm; ++ aufs_bindex_t bindex, bbot; ++ unsigned char do_plink, skip, do_free, can_no_dreval; ++ struct au_branch *br; ++ struct au_wbr *wbr; ++ struct dentry *root, *dentry; ++ struct inode *dir, *h_dir; ++ struct au_sbinfo *sbinfo; ++ struct au_hinode *hdir; ++ ++ SiMustAnyLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ AuDebugOn(!(sbinfo->si_mntflags & AuOptMask_UDBA)); ++ ++ if (!(sb_flags & SB_RDONLY)) { ++ if (unlikely(!au_br_writable(au_sbr_perm(sb, 0)))) ++ pr_warn("first branch should be rw\n"); ++ if (unlikely(au_opt_test(sbinfo->si_mntflags, SHWH))) ++ pr_warn_once("shwh should be used with ro\n"); ++ } ++ ++ if (au_opt_test((sbinfo->si_mntflags | pending), UDBA_HNOTIFY) ++ && !au_opt_test(sbinfo->si_mntflags, XINO)) ++ pr_warn_once("udba=*notify requires xino\n"); ++ ++ if (au_opt_test(sbinfo->si_mntflags, DIRPERM1)) ++ pr_warn_once("dirperm1 breaks the protection" ++ " by the permission bits on the lower branch\n"); ++ ++ err = 0; ++ fhsm = 0; ++ root = sb->s_root; ++ dir = d_inode(root); ++ do_plink = !!au_opt_test(sbinfo->si_mntflags, PLINK); ++ can_no_dreval = !!au_opt_test((sbinfo->si_mntflags | pending), ++ UDBA_NONE); ++ bbot = au_sbbot(sb); ++ for (bindex = 0; !err && bindex <= bbot; bindex++) { ++ skip = 0; ++ h_dir = au_h_iptr(dir, bindex); ++ br = au_sbr(sb, bindex); ++ ++ if ((br->br_perm & AuBrAttr_ICEX) ++ && !h_dir->i_op->listxattr) ++ br->br_perm &= ~AuBrAttr_ICEX; ++#if 0 /* untested */ ++ if ((br->br_perm & AuBrAttr_ICEX_SEC) ++ && (au_br_sb(br)->s_flags & SB_NOSEC)) ++ br->br_perm &= ~AuBrAttr_ICEX_SEC; ++#endif ++ ++ do_free = 0; ++ wbr = br->br_wbr; ++ if (wbr) ++ wbr_wh_read_lock(wbr); ++ ++ if (!au_br_writable(br->br_perm)) { ++ do_free = !!wbr; ++ skip = (!wbr ++ || (!wbr->wbr_whbase ++ && !wbr->wbr_plink ++ && !wbr->wbr_orph)); ++ } else if (!au_br_wh_linkable(br->br_perm)) { ++ /* skip = (!br->br_whbase && !br->br_orph); */ ++ skip = (!wbr || !wbr->wbr_whbase); ++ if (skip && wbr) { ++ if (do_plink) ++ skip = !!wbr->wbr_plink; ++ else ++ skip = !wbr->wbr_plink; ++ } ++ } else { ++ /* skip = (br->br_whbase && br->br_ohph); */ ++ skip = (wbr && wbr->wbr_whbase); ++ if (skip) { ++ if (do_plink) ++ skip = !!wbr->wbr_plink; ++ else ++ skip = !wbr->wbr_plink; ++ } ++ } ++ if (wbr) ++ wbr_wh_read_unlock(wbr); ++ ++ if (can_no_dreval) { ++ dentry = br->br_path.dentry; ++ spin_lock(&dentry->d_lock); ++ if (dentry->d_flags & ++ (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE)) ++ can_no_dreval = 0; ++ spin_unlock(&dentry->d_lock); ++ } ++ ++ if (au_br_fhsm(br->br_perm)) { ++ fhsm++; ++ AuDebugOn(!br->br_fhsm); ++ } ++ ++ if (skip) ++ continue; ++ ++ hdir = au_hi(dir, bindex); ++ au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); ++ if (wbr) ++ wbr_wh_write_lock(wbr); ++ err = au_wh_init(br, sb); ++ if (wbr) ++ wbr_wh_write_unlock(wbr); ++ au_hn_inode_unlock(hdir); ++ ++ if (!err && do_free) { ++ au_kfree_rcu(wbr); ++ br->br_wbr = NULL; ++ } ++ } ++ ++ if (can_no_dreval) ++ au_fset_si(sbinfo, NO_DREVAL); ++ else ++ au_fclr_si(sbinfo, NO_DREVAL); ++ ++ if (fhsm >= 2) { ++ au_fset_si(sbinfo, FHSM); ++ for (bindex = bbot; bindex >= 0; bindex--) { ++ br = au_sbr(sb, bindex); ++ if (au_br_fhsm(br->br_perm)) { ++ au_fhsm_set_bottom(sb, bindex); ++ break; ++ } ++ } ++ } else { ++ au_fclr_si(sbinfo, FHSM); ++ au_fhsm_set_bottom(sb, -1); ++ } ++ ++ return err; ++} ++ ++int au_opts_mount(struct super_block *sb, struct au_opts *opts) ++{ ++ int err; ++ unsigned int tmp; ++ aufs_bindex_t bindex, bbot; ++ struct au_opt *opt; ++ struct au_opt_xino *opt_xino, xino; ++ struct au_sbinfo *sbinfo; ++ struct au_branch *br; ++ struct inode *dir; ++ ++ SiMustWriteLock(sb); ++ ++ err = 0; ++ opt_xino = NULL; ++ opt = opts->opt; ++ while (err >= 0 && opt->type != Opt_tail) ++ err = au_opt_simple(sb, opt++, opts); ++ if (err > 0) ++ err = 0; ++ else if (unlikely(err < 0)) ++ goto out; ++ ++ /* disable xino and udba temporary */ ++ sbinfo = au_sbi(sb); ++ tmp = sbinfo->si_mntflags; ++ au_opt_clr(sbinfo->si_mntflags, XINO); ++ au_opt_set_udba(sbinfo->si_mntflags, UDBA_REVAL); ++ ++ opt = opts->opt; ++ while (err >= 0 && opt->type != Opt_tail) ++ err = au_opt_br(sb, opt++, opts); ++ if (err > 0) ++ err = 0; ++ else if (unlikely(err < 0)) ++ goto out; ++ ++ bbot = au_sbbot(sb); ++ if (unlikely(bbot < 0)) { ++ err = -EINVAL; ++ pr_err("no branches\n"); ++ goto out; ++ } ++ ++ if (au_opt_test(tmp, XINO)) ++ au_opt_set(sbinfo->si_mntflags, XINO); ++ opt = opts->opt; ++ while (!err && opt->type != Opt_tail) ++ err = au_opt_xino(sb, opt++, &opt_xino, opts); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_opts_verify(sb, sb->s_flags, tmp); ++ if (unlikely(err)) ++ goto out; ++ ++ /* restore xino */ ++ if (au_opt_test(tmp, XINO) && !opt_xino) { ++ xino.file = au_xino_def(sb); ++ err = PTR_ERR(xino.file); ++ if (IS_ERR(xino.file)) ++ goto out; ++ ++ err = au_xino_set(sb, &xino, /*remount*/0); ++ fput(xino.file); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ /* restore udba */ ++ tmp &= AuOptMask_UDBA; ++ sbinfo->si_mntflags &= ~AuOptMask_UDBA; ++ sbinfo->si_mntflags |= tmp; ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ err = au_hnotify_reset_br(tmp, br, br->br_perm); ++ if (unlikely(err)) ++ AuIOErr("hnotify failed on br %d, %d, ignored\n", ++ bindex, err); ++ /* go on even if err */ ++ } ++ if (au_opt_test(tmp, UDBA_HNOTIFY)) { ++ dir = d_inode(sb->s_root); ++ au_hn_reset(dir, au_hi_flags(dir, /*isdir*/1) & ~AuHi_XINO); ++ } ++ ++out: ++ return err; ++} ++ ++int au_opts_remount(struct super_block *sb, struct au_opts *opts) ++{ ++ int err, rerr; ++ unsigned char no_dreval; ++ struct inode *dir; ++ struct au_opt_xino *opt_xino; ++ struct au_opt *opt; ++ struct au_sbinfo *sbinfo; ++ ++ SiMustWriteLock(sb); ++ ++ err = au_dr_opt_flush(sb); ++ if (unlikely(err)) ++ goto out; ++ au_fset_opts(opts->flags, DR_FLUSHED); ++ ++ dir = d_inode(sb->s_root); ++ sbinfo = au_sbi(sb); ++ opt_xino = NULL; ++ opt = opts->opt; ++ while (err >= 0 && opt->type != Opt_tail) { ++ err = au_opt_simple(sb, opt, opts); ++ if (!err) ++ err = au_opt_br(sb, opt, opts); ++ if (!err) ++ err = au_opt_xino(sb, opt, &opt_xino, opts); ++ opt++; ++ } ++ if (err > 0) ++ err = 0; ++ AuTraceErr(err); ++ /* go on even err */ ++ ++ no_dreval = !!au_ftest_si(sbinfo, NO_DREVAL); ++ rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); ++ if (unlikely(rerr && !err)) ++ err = rerr; ++ ++ if (no_dreval != !!au_ftest_si(sbinfo, NO_DREVAL)) ++ au_fset_opts(opts->flags, REFRESH_IDOP); ++ ++ if (au_ftest_opts(opts->flags, TRUNC_XIB)) { ++ rerr = au_xib_trunc(sb); ++ if (unlikely(rerr && !err)) ++ err = rerr; ++ } ++ ++ /* will be handled by the caller */ ++ if (!au_ftest_opts(opts->flags, REFRESH) ++ && (opts->given_udba ++ || au_opt_test(sbinfo->si_mntflags, XINO) ++ || au_ftest_opts(opts->flags, REFRESH_IDOP) ++ )) ++ au_fset_opts(opts->flags, REFRESH); ++ ++ AuDbg("status 0x%x\n", opts->flags); ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++unsigned int au_opt_udba(struct super_block *sb) ++{ ++ return au_mntflags(sb) & AuOptMask_UDBA; ++} +diff -Naur null/fs/aufs/opts.h linux-5.15.36/fs/aufs/opts.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/opts.h 2022-05-10 16:51:39.875744219 +0300 +@@ -0,0 +1,263 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * mount options/flags ++ */ ++ ++#ifndef __AUFS_OPTS_H__ ++#define __AUFS_OPTS_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++ ++enum { ++ Opt_br, ++ Opt_add, Opt_del, Opt_mod, Opt_append, Opt_prepend, ++ Opt_idel, Opt_imod, ++ Opt_dirwh, Opt_rdcache, Opt_rdblk, Opt_rdhash, ++ Opt_xino, Opt_noxino, ++ Opt_trunc_xino, Opt_trunc_xino_v, ++ Opt_trunc_xino_path, Opt_itrunc_xino, ++ Opt_trunc_xib, ++ Opt_shwh, ++ Opt_plink, Opt_list_plink, ++ Opt_udba, ++ Opt_dio, ++ Opt_diropq, Opt_diropq_a, Opt_diropq_w, ++ Opt_warn_perm, ++ Opt_wbr_copyup, Opt_wbr_create, ++ Opt_fhsm_sec, ++ Opt_verbose, Opt_noverbose, ++ Opt_sum, Opt_wsum, ++ Opt_dirperm1, ++ Opt_dirren, ++ Opt_acl, ++ Opt_tail, Opt_ignore, Opt_ignore_silent, Opt_err ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* mount flags */ ++#define AuOpt_XINO 1 /* external inode number bitmap ++ and translation table */ ++#define AuOpt_TRUNC_XINO (1 << 1) /* truncate xino files */ ++#define AuOpt_UDBA_NONE (1 << 2) /* users direct branch access */ ++#define AuOpt_UDBA_REVAL (1 << 3) ++#define AuOpt_UDBA_HNOTIFY (1 << 4) ++#define AuOpt_SHWH (1 << 5) /* show whiteout */ ++#define AuOpt_PLINK (1 << 6) /* pseudo-link */ ++#define AuOpt_DIRPERM1 (1 << 7) /* ignore the lower dir's perm ++ bits */ ++#define AuOpt_ALWAYS_DIROPQ (1 << 9) /* policy to creating diropq */ ++#define AuOpt_SUM (1 << 10) /* summation for statfs(2) */ ++#define AuOpt_SUM_W (1 << 11) /* unimplemented */ ++#define AuOpt_WARN_PERM (1 << 12) /* warn when add-branch */ ++#define AuOpt_VERBOSE (1 << 13) /* print the cause of error */ ++#define AuOpt_DIO (1 << 14) /* direct io */ ++#define AuOpt_DIRREN (1 << 15) /* directory rename */ ++ ++#ifndef CONFIG_AUFS_HNOTIFY ++#undef AuOpt_UDBA_HNOTIFY ++#define AuOpt_UDBA_HNOTIFY 0 ++#endif ++#ifndef CONFIG_AUFS_DIRREN ++#undef AuOpt_DIRREN ++#define AuOpt_DIRREN 0 ++#endif ++#ifndef CONFIG_AUFS_SHWH ++#undef AuOpt_SHWH ++#define AuOpt_SHWH 0 ++#endif ++ ++#define AuOpt_Def (AuOpt_XINO \ ++ | AuOpt_UDBA_REVAL \ ++ | AuOpt_PLINK \ ++ /* | AuOpt_DIRPERM1 */ \ ++ | AuOpt_WARN_PERM) ++#define AuOptMask_UDBA (AuOpt_UDBA_NONE \ ++ | AuOpt_UDBA_REVAL \ ++ | AuOpt_UDBA_HNOTIFY) ++ ++#define AuOpt_LkupDirFlags (LOOKUP_FOLLOW | LOOKUP_DIRECTORY) ++ ++#define au_opt_test(flags, name) (flags & AuOpt_##name) ++#define au_opt_set(flags, name) do { \ ++ BUILD_BUG_ON(AuOpt_##name & AuOptMask_UDBA); \ ++ ((flags) |= AuOpt_##name); \ ++} while (0) ++#define au_opt_set_udba(flags, name) do { \ ++ (flags) &= ~AuOptMask_UDBA; \ ++ ((flags) |= AuOpt_##name); \ ++} while (0) ++#define au_opt_clr(flags, name) do { \ ++ ((flags) &= ~AuOpt_##name); \ ++} while (0) ++ ++static inline unsigned int au_opts_plink(unsigned int mntflags) ++{ ++#ifdef CONFIG_PROC_FS ++ return mntflags; ++#else ++ return mntflags & ~AuOpt_PLINK; ++#endif ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* policies to select one among multiple writable branches */ ++enum { ++ AuWbrCreate_TDP, /* top down parent */ ++ AuWbrCreate_RR, /* round robin */ ++ AuWbrCreate_MFS, /* most free space */ ++ AuWbrCreate_MFSV, /* mfs with seconds */ ++ AuWbrCreate_MFSRR, /* mfs then rr */ ++ AuWbrCreate_MFSRRV, /* mfs then rr with seconds */ ++ AuWbrCreate_TDMFS, /* top down regardless parent and mfs */ ++ AuWbrCreate_TDMFSV, /* top down regardless parent and mfs */ ++ AuWbrCreate_PMFS, /* parent and mfs */ ++ AuWbrCreate_PMFSV, /* parent and mfs with seconds */ ++ AuWbrCreate_PMFSRR, /* parent, mfs and round-robin */ ++ AuWbrCreate_PMFSRRV, /* plus seconds */ ++ ++ AuWbrCreate_Def = AuWbrCreate_TDP ++}; ++ ++enum { ++ AuWbrCopyup_TDP, /* top down parent */ ++ AuWbrCopyup_BUP, /* bottom up parent */ ++ AuWbrCopyup_BU, /* bottom up */ ++ ++ AuWbrCopyup_Def = AuWbrCopyup_TDP ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct file; ++ ++struct au_opt_add { ++ aufs_bindex_t bindex; ++ char *pathname; ++ int perm; ++ struct path path; ++}; ++ ++struct au_opt_del { ++ char *pathname; ++ struct path h_path; ++}; ++ ++struct au_opt_mod { ++ char *path; ++ int perm; ++ struct dentry *h_root; ++}; ++ ++struct au_opt_xino { ++ char *path; ++ struct file *file; ++}; ++ ++struct au_opt_xino_itrunc { ++ aufs_bindex_t bindex; ++}; ++ ++struct au_opt_wbr_create { ++ int wbr_create; ++ int mfs_second; ++ unsigned long long mfsrr_watermark; ++}; ++ ++struct au_opt { ++ int type; ++ union { ++ struct au_opt_xino xino; ++ struct au_opt_xino_itrunc xino_itrunc; ++ struct au_opt_add add; ++ struct au_opt_del del; ++ struct au_opt_mod mod; ++ int dirwh; ++ int rdcache; ++ unsigned int rdblk; ++ unsigned int rdhash; ++ int udba; ++ struct au_opt_wbr_create wbr_create; ++ int wbr_copyup; ++ unsigned int fhsm_second; ++ bool tf; /* generic flag, true or false */ ++ }; ++}; ++ ++/* opts flags */ ++#define AuOpts_REMOUNT 1 ++#define AuOpts_REFRESH (1 << 1) ++#define AuOpts_TRUNC_XIB (1 << 2) ++#define AuOpts_REFRESH_DYAOP (1 << 3) ++#define AuOpts_REFRESH_IDOP (1 << 4) ++#define AuOpts_DR_FLUSHED (1 << 5) ++#define au_ftest_opts(flags, name) ((flags) & AuOpts_##name) ++#define au_fset_opts(flags, name) \ ++ do { (flags) |= AuOpts_##name; } while (0) ++#define au_fclr_opts(flags, name) \ ++ do { (flags) &= ~AuOpts_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_DIRREN ++#undef AuOpts_DR_FLUSHED ++#define AuOpts_DR_FLUSHED 0 ++#endif ++ ++struct au_opts { ++ struct au_opt *opt; ++ int max_opt; ++ ++ unsigned int given_udba; ++ unsigned int flags; ++ unsigned long sb_flags; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* opts.c */ ++int au_br_perm_val(char *perm); ++void au_optstr_br_perm(au_br_perm_str_t *str, int perm); ++int au_udba_val(char *str); ++const char *au_optstr_udba(int udba); ++int au_wbr_create_val(char *str, struct au_opt_wbr_create *create); ++const char *au_optstr_wbr_create(int wbr_create); ++int au_wbr_copyup_val(char *str); ++const char *au_optstr_wbr_copyup(int wbr_copyup); ++ ++int au_opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, ++ aufs_bindex_t bindex); ++struct super_block; ++int au_opts_verify(struct super_block *sb, unsigned long sb_flags, ++ unsigned int pending); ++int au_opts_mount(struct super_block *sb, struct au_opts *opts); ++int au_opts_remount(struct super_block *sb, struct au_opts *opts); ++ ++unsigned int au_opt_udba(struct super_block *sb); ++ ++/* fsctx.c */ ++int aufs_fsctx_init(struct fs_context *fc); ++extern const struct fs_parameter_spec aufs_fsctx_paramspec[]; ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_OPTS_H__ */ +diff -Naur null/fs/aufs/plink.c linux-5.15.36/fs/aufs/plink.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/plink.c 2022-05-10 16:51:39.875744219 +0300 +@@ -0,0 +1,516 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * pseudo-link ++ */ ++ ++#include "aufs.h" ++ ++/* ++ * the pseudo-link maintenance mode. ++ * during a user process maintains the pseudo-links, ++ * prohibit adding a new plink and branch manipulation. ++ * ++ * Flags ++ * NOPLM: ++ * For entry functions which will handle plink, and i_mutex is already held ++ * in VFS. ++ * They cannot wait and should return an error at once. ++ * Callers has to check the error. ++ * NOPLMW: ++ * For entry functions which will handle plink, but i_mutex is not held ++ * in VFS. ++ * They can wait the plink maintenance mode to finish. ++ * ++ * They behave like F_SETLK and F_SETLKW. ++ * If the caller never handle plink, then both flags are unnecessary. ++ */ ++ ++int au_plink_maint(struct super_block *sb, int flags) ++{ ++ int err; ++ pid_t pid, ppid; ++ struct task_struct *parent, *prev; ++ struct au_sbinfo *sbi; ++ ++ SiMustAnyLock(sb); ++ ++ err = 0; ++ if (!au_opt_test(au_mntflags(sb), PLINK)) ++ goto out; ++ ++ sbi = au_sbi(sb); ++ pid = sbi->si_plink_maint_pid; ++ if (!pid || pid == current->pid) ++ goto out; ++ ++ /* todo: it highly depends upon /sbin/mount.aufs */ ++ prev = NULL; ++ parent = current; ++ ppid = 0; ++ rcu_read_lock(); ++ while (1) { ++ parent = rcu_dereference(parent->real_parent); ++ if (parent == prev) ++ break; ++ ppid = task_pid_vnr(parent); ++ if (pid == ppid) { ++ rcu_read_unlock(); ++ goto out; ++ } ++ prev = parent; ++ } ++ rcu_read_unlock(); ++ ++ if (au_ftest_lock(flags, NOPLMW)) { ++ /* if there is no i_mutex lock in VFS, we don't need to wait */ ++ /* AuDebugOn(!lockdep_depth(current)); */ ++ while (sbi->si_plink_maint_pid) { ++ si_read_unlock(sb); ++ /* gave up wake_up_bit() */ ++ wait_event(sbi->si_plink_wq, !sbi->si_plink_maint_pid); ++ ++ if (au_ftest_lock(flags, FLUSH)) ++ au_nwt_flush(&sbi->si_nowait); ++ si_noflush_read_lock(sb); ++ } ++ } else if (au_ftest_lock(flags, NOPLM)) { ++ AuDbg("ppid %d, pid %d\n", ppid, pid); ++ err = -EAGAIN; ++ } ++ ++out: ++ return err; ++} ++ ++void au_plink_maint_leave(struct au_sbinfo *sbinfo) ++{ ++ spin_lock(&sbinfo->si_plink_maint_lock); ++ sbinfo->si_plink_maint_pid = 0; ++ spin_unlock(&sbinfo->si_plink_maint_lock); ++ wake_up_all(&sbinfo->si_plink_wq); ++} ++ ++int au_plink_maint_enter(struct super_block *sb) ++{ ++ int err; ++ struct au_sbinfo *sbinfo; ++ ++ err = 0; ++ sbinfo = au_sbi(sb); ++ /* make sure i am the only one in this fs */ ++ si_write_lock(sb, AuLock_FLUSH); ++ if (au_opt_test(au_mntflags(sb), PLINK)) { ++ spin_lock(&sbinfo->si_plink_maint_lock); ++ if (!sbinfo->si_plink_maint_pid) ++ sbinfo->si_plink_maint_pid = current->pid; ++ else ++ err = -EBUSY; ++ spin_unlock(&sbinfo->si_plink_maint_lock); ++ } ++ si_write_unlock(sb); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_DEBUG ++void au_plink_list(struct super_block *sb) ++{ ++ int i; ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ struct au_icntnr *icntnr; ++ ++ SiMustAnyLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); ++ AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); ++ ++ for (i = 0; i < AuPlink_NHASH; i++) { ++ hbl = sbinfo->si_plink + i; ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(icntnr, pos, hbl, plink) ++ AuDbg("%lu\n", icntnr->vfs_inode.i_ino); ++ hlist_bl_unlock(hbl); ++ } ++} ++#endif ++ ++/* is the inode pseudo-linked? */ ++int au_plink_test(struct inode *inode) ++{ ++ int found, i; ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ struct au_icntnr *icntnr; ++ ++ sbinfo = au_sbi(inode->i_sb); ++ AuRwMustAnyLock(&sbinfo->si_rwsem); ++ AuDebugOn(!au_opt_test(au_mntflags(inode->i_sb), PLINK)); ++ AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); ++ ++ found = 0; ++ i = au_plink_hash(inode->i_ino); ++ hbl = sbinfo->si_plink + i; ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(icntnr, pos, hbl, plink) ++ if (&icntnr->vfs_inode == inode) { ++ found = 1; ++ break; ++ } ++ hlist_bl_unlock(hbl); ++ return found; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * generate a name for plink. ++ * the file will be stored under AUFS_WH_PLINKDIR. ++ */ ++/* 20 is max digits length of ulong 64 */ ++#define PLINK_NAME_LEN ((20 + 1) * 2) ++ ++static int plink_name(char *name, int len, struct inode *inode, ++ aufs_bindex_t bindex) ++{ ++ int rlen; ++ struct inode *h_inode; ++ ++ h_inode = au_h_iptr(inode, bindex); ++ rlen = snprintf(name, len, "%lu.%lu", inode->i_ino, h_inode->i_ino); ++ return rlen; ++} ++ ++struct au_do_plink_lkup_args { ++ struct dentry **errp; ++ struct qstr *tgtname; ++ struct path *h_ppath; ++}; ++ ++static struct dentry *au_do_plink_lkup(struct qstr *tgtname, ++ struct path *h_ppath) ++{ ++ struct dentry *h_dentry; ++ struct inode *h_inode; ++ ++ h_inode = d_inode(h_ppath->dentry); ++ inode_lock_shared_nested(h_inode, AuLsc_I_CHILD2); ++ h_dentry = vfsub_lkup_one(tgtname, h_ppath); ++ inode_unlock_shared(h_inode); ++ ++ return h_dentry; ++} ++ ++static void au_call_do_plink_lkup(void *args) ++{ ++ struct au_do_plink_lkup_args *a = args; ++ *a->errp = au_do_plink_lkup(a->tgtname, a->h_ppath); ++} ++ ++/* lookup the plink-ed @inode under the branch at @bindex */ ++struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex) ++{ ++ struct dentry *h_dentry; ++ struct au_branch *br; ++ struct path h_ppath; ++ int wkq_err; ++ char a[PLINK_NAME_LEN]; ++ struct qstr tgtname = QSTR_INIT(a, 0); ++ ++ AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); ++ ++ br = au_sbr(inode->i_sb, bindex); ++ h_ppath.dentry = br->br_wbr->wbr_plink; ++ h_ppath.mnt = au_br_mnt(br); ++ tgtname.len = plink_name(a, sizeof(a), inode, bindex); ++ ++ if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { ++ struct au_do_plink_lkup_args args = { ++ .errp = &h_dentry, ++ .tgtname = &tgtname, ++ .h_ppath = &h_ppath ++ }; ++ ++ wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args); ++ if (unlikely(wkq_err)) ++ h_dentry = ERR_PTR(wkq_err); ++ } else ++ h_dentry = au_do_plink_lkup(&tgtname, &h_ppath); ++ ++ return h_dentry; ++} ++ ++/* create a pseudo-link */ ++static int do_whplink(struct qstr *tgt, struct path *h_ppath, ++ struct dentry *h_dentry) ++{ ++ int err; ++ struct path h_path; ++ struct inode *h_dir, *delegated; ++ ++ h_dir = d_inode(h_ppath->dentry); ++ inode_lock_nested(h_dir, AuLsc_I_CHILD2); ++ h_path.mnt = h_ppath->mnt; ++again: ++ h_path.dentry = vfsub_lkup_one(tgt, h_ppath); ++ err = PTR_ERR(h_path.dentry); ++ if (IS_ERR(h_path.dentry)) ++ goto out; ++ ++ err = 0; ++ /* wh.plink dir is not monitored */ ++ /* todo: is it really safe? */ ++ if (d_is_positive(h_path.dentry) ++ && d_inode(h_path.dentry) != d_inode(h_dentry)) { ++ delegated = NULL; ++ err = vfsub_unlink(h_dir, &h_path, &delegated, /*force*/0); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ dput(h_path.dentry); ++ h_path.dentry = NULL; ++ if (!err) ++ goto again; ++ } ++ if (!err && d_is_negative(h_path.dentry)) { ++ delegated = NULL; ++ err = vfsub_link(h_dentry, h_dir, &h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ } ++ dput(h_path.dentry); ++ ++out: ++ inode_unlock(h_dir); ++ return err; ++} ++ ++struct do_whplink_args { ++ int *errp; ++ struct qstr *tgt; ++ struct path *h_ppath; ++ struct dentry *h_dentry; ++}; ++ ++static void call_do_whplink(void *args) ++{ ++ struct do_whplink_args *a = args; ++ *a->errp = do_whplink(a->tgt, a->h_ppath, a->h_dentry); ++} ++ ++static int whplink(struct dentry *h_dentry, struct inode *inode, ++ aufs_bindex_t bindex) ++{ ++ int err, wkq_err; ++ struct au_branch *br; ++ struct au_wbr *wbr; ++ struct path h_ppath; ++ char a[PLINK_NAME_LEN]; ++ struct qstr tgtname = QSTR_INIT(a, 0); ++ ++ br = au_sbr(inode->i_sb, bindex); ++ wbr = br->br_wbr; ++ h_ppath.dentry = wbr->wbr_plink; ++ h_ppath.mnt = au_br_mnt(br); ++ tgtname.len = plink_name(a, sizeof(a), inode, bindex); ++ ++ /* always superio. */ ++ if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { ++ struct do_whplink_args args = { ++ .errp = &err, ++ .tgt = &tgtname, ++ .h_ppath = &h_ppath, ++ .h_dentry = h_dentry ++ }; ++ wkq_err = au_wkq_wait(call_do_whplink, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } else ++ err = do_whplink(&tgtname, &h_ppath, h_dentry); ++ ++ return err; ++} ++ ++/* ++ * create a new pseudo-link for @h_dentry on @bindex. ++ * the linked inode is held in aufs @inode. ++ */ ++void au_plink_append(struct inode *inode, aufs_bindex_t bindex, ++ struct dentry *h_dentry) ++{ ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ struct au_icntnr *icntnr; ++ int found, err, cnt, i; ++ ++ sb = inode->i_sb; ++ sbinfo = au_sbi(sb); ++ AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); ++ AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); ++ ++ found = au_plink_test(inode); ++ if (found) ++ return; ++ ++ i = au_plink_hash(inode->i_ino); ++ hbl = sbinfo->si_plink + i; ++ au_igrab(inode); ++ ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry(icntnr, pos, hbl, plink) { ++ if (&icntnr->vfs_inode == inode) { ++ found = 1; ++ break; ++ } ++ } ++ if (!found) { ++ icntnr = container_of(inode, struct au_icntnr, vfs_inode); ++ hlist_bl_add_head(&icntnr->plink, hbl); ++ } ++ hlist_bl_unlock(hbl); ++ if (!found) { ++ cnt = au_hbl_count(hbl); ++#define msg "unexpectedly unbalanced or too many pseudo-links" ++ if (cnt > AUFS_PLINK_WARN) ++ AuWarn1(msg ", %d\n", cnt); ++#undef msg ++ err = whplink(h_dentry, inode, bindex); ++ if (unlikely(err)) { ++ pr_warn("err %d, damaged pseudo link.\n", err); ++ au_hbl_del(&icntnr->plink, hbl); ++ iput(&icntnr->vfs_inode); ++ } ++ } else ++ iput(&icntnr->vfs_inode); ++} ++ ++/* free all plinks */ ++void au_plink_put(struct super_block *sb, int verbose) ++{ ++ int i, warned; ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos, *tmp; ++ struct au_icntnr *icntnr; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); ++ AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); ++ ++ /* no spin_lock since sbinfo is write-locked */ ++ warned = 0; ++ for (i = 0; i < AuPlink_NHASH; i++) { ++ hbl = sbinfo->si_plink + i; ++ if (!warned && verbose && !hlist_bl_empty(hbl)) { ++ pr_warn("pseudo-link is not flushed"); ++ warned = 1; ++ } ++ hlist_bl_for_each_entry_safe(icntnr, pos, tmp, hbl, plink) ++ iput(&icntnr->vfs_inode); ++ INIT_HLIST_BL_HEAD(hbl); ++ } ++} ++ ++void au_plink_clean(struct super_block *sb, int verbose) ++{ ++ struct dentry *root; ++ ++ root = sb->s_root; ++ aufs_write_lock(root); ++ if (au_opt_test(au_mntflags(sb), PLINK)) ++ au_plink_put(sb, verbose); ++ aufs_write_unlock(root); ++} ++ ++static int au_plink_do_half_refresh(struct inode *inode, aufs_bindex_t br_id) ++{ ++ int do_put; ++ aufs_bindex_t btop, bbot, bindex; ++ ++ do_put = 0; ++ btop = au_ibtop(inode); ++ bbot = au_ibbot(inode); ++ if (btop >= 0) { ++ for (bindex = btop; bindex <= bbot; bindex++) { ++ if (!au_h_iptr(inode, bindex) ++ || au_ii_br_id(inode, bindex) != br_id) ++ continue; ++ au_set_h_iptr(inode, bindex, NULL, 0); ++ do_put = 1; ++ break; ++ } ++ if (do_put) ++ for (bindex = btop; bindex <= bbot; bindex++) ++ if (au_h_iptr(inode, bindex)) { ++ do_put = 0; ++ break; ++ } ++ } else ++ do_put = 1; ++ ++ return do_put; ++} ++ ++/* free the plinks on a branch specified by @br_id */ ++void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id) ++{ ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos, *tmp; ++ struct au_icntnr *icntnr; ++ struct inode *inode; ++ int i, do_put; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); ++ AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); ++ ++ /* no bit_lock since sbinfo is write-locked */ ++ for (i = 0; i < AuPlink_NHASH; i++) { ++ hbl = sbinfo->si_plink + i; ++ hlist_bl_for_each_entry_safe(icntnr, pos, tmp, hbl, plink) { ++ inode = au_igrab(&icntnr->vfs_inode); ++ ii_write_lock_child(inode); ++ do_put = au_plink_do_half_refresh(inode, br_id); ++ if (do_put) { ++ hlist_bl_del(&icntnr->plink); ++ iput(inode); ++ } ++ ii_write_unlock(inode); ++ iput(inode); ++ } ++ } ++} +diff -Naur null/fs/aufs/poll.c linux-5.15.36/fs/aufs/poll.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/poll.c 2022-05-10 16:51:39.875744219 +0300 +@@ -0,0 +1,51 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * poll operation ++ * There is only one filesystem which implements ->poll operation, currently. ++ */ ++ ++#include "aufs.h" ++ ++__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt) ++{ ++ __poll_t mask; ++ struct file *h_file; ++ struct super_block *sb; ++ ++ /* We should pretend an error happened. */ ++ mask = EPOLLERR /* | EPOLLIN | EPOLLOUT */; ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); ++ ++ h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); ++ if (IS_ERR(h_file)) { ++ AuDbg("h_file %ld\n", PTR_ERR(h_file)); ++ goto out; ++ } ++ ++ mask = vfs_poll(h_file, pt); ++ fput(h_file); /* instead of au_read_post() */ ++ ++out: ++ si_read_unlock(sb); ++ if (mask & EPOLLERR) ++ AuDbg("mask 0x%x\n", mask); ++ return mask; ++} +diff -Naur null/fs/aufs/posix_acl.c linux-5.15.36/fs/aufs/posix_acl.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/posix_acl.c 2022-05-10 16:51:39.875744219 +0300 +@@ -0,0 +1,111 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2014-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * posix acl operations ++ */ ++ ++#include ++#include "aufs.h" ++ ++struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu) ++{ ++ struct posix_acl *acl; ++ int err; ++ aufs_bindex_t bindex; ++ struct inode *h_inode; ++ struct super_block *sb; ++ ++ acl = ERR_PTR(-ECHILD); ++ if (rcu) ++ goto out; ++ ++ acl = NULL; ++ sb = inode->i_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ ii_read_lock_child(inode); ++ if (!(sb->s_flags & SB_POSIXACL)) ++ goto unlock; ++ ++ bindex = au_ibtop(inode); ++ h_inode = au_h_iptr(inode, bindex); ++ if (unlikely(!h_inode ++ || ((h_inode->i_mode & S_IFMT) ++ != (inode->i_mode & S_IFMT)))) { ++ err = au_busy_or_stale(); ++ acl = ERR_PTR(err); ++ goto unlock; ++ } ++ ++ /* always topmost only */ ++ acl = get_acl(h_inode, type); ++ if (IS_ERR(acl)) ++ forget_cached_acl(inode, type); ++ else ++ set_cached_acl(inode, type, acl); ++ ++unlock: ++ ii_read_unlock(inode); ++ si_read_unlock(sb); ++ ++out: ++ AuTraceErrPtr(acl); ++ return acl; ++} ++ ++int aufs_set_acl(struct user_namespace *userns, struct inode *inode, ++ struct posix_acl *acl, int type) ++{ ++ int err; ++ ssize_t ssz; ++ struct dentry *dentry; ++ struct au_sxattr arg = { ++ .type = AU_ACL_SET, ++ .u.acl_set = { ++ .acl = acl, ++ .type = type ++ }, ++ }; ++ ++ IMustLock(inode); ++ ++ if (inode->i_ino == AUFS_ROOT_INO) ++ dentry = dget(inode->i_sb->s_root); ++ else { ++ dentry = d_find_alias(inode); ++ if (!dentry) ++ dentry = d_find_any_alias(inode); ++ if (!dentry) { ++ pr_warn("cannot handle this inode, " ++ "please report to aufs-users ML\n"); ++ err = -ENOENT; ++ goto out; ++ } ++ } ++ ++ ssz = au_sxattr(dentry, inode, &arg); ++ /* forget even it if succeeds since the branch might set differently */ ++ forget_cached_acl(inode, type); ++ dput(dentry); ++ err = ssz; ++ if (ssz >= 0) ++ err = 0; ++ ++out: ++ return err; ++} +diff -Naur null/fs/aufs/procfs.c linux-5.15.36/fs/aufs/procfs.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/procfs.c 2022-05-10 16:51:39.875744219 +0300 +@@ -0,0 +1,170 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2010-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * procfs interfaces ++ */ ++ ++#include ++#include "aufs.h" ++ ++static int au_procfs_plm_release(struct inode *inode, struct file *file) ++{ ++ struct au_sbinfo *sbinfo; ++ ++ sbinfo = file->private_data; ++ if (sbinfo) { ++ au_plink_maint_leave(sbinfo); ++ kobject_put(&sbinfo->si_kobj); ++ } ++ ++ return 0; ++} ++ ++static void au_procfs_plm_write_clean(struct file *file) ++{ ++ struct au_sbinfo *sbinfo; ++ ++ sbinfo = file->private_data; ++ if (sbinfo) ++ au_plink_clean(sbinfo->si_sb, /*verbose*/0); ++} ++ ++static int au_procfs_plm_write_si(struct file *file, unsigned long id) ++{ ++ int err; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_node *pos; ++ ++ err = -EBUSY; ++ if (unlikely(file->private_data)) ++ goto out; ++ ++ sb = NULL; ++ /* don't use au_sbilist_lock() here */ ++ hlist_bl_lock(&au_sbilist); ++ hlist_bl_for_each_entry(sbinfo, pos, &au_sbilist, si_list) ++ if (id == sysaufs_si_id(sbinfo)) { ++ if (kobject_get_unless_zero(&sbinfo->si_kobj)) ++ sb = sbinfo->si_sb; ++ break; ++ } ++ hlist_bl_unlock(&au_sbilist); ++ ++ err = -EINVAL; ++ if (unlikely(!sb)) ++ goto out; ++ ++ err = au_plink_maint_enter(sb); ++ if (!err) ++ /* keep kobject_get() */ ++ file->private_data = sbinfo; ++ else ++ kobject_put(&sbinfo->si_kobj); ++out: ++ return err; ++} ++ ++/* ++ * Accept a valid "si=xxxx" only. ++ * Once it is accepted successfully, accept "clean" too. ++ */ ++static ssize_t au_procfs_plm_write(struct file *file, const char __user *ubuf, ++ size_t count, loff_t *ppos) ++{ ++ ssize_t err; ++ unsigned long id; ++ /* last newline is allowed */ ++ char buf[3 + sizeof(unsigned long) * 2 + 1]; ++ ++ err = -EACCES; ++ if (unlikely(!capable(CAP_SYS_ADMIN))) ++ goto out; ++ ++ err = -EINVAL; ++ if (unlikely(count > sizeof(buf))) ++ goto out; ++ ++ err = copy_from_user(buf, ubuf, count); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ goto out; ++ } ++ buf[count] = 0; ++ ++ err = -EINVAL; ++ if (!strcmp("clean", buf)) { ++ au_procfs_plm_write_clean(file); ++ goto out_success; ++ } else if (unlikely(strncmp("si=", buf, 3))) ++ goto out; ++ ++ err = kstrtoul(buf + 3, 16, &id); ++ if (unlikely(err)) ++ goto out; ++ ++ err = au_procfs_plm_write_si(file, id); ++ if (unlikely(err)) ++ goto out; ++ ++out_success: ++ err = count; /* success */ ++out: ++ return err; ++} ++ ++static const struct proc_ops au_procfs_plm_op = { ++ .proc_write = au_procfs_plm_write, ++ .proc_release = au_procfs_plm_release ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct proc_dir_entry *au_procfs_dir; ++ ++void au_procfs_fin(void) ++{ ++ remove_proc_entry(AUFS_PLINK_MAINT_NAME, au_procfs_dir); ++ remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); ++} ++ ++int __init au_procfs_init(void) ++{ ++ int err; ++ struct proc_dir_entry *entry; ++ ++ err = -ENOMEM; ++ au_procfs_dir = proc_mkdir(AUFS_PLINK_MAINT_DIR, NULL); ++ if (unlikely(!au_procfs_dir)) ++ goto out; ++ ++ entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | 0200, ++ au_procfs_dir, &au_procfs_plm_op); ++ if (unlikely(!entry)) ++ goto out_dir; ++ ++ err = 0; ++ goto out; /* success */ ++ ++ ++out_dir: ++ remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); ++out: ++ return err; ++} +diff -Naur null/fs/aufs/rdu.c linux-5.15.36/fs/aufs/rdu.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/rdu.c 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,384 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * readdir in userspace. ++ */ ++ ++#include ++#include ++#include ++#include "aufs.h" ++ ++/* bits for struct aufs_rdu.flags */ ++#define AuRdu_CALLED 1 ++#define AuRdu_CONT (1 << 1) ++#define AuRdu_FULL (1 << 2) ++#define au_ftest_rdu(flags, name) ((flags) & AuRdu_##name) ++#define au_fset_rdu(flags, name) \ ++ do { (flags) |= AuRdu_##name; } while (0) ++#define au_fclr_rdu(flags, name) \ ++ do { (flags) &= ~AuRdu_##name; } while (0) ++ ++struct au_rdu_arg { ++ struct dir_context ctx; ++ struct aufs_rdu *rdu; ++ union au_rdu_ent_ul ent; ++ unsigned long end; ++ ++ struct super_block *sb; ++ int err; ++}; ++ ++static int au_rdu_fill(struct dir_context *ctx, const char *name, int nlen, ++ loff_t offset, u64 h_ino, unsigned int d_type) ++{ ++ int err, len; ++ struct au_rdu_arg *arg = container_of(ctx, struct au_rdu_arg, ctx); ++ struct aufs_rdu *rdu = arg->rdu; ++ struct au_rdu_ent ent; ++ ++ err = 0; ++ arg->err = 0; ++ au_fset_rdu(rdu->cookie.flags, CALLED); ++ len = au_rdu_len(nlen); ++ if (arg->ent.ul + len < arg->end) { ++ ent.ino = h_ino; ++ ent.bindex = rdu->cookie.bindex; ++ ent.type = d_type; ++ ent.nlen = nlen; ++ if (unlikely(nlen > AUFS_MAX_NAMELEN)) ++ ent.type = DT_UNKNOWN; ++ ++ /* unnecessary to support mmap_sem since this is a dir */ ++ err = -EFAULT; ++ if (copy_to_user(arg->ent.e, &ent, sizeof(ent))) ++ goto out; ++ if (copy_to_user(arg->ent.e->name, name, nlen)) ++ goto out; ++ /* the terminating NULL */ ++ if (__put_user(0, arg->ent.e->name + nlen)) ++ goto out; ++ err = 0; ++ /* AuDbg("%p, %.*s\n", arg->ent.p, nlen, name); */ ++ arg->ent.ul += len; ++ rdu->rent++; ++ } else { ++ err = -EFAULT; ++ au_fset_rdu(rdu->cookie.flags, FULL); ++ rdu->full = 1; ++ rdu->tail = arg->ent; ++ } ++ ++out: ++ /* AuTraceErr(err); */ ++ return err; ++} ++ ++static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) ++{ ++ int err; ++ loff_t offset; ++ struct au_rdu_cookie *cookie = &arg->rdu->cookie; ++ ++ /* we don't have to care (FMODE_32BITHASH | FMODE_64BITHASH) for ext4 */ ++ offset = vfsub_llseek(h_file, cookie->h_pos, SEEK_SET); ++ err = offset; ++ if (unlikely(offset != cookie->h_pos)) ++ goto out; ++ ++ err = 0; ++ do { ++ arg->err = 0; ++ au_fclr_rdu(cookie->flags, CALLED); ++ /* smp_mb(); */ ++ err = vfsub_iterate_dir(h_file, &arg->ctx); ++ if (err >= 0) ++ err = arg->err; ++ } while (!err ++ && au_ftest_rdu(cookie->flags, CALLED) ++ && !au_ftest_rdu(cookie->flags, FULL)); ++ cookie->h_pos = h_file->f_pos; ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_rdu(struct file *file, struct aufs_rdu *rdu) ++{ ++ int err; ++ aufs_bindex_t bbot; ++ struct au_rdu_arg arg = { ++ .ctx = { ++ .actor = au_rdu_fill ++ } ++ }; ++ struct dentry *dentry; ++ struct inode *inode; ++ struct file *h_file; ++ struct au_rdu_cookie *cookie = &rdu->cookie; ++ ++ /* VERIFY_WRITE */ ++ err = !access_ok(rdu->ent.e, rdu->sz); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ goto out; ++ } ++ rdu->rent = 0; ++ rdu->tail = rdu->ent; ++ rdu->full = 0; ++ arg.rdu = rdu; ++ arg.ent = rdu->ent; ++ arg.end = arg.ent.ul; ++ arg.end += rdu->sz; ++ ++ err = -ENOTDIR; ++ if (unlikely(!file->f_op->iterate && !file->f_op->iterate_shared)) ++ goto out; ++ ++ err = security_file_permission(file, MAY_READ); ++ AuTraceErr(err); ++ if (unlikely(err)) ++ goto out; ++ ++ dentry = file->f_path.dentry; ++ inode = d_inode(dentry); ++ inode_lock_shared(inode); ++ ++ arg.sb = inode->i_sb; ++ err = si_read_lock(arg.sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out_mtx; ++ err = au_alive_dir(dentry); ++ if (unlikely(err)) ++ goto out_si; ++ /* todo: reval? */ ++ fi_read_lock(file); ++ ++ err = -EAGAIN; ++ if (unlikely(au_ftest_rdu(cookie->flags, CONT) ++ && cookie->generation != au_figen(file))) ++ goto out_unlock; ++ ++ err = 0; ++ if (!rdu->blk) { ++ rdu->blk = au_sbi(arg.sb)->si_rdblk; ++ if (!rdu->blk) ++ rdu->blk = au_dir_size(file, /*dentry*/NULL); ++ } ++ bbot = au_fbtop(file); ++ if (cookie->bindex < bbot) ++ cookie->bindex = bbot; ++ bbot = au_fbbot_dir(file); ++ /* AuDbg("b%d, b%d\n", cookie->bindex, bbot); */ ++ for (; !err && cookie->bindex <= bbot; ++ cookie->bindex++, cookie->h_pos = 0) { ++ h_file = au_hf_dir(file, cookie->bindex); ++ if (!h_file) ++ continue; ++ ++ au_fclr_rdu(cookie->flags, FULL); ++ err = au_rdu_do(h_file, &arg); ++ AuTraceErr(err); ++ if (unlikely(au_ftest_rdu(cookie->flags, FULL) || err)) ++ break; ++ } ++ AuDbg("rent %llu\n", rdu->rent); ++ ++ if (!err && !au_ftest_rdu(cookie->flags, CONT)) { ++ rdu->shwh = !!au_opt_test(au_sbi(arg.sb)->si_mntflags, SHWH); ++ au_fset_rdu(cookie->flags, CONT); ++ cookie->generation = au_figen(file); ++ } ++ ++ ii_read_lock_child(inode); ++ fsstack_copy_attr_atime(inode, au_h_iptr(inode, au_ibtop(inode))); ++ ii_read_unlock(inode); ++ ++out_unlock: ++ fi_read_unlock(file); ++out_si: ++ si_read_unlock(arg.sb); ++out_mtx: ++ inode_unlock_shared(inode); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_rdu_ino(struct file *file, struct aufs_rdu *rdu) ++{ ++ int err; ++ ino_t ino; ++ unsigned long long nent; ++ union au_rdu_ent_ul *u; ++ struct au_rdu_ent ent; ++ struct super_block *sb; ++ ++ err = 0; ++ nent = rdu->nent; ++ u = &rdu->ent; ++ sb = file->f_path.dentry->d_sb; ++ si_read_lock(sb, AuLock_FLUSH); ++ while (nent-- > 0) { ++ /* unnecessary to support mmap_sem since this is a dir */ ++ err = copy_from_user(&ent, u->e, sizeof(ent)); ++ if (!err) ++ /* VERIFY_WRITE */ ++ err = !access_ok(&u->e->ino, sizeof(ino)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ break; ++ } ++ ++ /* AuDbg("b%d, i%llu\n", ent.bindex, ent.ino); */ ++ if (!ent.wh) ++ err = au_ino(sb, ent.bindex, ent.ino, ent.type, &ino); ++ else ++ err = au_wh_ino(sb, ent.bindex, ent.ino, ent.type, ++ &ino); ++ if (unlikely(err)) { ++ AuTraceErr(err); ++ break; ++ } ++ ++ err = __put_user(ino, &u->e->ino); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ break; ++ } ++ u->ul += au_rdu_len(ent.nlen); ++ } ++ si_read_unlock(sb); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_rdu_verify(struct aufs_rdu *rdu) ++{ ++ AuDbg("rdu{%llu, %p, %u | %u | %llu, %u, %u | " ++ "%llu, b%d, 0x%x, g%u}\n", ++ rdu->sz, rdu->ent.e, rdu->verify[AufsCtlRduV_SZ], ++ rdu->blk, ++ rdu->rent, rdu->shwh, rdu->full, ++ rdu->cookie.h_pos, rdu->cookie.bindex, rdu->cookie.flags, ++ rdu->cookie.generation); ++ ++ if (rdu->verify[AufsCtlRduV_SZ] == sizeof(*rdu)) ++ return 0; ++ ++ AuDbg("%u:%u\n", ++ rdu->verify[AufsCtlRduV_SZ], (unsigned int)sizeof(*rdu)); ++ return -EINVAL; ++} ++ ++long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ long err, e; ++ struct aufs_rdu rdu; ++ void __user *p = (void __user *)arg; ++ ++ err = copy_from_user(&rdu, p, sizeof(rdu)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ goto out; ++ } ++ err = au_rdu_verify(&rdu); ++ if (unlikely(err)) ++ goto out; ++ ++ switch (cmd) { ++ case AUFS_CTL_RDU: ++ err = au_rdu(file, &rdu); ++ if (unlikely(err)) ++ break; ++ ++ e = copy_to_user(p, &rdu, sizeof(rdu)); ++ if (unlikely(e)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ } ++ break; ++ case AUFS_CTL_RDU_INO: ++ err = au_rdu_ino(file, &rdu); ++ break; ++ ++ default: ++ /* err = -ENOTTY; */ ++ err = -EINVAL; ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++#ifdef CONFIG_COMPAT ++long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ long err, e; ++ struct aufs_rdu rdu; ++ void __user *p = compat_ptr(arg); ++ ++ /* todo: get_user()? */ ++ err = copy_from_user(&rdu, p, sizeof(rdu)); ++ if (unlikely(err)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ goto out; ++ } ++ rdu.ent.e = compat_ptr(rdu.ent.ul); ++ err = au_rdu_verify(&rdu); ++ if (unlikely(err)) ++ goto out; ++ ++ switch (cmd) { ++ case AUFS_CTL_RDU: ++ err = au_rdu(file, &rdu); ++ if (unlikely(err)) ++ break; ++ ++ rdu.ent.ul = ptr_to_compat(rdu.ent.e); ++ rdu.tail.ul = ptr_to_compat(rdu.tail.e); ++ e = copy_to_user(p, &rdu, sizeof(rdu)); ++ if (unlikely(e)) { ++ err = -EFAULT; ++ AuTraceErr(err); ++ } ++ break; ++ case AUFS_CTL_RDU_INO: ++ err = au_rdu_ino(file, &rdu); ++ break; ++ ++ default: ++ /* err = -ENOTTY; */ ++ err = -EINVAL; ++ } ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++#endif +diff -Naur null/fs/aufs/rwsem.h linux-5.15.36/fs/aufs/rwsem.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/rwsem.h 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,85 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * simple read-write semaphore wrappers ++ */ ++ ++#ifndef __AUFS_RWSEM_H__ ++#define __AUFS_RWSEM_H__ ++ ++#ifdef __KERNEL__ ++ ++#include "debug.h" ++ ++/* in the future, the name 'au_rwsem' will be totally gone */ ++#define au_rwsem rw_semaphore ++ ++/* to debug easier, do not make them inlined functions */ ++#define AuRwMustNoWaiters(rw) AuDebugOn(rwsem_is_contended(rw)) ++ ++#ifdef CONFIG_LOCKDEP ++/* rwsem_is_locked() is unusable */ ++#define AuRwMustReadLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ ++ && !lockdep_recursing(current) \ ++ && debug_locks \ ++ && !lockdep_is_held_type(rw, 1)) ++#define AuRwMustWriteLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ ++ && !lockdep_recursing(current) \ ++ && debug_locks \ ++ && !lockdep_is_held_type(rw, 0)) ++#define AuRwMustAnyLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ ++ && !lockdep_recursing(current) \ ++ && debug_locks \ ++ && !lockdep_is_held(rw)) ++#define AuRwDestroy(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ ++ && !lockdep_recursing(current) \ ++ && 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) ++#endif ++ ++#define au_rw_init(rw) init_rwsem(rw) ++ ++#define au_rw_init_wlock(rw) do { \ ++ au_rw_init(rw); \ ++ down_write(rw); \ ++ } while (0) ++ ++#define au_rw_init_wlock_nested(rw, lsc) do { \ ++ au_rw_init(rw); \ ++ down_write_nested(rw, lsc); \ ++ } while (0) ++ ++#define au_rw_read_lock(rw) down_read(rw) ++#define au_rw_read_lock_nested(rw, lsc) down_read_nested(rw, lsc) ++#define au_rw_read_unlock(rw) up_read(rw) ++#define au_rw_dgrade_lock(rw) downgrade_write(rw) ++#define au_rw_write_lock(rw) down_write(rw) ++#define au_rw_write_lock_nested(rw, lsc) down_write_nested(rw, lsc) ++#define au_rw_write_unlock(rw) up_write(rw) ++/* why is not _nested version defined? */ ++#define au_rw_read_trylock(rw) down_read_trylock(rw) ++#define au_rw_write_trylock(rw) down_write_trylock(rw) ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_RWSEM_H__ */ +diff -Naur null/fs/aufs/sbinfo.c linux-5.15.36/fs/aufs/sbinfo.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/sbinfo.c 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,316 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * superblock private data ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* ++ * they are necessary regardless sysfs is disabled. ++ */ ++void au_si_free(struct kobject *kobj) ++{ ++ int i; ++ struct au_sbinfo *sbinfo; ++ char *locked __maybe_unused; /* debug only */ ++ ++ sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); ++ for (i = 0; i < AuPlink_NHASH; i++) ++ AuDebugOn(!hlist_bl_empty(sbinfo->si_plink + i)); ++ AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); ++ ++ AuLCntZero(au_lcnt_read(&sbinfo->si_ninodes, /*do_rev*/0)); ++ au_lcnt_fin(&sbinfo->si_ninodes, /*do_sync*/0); ++ AuLCntZero(au_lcnt_read(&sbinfo->si_nfiles, /*do_rev*/0)); ++ au_lcnt_fin(&sbinfo->si_nfiles, /*do_sync*/0); ++ ++ dbgaufs_si_fin(sbinfo); ++ au_rw_write_lock(&sbinfo->si_rwsem); ++ au_br_free(sbinfo); ++ au_rw_write_unlock(&sbinfo->si_rwsem); ++ ++ au_kfree_try_rcu(sbinfo->si_branch); ++ mutex_destroy(&sbinfo->si_xib_mtx); ++ AuRwDestroy(&sbinfo->si_rwsem); ++ ++ au_lcnt_wait_for_fin(&sbinfo->si_ninodes); ++ /* si_nfiles is waited too */ ++ au_kfree_rcu(sbinfo); ++} ++ ++struct au_sbinfo *au_si_alloc(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ int err, i; ++ ++ err = -ENOMEM; ++ sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); ++ if (unlikely(!sbinfo)) ++ goto out; ++ ++ /* will be reallocated separately */ ++ sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); ++ if (unlikely(!sbinfo->si_branch)) ++ goto out_sbinfo; ++ ++ err = sysaufs_si_init(sbinfo); ++ if (!err) { ++ dbgaufs_si_null(sbinfo); ++ err = dbgaufs_si_init(sbinfo); ++ if (unlikely(err)) ++ kobject_put(&sbinfo->si_kobj); ++ } ++ if (unlikely(err)) ++ goto out_br; ++ ++ au_nwt_init(&sbinfo->si_nowait); ++ au_rw_init_wlock(&sbinfo->si_rwsem); ++ ++ au_lcnt_init(&sbinfo->si_ninodes, /*release*/NULL); ++ au_lcnt_init(&sbinfo->si_nfiles, /*release*/NULL); ++ ++ sbinfo->si_bbot = -1; ++ sbinfo->si_last_br_id = AUFS_BRANCH_MAX / 2; ++ ++ sbinfo->si_wbr_copyup = AuWbrCopyup_Def; ++ sbinfo->si_wbr_create = AuWbrCreate_Def; ++ sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + sbinfo->si_wbr_copyup; ++ sbinfo->si_wbr_create_ops = au_wbr_create_ops + sbinfo->si_wbr_create; ++ ++ au_fhsm_init(sbinfo); ++ ++ sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); ++ ++ sbinfo->si_xino_jiffy = jiffies; ++ sbinfo->si_xino_expire ++ = msecs_to_jiffies(AUFS_XINO_DEF_SEC * MSEC_PER_SEC); ++ mutex_init(&sbinfo->si_xib_mtx); ++ /* leave si_xib_last_pindex and si_xib_next_bit */ ++ ++ INIT_HLIST_BL_HEAD(&sbinfo->si_aopen); ++ ++ sbinfo->si_rdcache = msecs_to_jiffies(AUFS_RDCACHE_DEF * MSEC_PER_SEC); ++ sbinfo->si_rdblk = AUFS_RDBLK_DEF; ++ sbinfo->si_rdhash = AUFS_RDHASH_DEF; ++ sbinfo->si_dirwh = AUFS_DIRWH_DEF; ++ ++ for (i = 0; i < AuPlink_NHASH; i++) ++ INIT_HLIST_BL_HEAD(sbinfo->si_plink + i); ++ init_waitqueue_head(&sbinfo->si_plink_wq); ++ spin_lock_init(&sbinfo->si_plink_maint_lock); ++ ++ INIT_HLIST_BL_HEAD(&sbinfo->si_files); ++ ++ /* with getattr by default */ ++ sbinfo->si_iop_array = aufs_iop; ++ ++ /* leave other members for sysaufs and si_mnt. */ ++ sbinfo->si_sb = sb; ++ if (sb) { ++ sb->s_fs_info = sbinfo; ++ si_pid_set(sb); ++ } ++ return sbinfo; /* success */ ++ ++out_br: ++ au_kfree_try_rcu(sbinfo->si_branch); ++out_sbinfo: ++ au_kfree_rcu(sbinfo); ++out: ++ return ERR_PTR(err); ++} ++ ++int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr, int may_shrink) ++{ ++ int err, sz; ++ struct au_branch **brp; ++ ++ AuRwMustWriteLock(&sbinfo->si_rwsem); ++ ++ err = -ENOMEM; ++ sz = sizeof(*brp) * (sbinfo->si_bbot + 1); ++ if (unlikely(!sz)) ++ sz = sizeof(*brp); ++ brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS, ++ may_shrink); ++ if (brp) { ++ sbinfo->si_branch = brp; ++ err = 0; ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++unsigned int au_sigen_inc(struct super_block *sb) ++{ ++ unsigned int gen; ++ struct inode *inode; ++ ++ SiMustWriteLock(sb); ++ ++ gen = ++au_sbi(sb)->si_generation; ++ au_update_digen(sb->s_root); ++ inode = d_inode(sb->s_root); ++ au_update_iigen(inode, /*half*/0); ++ inode_inc_iversion(inode); ++ return gen; ++} ++ ++aufs_bindex_t au_new_br_id(struct super_block *sb) ++{ ++ aufs_bindex_t br_id; ++ int i; ++ struct au_sbinfo *sbinfo; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ for (i = 0; i <= AUFS_BRANCH_MAX; i++) { ++ br_id = ++sbinfo->si_last_br_id; ++ AuDebugOn(br_id < 0); ++ if (br_id && au_br_index(sb, br_id) < 0) ++ return br_id; ++ } ++ ++ return -1; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* it is ok that new 'nwt' tasks are appended while we are sleeping */ ++int si_read_lock(struct super_block *sb, int flags) ++{ ++ int err; ++ ++ err = 0; ++ if (au_ftest_lock(flags, FLUSH)) ++ au_nwt_flush(&au_sbi(sb)->si_nowait); ++ ++ si_noflush_read_lock(sb); ++ err = au_plink_maint(sb, flags); ++ if (unlikely(err)) ++ si_read_unlock(sb); ++ ++ return err; ++} ++ ++int si_write_lock(struct super_block *sb, int flags) ++{ ++ int err; ++ ++ if (au_ftest_lock(flags, FLUSH)) ++ au_nwt_flush(&au_sbi(sb)->si_nowait); ++ ++ si_noflush_write_lock(sb); ++ err = au_plink_maint(sb, flags); ++ if (unlikely(err)) ++ si_write_unlock(sb); ++ ++ return err; ++} ++ ++/* dentry and super_block lock. call at entry point */ ++int aufs_read_lock(struct dentry *dentry, int flags) ++{ ++ int err; ++ struct super_block *sb; ++ ++ sb = dentry->d_sb; ++ err = si_read_lock(sb, flags); ++ if (unlikely(err)) ++ goto out; ++ ++ if (au_ftest_lock(flags, DW)) ++ di_write_lock_child(dentry); ++ else ++ di_read_lock_child(dentry, flags); ++ ++ if (au_ftest_lock(flags, GEN)) { ++ err = au_digen_test(dentry, au_sigen(sb)); ++ if (!au_opt_test(au_mntflags(sb), UDBA_NONE)) ++ AuDebugOn(!err && au_dbrange_test(dentry)); ++ else if (!err) ++ err = au_dbrange_test(dentry); ++ if (unlikely(err)) ++ aufs_read_unlock(dentry, flags); ++ } ++ ++out: ++ return err; ++} ++ ++void aufs_read_unlock(struct dentry *dentry, int flags) ++{ ++ if (au_ftest_lock(flags, DW)) ++ di_write_unlock(dentry); ++ else ++ di_read_unlock(dentry, flags); ++ si_read_unlock(dentry->d_sb); ++} ++ ++void aufs_write_lock(struct dentry *dentry) ++{ ++ si_write_lock(dentry->d_sb, AuLock_FLUSH | AuLock_NOPLMW); ++ di_write_lock_child(dentry); ++} ++ ++void aufs_write_unlock(struct dentry *dentry) ++{ ++ di_write_unlock(dentry); ++ si_write_unlock(dentry->d_sb); ++} ++ ++int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags) ++{ ++ int err; ++ unsigned int sigen; ++ struct super_block *sb; ++ ++ sb = d1->d_sb; ++ err = si_read_lock(sb, flags); ++ if (unlikely(err)) ++ goto out; ++ ++ di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIRS)); ++ ++ if (au_ftest_lock(flags, GEN)) { ++ sigen = au_sigen(sb); ++ err = au_digen_test(d1, sigen); ++ AuDebugOn(!err && au_dbrange_test(d1)); ++ if (!err) { ++ err = au_digen_test(d2, sigen); ++ AuDebugOn(!err && au_dbrange_test(d2)); ++ } ++ if (unlikely(err)) ++ aufs_read_and_write_unlock2(d1, d2); ++ } ++ ++out: ++ return err; ++} ++ ++void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2) ++{ ++ di_write_unlock2(d1, d2); ++ si_read_unlock(d1->d_sb); ++} +diff -Naur null/fs/aufs/super.c linux-5.15.36/fs/aufs/super.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/super.c 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,871 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * mount and super_block operations ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++/* ++ * super_operations ++ */ ++static struct inode *aufs_alloc_inode(struct super_block *sb __maybe_unused) ++{ ++ struct au_icntnr *c; ++ ++ c = au_cache_alloc_icntnr(); ++ if (c) { ++ au_icntnr_init(c); ++ inode_set_iversion(&c->vfs_inode, 1); /* sigen(sb); */ ++ c->iinfo.ii_hinode = NULL; ++ return &c->vfs_inode; ++ } ++ return NULL; ++} ++ ++static void aufs_destroy_inode(struct inode *inode) ++{ ++ if (!au_is_bad_inode(inode)) ++ au_iinfo_fin(inode); ++} ++ ++static void aufs_free_inode(struct inode *inode) ++{ ++ au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); ++} ++ ++struct inode *au_iget_locked(struct super_block *sb, ino_t ino) ++{ ++ struct inode *inode; ++ int err; ++ ++ inode = iget_locked(sb, ino); ++ if (unlikely(!inode)) { ++ inode = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ if (!(inode->i_state & I_NEW)) ++ goto out; ++ ++ err = au_xigen_new(inode); ++ if (!err) ++ err = au_iinfo_init(inode); ++ if (!err) ++ inode_inc_iversion(inode); ++ else { ++ iget_failed(inode); ++ inode = ERR_PTR(err); ++ } ++ ++out: ++ /* never return NULL */ ++ AuDebugOn(!inode); ++ AuTraceErrPtr(inode); ++ return inode; ++} ++ ++/* lock free root dinfo */ ++static int au_show_brs(struct seq_file *seq, struct super_block *sb) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct path path; ++ struct au_hdentry *hdp; ++ struct au_branch *br; ++ au_br_perm_str_t perm; ++ ++ err = 0; ++ bbot = au_sbbot(sb); ++ bindex = 0; ++ hdp = au_hdentry(au_di(sb->s_root), bindex); ++ for (; !err && bindex <= bbot; bindex++, hdp++) { ++ br = au_sbr(sb, bindex); ++ path.mnt = au_br_mnt(br); ++ path.dentry = hdp->hd_dentry; ++ err = au_seq_path(seq, &path); ++ if (!err) { ++ au_optstr_br_perm(&perm, br->br_perm); ++ seq_printf(seq, "=%s", perm.a); ++ if (bindex != bbot) ++ seq_putc(seq, ':'); ++ } ++ } ++ if (unlikely(err || seq_has_overflowed(seq))) ++ err = -E2BIG; ++ ++ return err; ++} ++ ++static void au_gen_fmt(char *fmt, int len __maybe_unused, const char *pat, ++ const char *append) ++{ ++ char *p; ++ ++ p = fmt; ++ while (*pat != ':') ++ *p++ = *pat++; ++ *p++ = *pat++; ++ strcpy(p, append); ++ AuDebugOn(strlen(fmt) >= len); ++} ++ ++static void au_show_wbr_create(struct seq_file *m, int v, ++ struct au_sbinfo *sbinfo) ++{ ++ const char *pat; ++ char fmt[32]; ++ struct au_wbr_mfs *mfs; ++ ++ AuRwMustAnyLock(&sbinfo->si_rwsem); ++ ++ seq_puts(m, ",create="); ++ pat = au_optstr_wbr_create(v); ++ mfs = &sbinfo->si_wbr_mfs; ++ switch (v) { ++ case AuWbrCreate_TDP: ++ case AuWbrCreate_RR: ++ case AuWbrCreate_MFS: ++ case AuWbrCreate_PMFS: ++ seq_puts(m, pat); ++ break; ++ case AuWbrCreate_MFSRR: ++ case AuWbrCreate_TDMFS: ++ case AuWbrCreate_PMFSRR: ++ au_gen_fmt(fmt, sizeof(fmt), pat, "%llu"); ++ seq_printf(m, fmt, mfs->mfsrr_watermark); ++ break; ++ case AuWbrCreate_MFSV: ++ case AuWbrCreate_PMFSV: ++ au_gen_fmt(fmt, sizeof(fmt), pat, "%lu"); ++ seq_printf(m, fmt, ++ jiffies_to_msecs(mfs->mfs_expire) ++ / MSEC_PER_SEC); ++ break; ++ case AuWbrCreate_MFSRRV: ++ case AuWbrCreate_TDMFSV: ++ case AuWbrCreate_PMFSRRV: ++ au_gen_fmt(fmt, sizeof(fmt), pat, "%llu:%lu"); ++ seq_printf(m, fmt, mfs->mfsrr_watermark, ++ jiffies_to_msecs(mfs->mfs_expire) / MSEC_PER_SEC); ++ break; ++ default: ++ BUG(); ++ } ++} ++ ++static int au_show_xino(struct seq_file *seq, struct super_block *sb) ++{ ++#ifdef CONFIG_SYSFS ++ return 0; ++#else ++ int err; ++ const int len = sizeof(AUFS_XINO_FNAME) - 1; ++ aufs_bindex_t bindex, brid; ++ struct qstr *name; ++ struct file *f; ++ struct dentry *d, *h_root; ++ struct au_branch *br; ++ ++ AuRwMustAnyLock(&sbinfo->si_rwsem); ++ ++ err = 0; ++ f = au_sbi(sb)->si_xib; ++ if (!f) ++ goto out; ++ ++ /* stop printing the default xino path on the first writable branch */ ++ h_root = NULL; ++ bindex = au_xi_root(sb, f->f_path.dentry); ++ if (bindex >= 0) { ++ br = au_sbr_sb(sb, bindex); ++ h_root = au_br_dentry(br); ++ } ++ ++ d = f->f_path.dentry; ++ name = &d->d_name; ++ /* safe ->d_parent because the file is unlinked */ ++ if (d->d_parent == h_root ++ && name->len == len ++ && !memcmp(name->name, AUFS_XINO_FNAME, len)) ++ goto out; ++ ++ seq_puts(seq, ",xino="); ++ err = au_xino_path(seq, f); ++ ++out: ++ return err; ++#endif ++} ++ ++/* seq_file will re-call me in case of too long string */ ++static int aufs_show_options(struct seq_file *m, struct dentry *dentry) ++{ ++ int err; ++ unsigned int mnt_flags, v; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ ++#define AuBool(name, str) do { \ ++ v = au_opt_test(mnt_flags, name); \ ++ if (v != au_opt_test(AuOpt_Def, name)) \ ++ seq_printf(m, ",%s" #str, v ? "" : "no"); \ ++} while (0) ++ ++#define AuStr(name, str) do { \ ++ v = mnt_flags & AuOptMask_##name; \ ++ if (v != (AuOpt_Def & AuOptMask_##name)) \ ++ seq_printf(m, "," #str "=%s", au_optstr_##str(v)); \ ++} while (0) ++ ++#define AuUInt(name, str, val) do { \ ++ if (val != AUFS_##name##_DEF) \ ++ seq_printf(m, "," #str "=%u", val); \ ++} while (0) ++ ++ sb = dentry->d_sb; ++ if (sb->s_flags & SB_POSIXACL) ++ seq_puts(m, ",acl"); ++#if 0 /* reserved for future use */ ++ if (sb->s_flags & SB_I_VERSION) ++ seq_puts(m, ",i_version"); ++#endif ++ ++ /* lock free root dinfo */ ++ si_noflush_read_lock(sb); ++ sbinfo = au_sbi(sb); ++ seq_printf(m, ",si=%lx", sysaufs_si_id(sbinfo)); ++ ++ mnt_flags = au_mntflags(sb); ++ if (au_opt_test(mnt_flags, XINO)) { ++ err = au_show_xino(m, sb); ++ if (unlikely(err)) ++ goto out; ++ } else ++ seq_puts(m, ",noxino"); ++ ++ AuBool(TRUNC_XINO, trunc_xino); ++ AuStr(UDBA, udba); ++ AuBool(SHWH, shwh); ++ AuBool(PLINK, plink); ++ AuBool(DIO, dio); ++ AuBool(DIRPERM1, dirperm1); ++ ++ v = sbinfo->si_wbr_create; ++ if (v != AuWbrCreate_Def) ++ au_show_wbr_create(m, v, sbinfo); ++ ++ v = sbinfo->si_wbr_copyup; ++ if (v != AuWbrCopyup_Def) ++ seq_printf(m, ",cpup=%s", au_optstr_wbr_copyup(v)); ++ ++ v = au_opt_test(mnt_flags, ALWAYS_DIROPQ); ++ if (v != au_opt_test(AuOpt_Def, ALWAYS_DIROPQ)) ++ seq_printf(m, ",diropq=%c", v ? 'a' : 'w'); ++ ++ AuUInt(DIRWH, dirwh, sbinfo->si_dirwh); ++ ++ v = jiffies_to_msecs(sbinfo->si_rdcache) / MSEC_PER_SEC; ++ AuUInt(RDCACHE, rdcache, v); ++ ++ AuUInt(RDBLK, rdblk, sbinfo->si_rdblk); ++ AuUInt(RDHASH, rdhash, sbinfo->si_rdhash); ++ ++ au_fhsm_show(m, sbinfo); ++ ++ AuBool(DIRREN, dirren); ++ AuBool(SUM, sum); ++ /* AuBool(SUM_W, wsum); */ ++ AuBool(WARN_PERM, warn_perm); ++ AuBool(VERBOSE, verbose); ++ ++out: ++ /* be sure to print "br:" last */ ++ if (!sysaufs_brs) { ++ seq_puts(m, ",br:"); ++ au_show_brs(m, sb); ++ } ++ si_read_unlock(sb); ++ return 0; ++ ++#undef AuBool ++#undef AuStr ++#undef AuUInt ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* sum mode which returns the summation for statfs(2) */ ++ ++static u64 au_add_till_max(u64 a, u64 b) ++{ ++ u64 old; ++ ++ old = a; ++ a += b; ++ if (old <= a) ++ return a; ++ return ULLONG_MAX; ++} ++ ++static u64 au_mul_till_max(u64 a, long mul) ++{ ++ u64 old; ++ ++ old = a; ++ a *= mul; ++ if (old <= a) ++ return a; ++ return ULLONG_MAX; ++} ++ ++static int au_statfs_sum(struct super_block *sb, struct kstatfs *buf) ++{ ++ int err; ++ long bsize, factor; ++ u64 blocks, bfree, bavail, files, ffree; ++ aufs_bindex_t bbot, bindex, i; ++ unsigned char shared; ++ struct path h_path; ++ struct super_block *h_sb; ++ ++ err = 0; ++ bsize = LONG_MAX; ++ files = 0; ++ ffree = 0; ++ blocks = 0; ++ bfree = 0; ++ bavail = 0; ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ h_path.mnt = au_sbr_mnt(sb, bindex); ++ h_sb = h_path.mnt->mnt_sb; ++ shared = 0; ++ for (i = 0; !shared && i < bindex; i++) ++ shared = (au_sbr_sb(sb, i) == h_sb); ++ if (shared) ++ continue; ++ ++ /* sb->s_root for NFS is unreliable */ ++ h_path.dentry = h_path.mnt->mnt_root; ++ err = vfs_statfs(&h_path, buf); ++ if (unlikely(err)) ++ goto out; ++ ++ if (bsize > buf->f_bsize) { ++ /* ++ * we will reduce bsize, so we have to expand blocks ++ * etc. to match them again ++ */ ++ factor = (bsize / buf->f_bsize); ++ blocks = au_mul_till_max(blocks, factor); ++ bfree = au_mul_till_max(bfree, factor); ++ bavail = au_mul_till_max(bavail, factor); ++ bsize = buf->f_bsize; ++ } ++ ++ factor = (buf->f_bsize / bsize); ++ blocks = au_add_till_max(blocks, ++ au_mul_till_max(buf->f_blocks, factor)); ++ bfree = au_add_till_max(bfree, ++ au_mul_till_max(buf->f_bfree, factor)); ++ bavail = au_add_till_max(bavail, ++ au_mul_till_max(buf->f_bavail, factor)); ++ files = au_add_till_max(files, buf->f_files); ++ ffree = au_add_till_max(ffree, buf->f_ffree); ++ } ++ ++ buf->f_bsize = bsize; ++ buf->f_blocks = blocks; ++ buf->f_bfree = bfree; ++ buf->f_bavail = bavail; ++ buf->f_files = files; ++ buf->f_ffree = ffree; ++ buf->f_frsize = 0; ++ ++out: ++ return err; ++} ++ ++static int aufs_statfs(struct dentry *dentry, struct kstatfs *buf) ++{ ++ int err; ++ struct path h_path; ++ struct super_block *sb; ++ ++ /* lock free root dinfo */ ++ sb = dentry->d_sb; ++ si_noflush_read_lock(sb); ++ if (!au_opt_test(au_mntflags(sb), SUM)) { ++ /* sb->s_root for NFS is unreliable */ ++ h_path.mnt = au_sbr_mnt(sb, 0); ++ h_path.dentry = h_path.mnt->mnt_root; ++ err = vfs_statfs(&h_path, buf); ++ } else ++ err = au_statfs_sum(sb, buf); ++ si_read_unlock(sb); ++ ++ if (!err) { ++ buf->f_type = AUFS_SUPER_MAGIC; ++ buf->f_namelen = AUFS_MAX_NAMELEN; ++ memset(&buf->f_fsid, 0, sizeof(buf->f_fsid)); ++ } ++ /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */ ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int aufs_sync_fs(struct super_block *sb, int wait) ++{ ++ int err, e; ++ aufs_bindex_t bbot, bindex; ++ struct au_branch *br; ++ struct super_block *h_sb; ++ ++ err = 0; ++ si_noflush_read_lock(sb); ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (!au_br_writable(br->br_perm)) ++ continue; ++ ++ h_sb = au_sbr_sb(sb, bindex); ++ e = vfsub_sync_filesystem(h_sb); ++ if (unlikely(e && !err)) ++ err = e; ++ /* go on even if an error happens */ ++ } ++ si_read_unlock(sb); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* final actions when unmounting a file system */ ++static void aufs_put_super(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ ++ sbinfo = au_sbi(sb); ++ if (sbinfo) ++ kobject_put(&sbinfo->si_kobj); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, ++ struct super_block *sb, void *arg) ++{ ++ void *array; ++ unsigned long long n, sz; ++ ++ array = NULL; ++ n = 0; ++ if (!*hint) ++ goto out; ++ ++ if (*hint > ULLONG_MAX / sizeof(array)) { ++ array = ERR_PTR(-EMFILE); ++ pr_err("hint %llu\n", *hint); ++ goto out; ++ } ++ ++ sz = sizeof(array) * *hint; ++ array = kzalloc(sz, GFP_NOFS); ++ if (unlikely(!array)) ++ array = vzalloc(sz); ++ if (unlikely(!array)) { ++ array = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ n = cb(sb, array, *hint, arg); ++ AuDebugOn(n > *hint); ++ ++out: ++ *hint = n; ++ return array; ++} ++ ++static unsigned long long au_iarray_cb(struct super_block *sb, void *a, ++ unsigned long long max __maybe_unused, ++ void *arg) ++{ ++ unsigned long long n; ++ struct inode **p, *inode; ++ struct list_head *head; ++ ++ n = 0; ++ p = a; ++ head = arg; ++ spin_lock(&sb->s_inode_list_lock); ++ list_for_each_entry(inode, head, i_sb_list) { ++ if (!au_is_bad_inode(inode) ++ && au_ii(inode)->ii_btop >= 0) { ++ spin_lock(&inode->i_lock); ++ if (atomic_read(&inode->i_count)) { ++ au_igrab(inode); ++ *p++ = inode; ++ n++; ++ AuDebugOn(n > max); ++ } ++ spin_unlock(&inode->i_lock); ++ } ++ } ++ spin_unlock(&sb->s_inode_list_lock); ++ ++ return n; ++} ++ ++struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) ++{ ++ struct au_sbinfo *sbi; ++ ++ sbi = au_sbi(sb); ++ *max = au_lcnt_read(&sbi->si_ninodes, /*do_rev*/1); ++ return au_array_alloc(max, au_iarray_cb, sb, &sb->s_inodes); ++} ++ ++void au_iarray_free(struct inode **a, unsigned long long max) ++{ ++ unsigned long long ull; ++ ++ for (ull = 0; ull < max; ull++) ++ iput(a[ull]); ++ kvfree(a); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * refresh dentry and inode at remount time. ++ */ ++/* todo: consolidate with simple_reval_dpath() and au_reval_for_attr() */ ++static int au_do_refresh(struct dentry *dentry, unsigned int dir_flags, ++ struct dentry *parent) ++{ ++ int err; ++ ++ di_write_lock_child(dentry); ++ di_read_lock_parent(parent, AuLock_IR); ++ err = au_refresh_dentry(dentry, parent); ++ if (!err && dir_flags) ++ au_hn_reset(d_inode(dentry), dir_flags); ++ di_read_unlock(parent, AuLock_IR); ++ di_write_unlock(dentry); ++ ++ return err; ++} ++ ++static int au_do_refresh_d(struct dentry *dentry, unsigned int sigen, ++ struct au_sbinfo *sbinfo, ++ const unsigned int dir_flags, unsigned int do_idop) ++{ ++ int err; ++ struct dentry *parent; ++ ++ err = 0; ++ parent = dget_parent(dentry); ++ if (!au_digen_test(parent, sigen) && au_digen_test(dentry, sigen)) { ++ if (d_really_is_positive(dentry)) { ++ if (!d_is_dir(dentry)) ++ err = au_do_refresh(dentry, /*dir_flags*/0, ++ parent); ++ else { ++ err = au_do_refresh(dentry, dir_flags, parent); ++ if (unlikely(err)) ++ au_fset_si(sbinfo, FAILED_REFRESH_DIR); ++ } ++ } else ++ err = au_do_refresh(dentry, /*dir_flags*/0, parent); ++ AuDbgDentry(dentry); ++ } ++ dput(parent); ++ ++ if (!err) { ++ if (do_idop) ++ au_refresh_dop(dentry, /*force_reval*/0); ++ } else ++ au_refresh_dop(dentry, /*force_reval*/1); ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_refresh_d(struct super_block *sb, unsigned int do_idop) ++{ ++ int err, i, j, ndentry, e; ++ unsigned int sigen; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ struct dentry **dentries, *d; ++ struct au_sbinfo *sbinfo; ++ struct dentry *root = sb->s_root; ++ const unsigned int dir_flags = au_hi_flags(d_inode(root), /*isdir*/1); ++ ++ if (do_idop) ++ au_refresh_dop(root, /*force_reval*/0); ++ ++ err = au_dpages_init(&dpages, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ err = au_dcsub_pages(&dpages, root, NULL, NULL); ++ if (unlikely(err)) ++ goto out_dpages; ++ ++ sigen = au_sigen(sb); ++ sbinfo = au_sbi(sb); ++ for (i = 0; i < dpages.ndpage; i++) { ++ dpage = dpages.dpages + i; ++ dentries = dpage->dentries; ++ ndentry = dpage->ndentry; ++ for (j = 0; j < ndentry; j++) { ++ d = dentries[j]; ++ e = au_do_refresh_d(d, sigen, sbinfo, dir_flags, ++ do_idop); ++ if (unlikely(e && !err)) ++ err = e; ++ /* go on even err */ ++ } ++ } ++ ++out_dpages: ++ au_dpages_free(&dpages); ++out: ++ return err; ++} ++ ++static int au_refresh_i(struct super_block *sb, unsigned int do_idop) ++{ ++ int err, e; ++ unsigned int sigen; ++ unsigned long long max, ull; ++ struct inode *inode, **array; ++ ++ array = au_iarray_alloc(sb, &max); ++ err = PTR_ERR(array); ++ if (IS_ERR(array)) ++ goto out; ++ ++ err = 0; ++ sigen = au_sigen(sb); ++ for (ull = 0; ull < max; ull++) { ++ inode = array[ull]; ++ if (unlikely(!inode)) ++ break; ++ ++ e = 0; ++ ii_write_lock_child(inode); ++ if (au_iigen(inode, NULL) != sigen) { ++ e = au_refresh_hinode_self(inode); ++ if (unlikely(e)) { ++ au_refresh_iop(inode, /*force_getattr*/1); ++ pr_err("error %d, i%lu\n", e, inode->i_ino); ++ if (!err) ++ err = e; ++ /* go on even if err */ ++ } ++ } ++ if (!e && do_idop) ++ au_refresh_iop(inode, /*force_getattr*/0); ++ ii_write_unlock(inode); ++ } ++ ++ au_iarray_free(array, max); ++ ++out: ++ return err; ++} ++ ++void au_remount_refresh(struct super_block *sb, unsigned int do_idop) ++{ ++ int err, e; ++ unsigned int udba; ++ aufs_bindex_t bindex, bbot; ++ struct dentry *root; ++ struct inode *inode; ++ struct au_branch *br; ++ struct au_sbinfo *sbi; ++ ++ au_sigen_inc(sb); ++ sbi = au_sbi(sb); ++ au_fclr_si(sbi, FAILED_REFRESH_DIR); ++ ++ root = sb->s_root; ++ DiMustNoWaiters(root); ++ inode = d_inode(root); ++ IiMustNoWaiters(inode); ++ ++ udba = au_opt_udba(sb); ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ err = au_hnotify_reset_br(udba, br, br->br_perm); ++ if (unlikely(err)) ++ AuIOErr("hnotify failed on br %d, %d, ignored\n", ++ bindex, err); ++ /* go on even if err */ ++ } ++ au_hn_reset(inode, au_hi_flags(inode, /*isdir*/1)); ++ ++ if (do_idop) { ++ if (au_ftest_si(sbi, NO_DREVAL)) { ++ AuDebugOn(sb->s_d_op == &aufs_dop_noreval); ++ sb->s_d_op = &aufs_dop_noreval; ++ AuDebugOn(sbi->si_iop_array == aufs_iop_nogetattr); ++ sbi->si_iop_array = aufs_iop_nogetattr; ++ } else { ++ AuDebugOn(sb->s_d_op == &aufs_dop); ++ sb->s_d_op = &aufs_dop; ++ AuDebugOn(sbi->si_iop_array == aufs_iop); ++ sbi->si_iop_array = aufs_iop; ++ } ++ pr_info("reset to %ps and %ps\n", ++ sb->s_d_op, sbi->si_iop_array); ++ } ++ ++ di_write_unlock(root); ++ err = au_refresh_d(sb, do_idop); ++ e = au_refresh_i(sb, do_idop); ++ if (unlikely(e && !err)) ++ err = e; ++ /* aufs_write_lock() calls ..._child() */ ++ di_write_lock_child(root); ++ ++ au_cpup_attr_all(inode, /*force*/1); ++ ++ if (unlikely(err)) ++ AuIOErr("refresh failed, ignored, %d\n", err); ++} ++ ++const struct super_operations aufs_sop = { ++ .alloc_inode = aufs_alloc_inode, ++ .destroy_inode = aufs_destroy_inode, ++ .free_inode = aufs_free_inode, ++ /* always deleting, no clearing */ ++ .drop_inode = generic_delete_inode, ++ .show_options = aufs_show_options, ++ .statfs = aufs_statfs, ++ .put_super = aufs_put_super, ++ .sync_fs = aufs_sync_fs ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_alloc_root(struct super_block *sb) ++{ ++ int err; ++ struct inode *inode; ++ struct dentry *root; ++ ++ err = -ENOMEM; ++ inode = au_iget_locked(sb, AUFS_ROOT_INO); ++ err = PTR_ERR(inode); ++ if (IS_ERR(inode)) ++ goto out; ++ ++ inode->i_op = aufs_iop + AuIop_DIR; /* with getattr by default */ ++ inode->i_fop = &aufs_dir_fop; ++ inode->i_mode = S_IFDIR; ++ set_nlink(inode, 2); ++ unlock_new_inode(inode); ++ ++ root = d_make_root(inode); ++ if (unlikely(!root)) ++ goto out; ++ err = PTR_ERR(root); ++ if (IS_ERR(root)) ++ goto out; ++ ++ err = au_di_init(root); ++ if (!err) { ++ sb->s_root = root; ++ return 0; /* success */ ++ } ++ dput(root); ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void aufs_kill_sb(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ struct dentry *root; ++ ++ sbinfo = au_sbi(sb); ++ if (!sbinfo) ++ goto out; ++ ++ au_sbilist_del(sb); ++ ++ root = sb->s_root; ++ if (root) ++ aufs_write_lock(root); ++ else ++ __si_write_lock(sb); ++ ++ au_fhsm_fin(sb); ++ if (sbinfo->si_wbr_create_ops->fin) ++ sbinfo->si_wbr_create_ops->fin(sb); ++ if (au_opt_test(sbinfo->si_mntflags, UDBA_HNOTIFY)) { ++ au_opt_set_udba(sbinfo->si_mntflags, UDBA_NONE); ++ au_remount_refresh(sb, /*do_idop*/0); ++ } ++ if (au_opt_test(sbinfo->si_mntflags, PLINK)) ++ au_plink_put(sb, /*verbose*/1); ++ au_xino_clr(sb); ++ if (root) ++ au_dr_opt_flush(sb); ++ ++ if (root) ++ aufs_write_unlock(root); ++ else ++ __si_write_unlock(sb); ++ ++ sbinfo->si_sb = NULL; ++ au_nwt_flush(&sbinfo->si_nowait); ++ ++out: ++ kill_anon_super(sb); ++} ++ ++struct file_system_type aufs_fs_type = { ++ .name = AUFS_FSTYPE, ++ /* a race between rename and others */ ++ .fs_flags = FS_RENAME_DOES_D_MOVE ++ /* untested */ ++ /*| FS_ALLOW_IDMAP*/ ++ , ++ .init_fs_context = aufs_fsctx_init, ++ .parameters = aufs_fsctx_paramspec, ++ .kill_sb = aufs_kill_sb, ++ /* no need to __module_get() and module_put(). */ ++ .owner = THIS_MODULE, ++}; +diff -Naur null/fs/aufs/super.h linux-5.15.36/fs/aufs/super.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/super.h 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,592 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * super_block operations ++ */ ++ ++#ifndef __AUFS_SUPER_H__ ++#define __AUFS_SUPER_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include "hbl.h" ++#include "lcnt.h" ++#include "rwsem.h" ++#include "wkq.h" ++ ++/* policies to select one among multiple writable branches */ ++struct au_wbr_copyup_operations { ++ int (*copyup)(struct dentry *dentry); ++}; ++ ++#define AuWbr_DIR 1 /* target is a dir */ ++#define AuWbr_PARENT (1 << 1) /* always require a parent */ ++ ++#define au_ftest_wbr(flags, name) ((flags) & AuWbr_##name) ++#define au_fset_wbr(flags, name) { (flags) |= AuWbr_##name; } ++#define au_fclr_wbr(flags, name) { (flags) &= ~AuWbr_##name; } ++ ++struct au_wbr_create_operations { ++ int (*create)(struct dentry *dentry, unsigned int flags); ++ int (*init)(struct super_block *sb); ++ int (*fin)(struct super_block *sb); ++}; ++ ++struct au_wbr_mfs { ++ struct mutex mfs_lock; /* protect this structure */ ++ unsigned long mfs_jiffy; ++ unsigned long mfs_expire; ++ aufs_bindex_t mfs_bindex; ++ ++ unsigned long long mfsrr_bytes; ++ unsigned long long mfsrr_watermark; ++}; ++ ++#define AuPlink_NHASH 100 ++static inline int au_plink_hash(ino_t ino) ++{ ++ return ino % AuPlink_NHASH; ++} ++ ++/* File-based Hierarchical Storage Management */ ++struct au_fhsm { ++#ifdef CONFIG_AUFS_FHSM ++ /* allow only one process who can receive the notification */ ++ spinlock_t fhsm_spin; ++ pid_t fhsm_pid; ++ wait_queue_head_t fhsm_wqh; ++ atomic_t fhsm_readable; ++ ++ /* these are protected by si_rwsem */ ++ unsigned long fhsm_expire; ++ aufs_bindex_t fhsm_bottom; ++#endif ++}; ++ ++struct au_branch; ++struct au_sbinfo { ++ /* nowait tasks in the system-wide workqueue */ ++ struct au_nowait_tasks si_nowait; ++ ++ /* ++ * tried sb->s_umount, but failed due to the dependency between i_mutex. ++ * rwsem for au_sbinfo is necessary. ++ */ ++ struct au_rwsem si_rwsem; ++ ++ /* ++ * dirty approach to protect sb->sb_inodes and ->s_files (gone) from ++ * remount. ++ */ ++ au_lcnt_t si_ninodes, si_nfiles; ++ ++ /* branch management */ ++ unsigned int si_generation; ++ ++ /* see AuSi_ flags */ ++ unsigned char au_si_status; ++ ++ aufs_bindex_t si_bbot; ++ ++ /* dirty trick to keep br_id plus */ ++ unsigned int si_last_br_id : ++ sizeof(aufs_bindex_t) * BITS_PER_BYTE - 1; ++ struct au_branch **si_branch; ++ ++ /* policy to select a writable branch */ ++ unsigned char si_wbr_copyup; ++ unsigned char si_wbr_create; ++ struct au_wbr_copyup_operations *si_wbr_copyup_ops; ++ struct au_wbr_create_operations *si_wbr_create_ops; ++ ++ /* round robin */ ++ atomic_t si_wbr_rr_next; ++ ++ /* most free space */ ++ struct au_wbr_mfs si_wbr_mfs; ++ ++ /* File-based Hierarchical Storage Management */ ++ struct au_fhsm si_fhsm; ++ ++ /* mount flags */ ++ /* include/asm-ia64/siginfo.h defines a macro named si_flags */ ++ unsigned int si_mntflags; ++ ++ /* external inode number (bitmap and translation table) */ ++ loff_t si_ximaxent; /* max entries in a xino */ ++ ++ struct file *si_xib; ++ struct mutex si_xib_mtx; /* protect xib members */ ++ unsigned long *si_xib_buf; ++ unsigned long si_xib_last_pindex; ++ int si_xib_next_bit; ++ ++ unsigned long si_xino_jiffy; ++ unsigned long si_xino_expire; ++ /* reserved for future use */ ++ /* unsigned long long si_xib_limit; */ /* Max xib file size */ ++ ++#ifdef CONFIG_AUFS_EXPORT ++ /* i_generation */ ++ /* todo: make xigen file an array to support many inode numbers */ ++ struct file *si_xigen; ++ atomic_t si_xigen_next; ++#endif ++ ++ /* dirty trick to support atomic_open */ ++ struct hlist_bl_head si_aopen; ++ ++ /* vdir parameters */ ++ unsigned long si_rdcache; /* max cache time in jiffies */ ++ unsigned int si_rdblk; /* deblk size */ ++ unsigned int si_rdhash; /* hash size */ ++ ++ /* ++ * If the number of whiteouts are larger than si_dirwh, leave all of ++ * them after au_whtmp_ren to reduce the cost of rmdir(2). ++ * future fsck.aufs or kernel thread will remove them later. ++ * Otherwise, remove all whiteouts and the dir in rmdir(2). ++ */ ++ unsigned int si_dirwh; ++ ++ /* pseudo_link list */ ++ struct hlist_bl_head si_plink[AuPlink_NHASH]; ++ wait_queue_head_t si_plink_wq; ++ spinlock_t si_plink_maint_lock; ++ pid_t si_plink_maint_pid; ++ ++ /* file list */ ++ struct hlist_bl_head si_files; ++ ++ /* with/without getattr, brother of sb->s_d_op */ ++ const struct inode_operations *si_iop_array; ++ ++ /* ++ * sysfs and lifetime management. ++ * this is not a small structure and it may be a waste of memory in case ++ * of sysfs is disabled, particularly when many aufs-es are mounted. ++ * but using sysfs is majority. ++ */ ++ struct kobject si_kobj; ++#ifdef CONFIG_DEBUG_FS ++ struct dentry *si_dbgaufs; ++ struct dentry *si_dbgaufs_plink; ++ struct dentry *si_dbgaufs_xib; ++#ifdef CONFIG_AUFS_EXPORT ++ struct dentry *si_dbgaufs_xigen; ++#endif ++#endif ++ ++#ifdef CONFIG_AUFS_SBILIST ++ struct hlist_bl_node si_list; ++#endif ++ ++ /* dirty, necessary for unmounting, sysfs and sysrq */ ++ struct super_block *si_sb; ++}; ++ ++/* sbinfo status flags */ ++/* ++ * set true when refresh_dirs() failed at remount time. ++ * then try refreshing dirs at access time again. ++ * if it is false, refreshing dirs at access time is unnecessary ++ */ ++#define AuSi_FAILED_REFRESH_DIR 1 ++#define AuSi_FHSM (1 << 1) /* fhsm is active now */ ++#define AuSi_NO_DREVAL (1 << 2) /* disable all d_revalidate */ ++ ++#ifndef CONFIG_AUFS_FHSM ++#undef AuSi_FHSM ++#define AuSi_FHSM 0 ++#endif ++ ++static inline unsigned char au_do_ftest_si(struct au_sbinfo *sbi, ++ unsigned int flag) ++{ ++ AuRwMustAnyLock(&sbi->si_rwsem); ++ return sbi->au_si_status & flag; ++} ++#define au_ftest_si(sbinfo, name) au_do_ftest_si(sbinfo, AuSi_##name) ++#define au_fset_si(sbinfo, name) do { \ ++ AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ ++ (sbinfo)->au_si_status |= AuSi_##name; \ ++} while (0) ++#define au_fclr_si(sbinfo, name) do { \ ++ AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ ++ (sbinfo)->au_si_status &= ~AuSi_##name; \ ++} while (0) ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* policy to select one among writable branches */ ++#define AuWbrCopyup(sbinfo, ...) \ ++ ((sbinfo)->si_wbr_copyup_ops->copyup(__VA_ARGS__)) ++#define AuWbrCreate(sbinfo, ...) \ ++ ((sbinfo)->si_wbr_create_ops->create(__VA_ARGS__)) ++ ++/* flags for si_read_lock()/aufs_read_lock()/di_read_lock() */ ++#define AuLock_DW 1 /* write-lock dentry */ ++#define AuLock_IR (1 << 1) /* read-lock inode */ ++#define AuLock_IW (1 << 2) /* write-lock inode */ ++#define AuLock_FLUSH (1 << 3) /* wait for 'nowait' tasks */ ++#define AuLock_DIRS (1 << 4) /* target is a pair of dirs */ ++ /* except RENAME_EXCHANGE */ ++#define AuLock_NOPLM (1 << 5) /* return err in plm mode */ ++#define AuLock_NOPLMW (1 << 6) /* wait for plm mode ends */ ++#define AuLock_GEN (1 << 7) /* test digen/iigen */ ++#define au_ftest_lock(flags, name) ((flags) & AuLock_##name) ++#define au_fset_lock(flags, name) \ ++ do { (flags) |= AuLock_##name; } while (0) ++#define au_fclr_lock(flags, name) \ ++ do { (flags) &= ~AuLock_##name; } while (0) ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* super.c */ ++struct inode *au_iget_locked(struct super_block *sb, ino_t ino); ++ ++typedef unsigned long long (*au_arraycb_t)(struct super_block *sb, void *array, ++ unsigned long long max, void *arg); ++void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, ++ struct super_block *sb, void *arg); ++struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); ++void au_iarray_free(struct inode **a, unsigned long long max); ++ ++void au_remount_refresh(struct super_block *sb, unsigned int do_idop); ++extern const struct super_operations aufs_sop; ++int au_alloc_root(struct super_block *sb); ++extern struct file_system_type aufs_fs_type; ++ ++/* sbinfo.c */ ++void au_si_free(struct kobject *kobj); ++struct au_sbinfo *au_si_alloc(struct super_block *sb); ++int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr, int may_shrink); ++ ++unsigned int au_sigen_inc(struct super_block *sb); ++aufs_bindex_t au_new_br_id(struct super_block *sb); ++ ++int si_read_lock(struct super_block *sb, int flags); ++int si_write_lock(struct super_block *sb, int flags); ++int aufs_read_lock(struct dentry *dentry, int flags); ++void aufs_read_unlock(struct dentry *dentry, int flags); ++void aufs_write_lock(struct dentry *dentry); ++void aufs_write_unlock(struct dentry *dentry); ++int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags); ++void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2); ++ ++/* wbr_policy.c */ ++extern struct au_wbr_copyup_operations au_wbr_copyup_ops[]; ++extern struct au_wbr_create_operations au_wbr_create_ops[]; ++int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst); ++int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex); ++int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t btop); ++ ++/* mvdown.c */ ++int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *arg); ++ ++#ifdef CONFIG_AUFS_FHSM ++/* fhsm.c */ ++ ++static inline pid_t au_fhsm_pid(struct au_fhsm *fhsm) ++{ ++ pid_t pid; ++ ++ spin_lock(&fhsm->fhsm_spin); ++ pid = fhsm->fhsm_pid; ++ spin_unlock(&fhsm->fhsm_spin); ++ ++ return pid; ++} ++ ++void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force); ++void au_fhsm_wrote_all(struct super_block *sb, int force); ++int au_fhsm_fd(struct super_block *sb, int oflags); ++int au_fhsm_br_alloc(struct au_branch *br); ++void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex); ++void au_fhsm_fin(struct super_block *sb); ++void au_fhsm_init(struct au_sbinfo *sbinfo); ++void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec); ++void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo); ++#else ++AuStubVoid(au_fhsm_wrote, struct super_block *sb, aufs_bindex_t bindex, ++ int force) ++AuStubVoid(au_fhsm_wrote_all, struct super_block *sb, int force) ++AuStub(int, au_fhsm_fd, return -EOPNOTSUPP, struct super_block *sb, int oflags) ++AuStub(pid_t, au_fhsm_pid, return 0, struct au_fhsm *fhsm) ++AuStubInt0(au_fhsm_br_alloc, struct au_branch *br) ++AuStubVoid(au_fhsm_set_bottom, struct super_block *sb, aufs_bindex_t bindex) ++AuStubVoid(au_fhsm_fin, struct super_block *sb) ++AuStubVoid(au_fhsm_init, struct au_sbinfo *sbinfo) ++AuStubVoid(au_fhsm_set, struct au_sbinfo *sbinfo, unsigned int sec) ++AuStubVoid(au_fhsm_show, struct seq_file *seq, struct au_sbinfo *sbinfo) ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct au_sbinfo *au_sbi(struct super_block *sb) ++{ ++ return sb->s_fs_info; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_EXPORT ++int au_test_nfsd(void); ++void au_export_init(struct super_block *sb); ++void au_xigen_inc(struct inode *inode); ++int au_xigen_new(struct inode *inode); ++int au_xigen_set(struct super_block *sb, struct path *path); ++void au_xigen_clr(struct super_block *sb); ++ ++static inline int au_busy_or_stale(void) ++{ ++ if (!au_test_nfsd()) ++ return -EBUSY; ++ return -ESTALE; ++} ++#else ++AuStubInt0(au_test_nfsd, void) ++AuStubVoid(au_export_init, struct super_block *sb) ++AuStubVoid(au_xigen_inc, struct inode *inode) ++AuStubInt0(au_xigen_new, struct inode *inode) ++AuStubInt0(au_xigen_set, struct super_block *sb, struct path *path) ++AuStubVoid(au_xigen_clr, struct super_block *sb) ++AuStub(int, au_busy_or_stale, return -EBUSY, void) ++#endif /* CONFIG_AUFS_EXPORT */ ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_SBILIST ++/* module.c */ ++extern struct hlist_bl_head au_sbilist; ++ ++static inline void au_sbilist_init(void) ++{ ++ INIT_HLIST_BL_HEAD(&au_sbilist); ++} ++ ++static inline void au_sbilist_add(struct super_block *sb) ++{ ++ au_hbl_add(&au_sbi(sb)->si_list, &au_sbilist); ++} ++ ++static inline void au_sbilist_del(struct super_block *sb) ++{ ++ au_hbl_del(&au_sbi(sb)->si_list, &au_sbilist); ++} ++ ++#ifdef CONFIG_AUFS_MAGIC_SYSRQ ++static inline void au_sbilist_lock(void) ++{ ++ hlist_bl_lock(&au_sbilist); ++} ++ ++static inline void au_sbilist_unlock(void) ++{ ++ hlist_bl_unlock(&au_sbilist); ++} ++#define AuGFP_SBILIST GFP_ATOMIC ++#else ++AuStubVoid(au_sbilist_lock, void) ++AuStubVoid(au_sbilist_unlock, void) ++#define AuGFP_SBILIST GFP_NOFS ++#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ ++#else ++AuStubVoid(au_sbilist_init, void) ++AuStubVoid(au_sbilist_add, struct super_block *sb) ++AuStubVoid(au_sbilist_del, struct super_block *sb) ++AuStubVoid(au_sbilist_lock, void) ++AuStubVoid(au_sbilist_unlock, void) ++#define AuGFP_SBILIST GFP_NOFS ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline void dbgaufs_si_null(struct au_sbinfo *sbinfo) ++{ ++ /* ++ * This function is a dynamic '__init' function actually, ++ * so the tiny check for si_rwsem is unnecessary. ++ */ ++ /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ ++#ifdef CONFIG_DEBUG_FS ++ sbinfo->si_dbgaufs = NULL; ++ sbinfo->si_dbgaufs_plink = NULL; ++ sbinfo->si_dbgaufs_xib = NULL; ++#ifdef CONFIG_AUFS_EXPORT ++ sbinfo->si_dbgaufs_xigen = NULL; ++#endif ++#endif ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* current->atomic_flags */ ++/* this value should never corrupt the ones defined in linux/sched.h */ ++#define PFA_AUFS 0x10 ++ ++TASK_PFA_TEST(AUFS, test_aufs) /* task_test_aufs */ ++TASK_PFA_SET(AUFS, aufs) /* task_set_aufs */ ++TASK_PFA_CLEAR(AUFS, aufs) /* task_clear_aufs */ ++ ++static inline int si_pid_test(struct super_block *sb) ++{ ++ return !!task_test_aufs(current); ++} ++ ++static inline void si_pid_clr(struct super_block *sb) ++{ ++ AuDebugOn(!task_test_aufs(current)); ++ task_clear_aufs(current); ++} ++ ++static inline void si_pid_set(struct super_block *sb) ++{ ++ AuDebugOn(task_test_aufs(current)); ++ task_set_aufs(current); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* lock superblock. mainly for entry point functions */ ++#define __si_read_lock(sb) au_rw_read_lock(&au_sbi(sb)->si_rwsem) ++#define __si_write_lock(sb) au_rw_write_lock(&au_sbi(sb)->si_rwsem) ++#define __si_read_trylock(sb) au_rw_read_trylock(&au_sbi(sb)->si_rwsem) ++#define __si_write_trylock(sb) au_rw_write_trylock(&au_sbi(sb)->si_rwsem) ++/* ++#define __si_read_trylock_nested(sb) \ ++ au_rw_read_trylock_nested(&au_sbi(sb)->si_rwsem) ++#define __si_write_trylock_nested(sb) \ ++ au_rw_write_trylock_nested(&au_sbi(sb)->si_rwsem) ++*/ ++ ++#define __si_read_unlock(sb) au_rw_read_unlock(&au_sbi(sb)->si_rwsem) ++#define __si_write_unlock(sb) au_rw_write_unlock(&au_sbi(sb)->si_rwsem) ++#define __si_downgrade_lock(sb) au_rw_dgrade_lock(&au_sbi(sb)->si_rwsem) ++ ++#define SiMustNoWaiters(sb) AuRwMustNoWaiters(&au_sbi(sb)->si_rwsem) ++#define SiMustAnyLock(sb) AuRwMustAnyLock(&au_sbi(sb)->si_rwsem) ++#define SiMustWriteLock(sb) AuRwMustWriteLock(&au_sbi(sb)->si_rwsem) ++ ++static inline void si_noflush_read_lock(struct super_block *sb) ++{ ++ __si_read_lock(sb); ++ si_pid_set(sb); ++} ++ ++static inline int si_noflush_read_trylock(struct super_block *sb) ++{ ++ int locked; ++ ++ locked = __si_read_trylock(sb); ++ if (locked) ++ si_pid_set(sb); ++ return locked; ++} ++ ++static inline void si_noflush_write_lock(struct super_block *sb) ++{ ++ __si_write_lock(sb); ++ si_pid_set(sb); ++} ++ ++static inline int si_noflush_write_trylock(struct super_block *sb) ++{ ++ int locked; ++ ++ locked = __si_write_trylock(sb); ++ if (locked) ++ si_pid_set(sb); ++ return locked; ++} ++ ++#if 0 /* reserved */ ++static inline int si_read_trylock(struct super_block *sb, int flags) ++{ ++ if (au_ftest_lock(flags, FLUSH)) ++ au_nwt_flush(&au_sbi(sb)->si_nowait); ++ return si_noflush_read_trylock(sb); ++} ++#endif ++ ++static inline void si_read_unlock(struct super_block *sb) ++{ ++ si_pid_clr(sb); ++ __si_read_unlock(sb); ++} ++ ++#if 0 /* reserved */ ++static inline int si_write_trylock(struct super_block *sb, int flags) ++{ ++ if (au_ftest_lock(flags, FLUSH)) ++ au_nwt_flush(&au_sbi(sb)->si_nowait); ++ return si_noflush_write_trylock(sb); ++} ++#endif ++ ++static inline void si_write_unlock(struct super_block *sb) ++{ ++ si_pid_clr(sb); ++ __si_write_unlock(sb); ++} ++ ++#if 0 /* reserved */ ++static inline void si_downgrade_lock(struct super_block *sb) ++{ ++ __si_downgrade_lock(sb); ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline aufs_bindex_t au_sbbot(struct super_block *sb) ++{ ++ SiMustAnyLock(sb); ++ return au_sbi(sb)->si_bbot; ++} ++ ++static inline unsigned int au_mntflags(struct super_block *sb) ++{ ++ SiMustAnyLock(sb); ++ return au_sbi(sb)->si_mntflags; ++} ++ ++static inline unsigned int au_sigen(struct super_block *sb) ++{ ++ SiMustAnyLock(sb); ++ return au_sbi(sb)->si_generation; ++} ++ ++static inline struct au_branch *au_sbr(struct super_block *sb, ++ aufs_bindex_t bindex) ++{ ++ SiMustAnyLock(sb); ++ return au_sbi(sb)->si_branch[0 + bindex]; ++} ++ ++static inline loff_t au_xi_maxent(struct super_block *sb) ++{ ++ SiMustAnyLock(sb); ++ return au_sbi(sb)->si_ximaxent; ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_SUPER_H__ */ +diff -Naur null/fs/aufs/sysaufs.c linux-5.15.36/fs/aufs/sysaufs.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/sysaufs.c 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,93 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sysfs interface and lifetime management ++ * they are necessary regardless sysfs is disabled. ++ */ ++ ++#include ++#include "aufs.h" ++ ++unsigned long sysaufs_si_mask; ++struct kset *sysaufs_kset; ++ ++#define AuSiAttr(_name) { \ ++ .attr = { .name = __stringify(_name), .mode = 0444 }, \ ++ .show = sysaufs_si_##_name, \ ++} ++ ++static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path); ++struct attribute *sysaufs_si_attrs[] = { ++ &sysaufs_si_attr_xi_path.attr, ++ NULL, ++}; ++ ++static const struct sysfs_ops au_sbi_ops = { ++ .show = sysaufs_si_show ++}; ++ ++static struct kobj_type au_sbi_ktype = { ++ .release = au_si_free, ++ .sysfs_ops = &au_sbi_ops, ++ .default_attrs = sysaufs_si_attrs ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++int sysaufs_si_init(struct au_sbinfo *sbinfo) ++{ ++ int err; ++ ++ sbinfo->si_kobj.kset = sysaufs_kset; ++ /* cf. sysaufs_name() */ ++ err = kobject_init_and_add ++ (&sbinfo->si_kobj, &au_sbi_ktype, /*&sysaufs_kset->kobj*/NULL, ++ SysaufsSiNamePrefix "%lx", sysaufs_si_id(sbinfo)); ++ ++ return err; ++} ++ ++void sysaufs_fin(void) ++{ ++ sysfs_remove_group(&sysaufs_kset->kobj, sysaufs_attr_group); ++ kset_unregister(sysaufs_kset); ++} ++ ++int __init sysaufs_init(void) ++{ ++ int err; ++ ++ do { ++ get_random_bytes(&sysaufs_si_mask, sizeof(sysaufs_si_mask)); ++ } while (!sysaufs_si_mask); ++ ++ err = -EINVAL; ++ sysaufs_kset = kset_create_and_add(AUFS_NAME, NULL, fs_kobj); ++ if (unlikely(!sysaufs_kset)) ++ goto out; ++ err = PTR_ERR(sysaufs_kset); ++ if (IS_ERR(sysaufs_kset)) ++ goto out; ++ err = sysfs_create_group(&sysaufs_kset->kobj, sysaufs_attr_group); ++ if (unlikely(err)) ++ kset_unregister(sysaufs_kset); ++ ++out: ++ return err; ++} +diff -Naur null/fs/aufs/sysaufs.h linux-5.15.36/fs/aufs/sysaufs.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/sysaufs.h 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,102 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sysfs interface and mount lifetime management ++ */ ++ ++#ifndef __SYSAUFS_H__ ++#define __SYSAUFS_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include "module.h" ++ ++struct super_block; ++struct au_sbinfo; ++ ++struct sysaufs_si_attr { ++ struct attribute attr; ++ int (*show)(struct seq_file *seq, struct super_block *sb); ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* sysaufs.c */ ++extern unsigned long sysaufs_si_mask; ++extern struct kset *sysaufs_kset; ++extern struct attribute *sysaufs_si_attrs[]; ++int sysaufs_si_init(struct au_sbinfo *sbinfo); ++int __init sysaufs_init(void); ++void sysaufs_fin(void); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* some people doesn't like to show a pointer in kernel */ ++static inline unsigned long sysaufs_si_id(struct au_sbinfo *sbinfo) ++{ ++ return sysaufs_si_mask ^ (unsigned long)sbinfo; ++} ++ ++#define SysaufsSiNamePrefix "si_" ++#define SysaufsSiNameLen (sizeof(SysaufsSiNamePrefix) + 16) ++static inline void sysaufs_name(struct au_sbinfo *sbinfo, char *name) ++{ ++ snprintf(name, SysaufsSiNameLen, SysaufsSiNamePrefix "%lx", ++ sysaufs_si_id(sbinfo)); ++} ++ ++struct au_branch; ++#ifdef CONFIG_SYSFS ++/* sysfs.c */ ++extern struct attribute_group *sysaufs_attr_group; ++ ++int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb); ++ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, ++ char *buf); ++long au_brinfo_ioctl(struct file *file, unsigned long arg); ++#ifdef CONFIG_COMPAT ++long au_brinfo_compat_ioctl(struct file *file, unsigned long arg); ++#endif ++ ++void sysaufs_br_init(struct au_branch *br); ++void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); ++void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); ++ ++#define sysaufs_brs_init() do {} while (0) ++ ++#else ++#define sysaufs_attr_group NULL ++ ++AuStubInt0(sysaufs_si_xi_path, struct seq_file *seq, struct super_block *sb) ++AuStub(ssize_t, sysaufs_si_show, return 0, struct kobject *kobj, ++ struct attribute *attr, char *buf) ++AuStubVoid(sysaufs_br_init, struct au_branch *br) ++AuStubVoid(sysaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) ++AuStubVoid(sysaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) ++ ++static inline void sysaufs_brs_init(void) ++{ ++ sysaufs_brs = 0; ++} ++ ++#endif /* CONFIG_SYSFS */ ++ ++#endif /* __KERNEL__ */ ++#endif /* __SYSAUFS_H__ */ +diff -Naur null/fs/aufs/sysfs.c linux-5.15.36/fs/aufs/sysfs.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/sysfs.c 2022-05-10 16:51:39.876744219 +0300 +@@ -0,0 +1,374 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sysfs interface ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++#ifdef CONFIG_AUFS_FS_MODULE ++/* this entry violates the "one line per file" policy of sysfs */ ++static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, ++ char *buf) ++{ ++ ssize_t err; ++ static char *conf = ++/* this file is generated at compiling */ ++#include "conf.str" ++ ; ++ ++ err = snprintf(buf, PAGE_SIZE, conf); ++ if (unlikely(err >= PAGE_SIZE)) ++ err = -EFBIG; ++ return err; ++} ++ ++static struct kobj_attribute au_config_attr = __ATTR_RO(config); ++#endif ++ ++static struct attribute *au_attr[] = { ++#ifdef CONFIG_AUFS_FS_MODULE ++ &au_config_attr.attr, ++#endif ++ NULL, /* need to NULL terminate the list of attributes */ ++}; ++ ++static struct attribute_group sysaufs_attr_group_body = { ++ .attrs = au_attr ++}; ++ ++struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body; ++ ++/* ---------------------------------------------------------------------- */ ++ ++int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb) ++{ ++ int err; ++ ++ SiMustAnyLock(sb); ++ ++ err = 0; ++ if (au_opt_test(au_mntflags(sb), XINO)) { ++ err = au_xino_path(seq, au_sbi(sb)->si_xib); ++ seq_putc(seq, '\n'); ++ } ++ return err; ++} ++ ++/* ++ * the lifetime of branch is independent from the entry under sysfs. ++ * sysfs handles the lifetime of the entry, and never call ->show() after it is ++ * unlinked. ++ */ ++static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb, ++ aufs_bindex_t bindex, int idx) ++{ ++ int err; ++ struct path path; ++ struct dentry *root; ++ struct au_branch *br; ++ au_br_perm_str_t perm; ++ ++ AuDbg("b%d\n", bindex); ++ ++ err = 0; ++ root = sb->s_root; ++ di_read_lock_parent(root, !AuLock_IR); ++ br = au_sbr(sb, bindex); ++ ++ switch (idx) { ++ case AuBrSysfs_BR: ++ path.mnt = au_br_mnt(br); ++ path.dentry = au_h_dptr(root, bindex); ++ err = au_seq_path(seq, &path); ++ if (!err) { ++ au_optstr_br_perm(&perm, br->br_perm); ++ seq_printf(seq, "=%s\n", perm.a); ++ } ++ break; ++ case AuBrSysfs_BRID: ++ seq_printf(seq, "%d\n", br->br_id); ++ break; ++ } ++ di_read_unlock(root, !AuLock_IR); ++ if (unlikely(err || seq_has_overflowed(seq))) ++ err = -E2BIG; ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static struct seq_file *au_seq(char *p, ssize_t len) ++{ ++ struct seq_file *seq; ++ ++ seq = kzalloc(sizeof(*seq), GFP_NOFS); ++ if (seq) { ++ /* mutex_init(&seq.lock); */ ++ seq->buf = p; ++ seq->size = len; ++ return seq; /* success */ ++ } ++ ++ seq = ERR_PTR(-ENOMEM); ++ return seq; ++} ++ ++#define SysaufsBr_PREFIX "br" ++#define SysaufsBrid_PREFIX "brid" ++ ++/* todo: file size may exceed PAGE_SIZE */ ++ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, ++ char *buf) ++{ ++ ssize_t err; ++ int idx; ++ long l; ++ aufs_bindex_t bbot; ++ struct au_sbinfo *sbinfo; ++ struct super_block *sb; ++ struct seq_file *seq; ++ char *name; ++ struct attribute **cattr; ++ ++ sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); ++ sb = sbinfo->si_sb; ++ ++ /* ++ * prevent a race condition between sysfs and aufs. ++ * for instance, sysfs_file_read() calls sysfs_get_active_two() which ++ * prohibits maintaining the sysfs entries. ++ * hew we acquire read lock after sysfs_get_active_two(). ++ * on the other hand, the remount process may maintain the sysfs/aufs ++ * entries after acquiring write lock. ++ * it can cause a deadlock. ++ * simply we gave up processing read here. ++ */ ++ err = -EBUSY; ++ if (unlikely(!si_noflush_read_trylock(sb))) ++ goto out; ++ ++ seq = au_seq(buf, PAGE_SIZE); ++ err = PTR_ERR(seq); ++ if (IS_ERR(seq)) ++ goto out_unlock; ++ ++ name = (void *)attr->name; ++ cattr = sysaufs_si_attrs; ++ while (*cattr) { ++ if (!strcmp(name, (*cattr)->name)) { ++ err = container_of(*cattr, struct sysaufs_si_attr, attr) ++ ->show(seq, sb); ++ goto out_seq; ++ } ++ cattr++; ++ } ++ ++ if (!strncmp(name, SysaufsBrid_PREFIX, ++ sizeof(SysaufsBrid_PREFIX) - 1)) { ++ idx = AuBrSysfs_BRID; ++ name += sizeof(SysaufsBrid_PREFIX) - 1; ++ } else if (!strncmp(name, SysaufsBr_PREFIX, ++ sizeof(SysaufsBr_PREFIX) - 1)) { ++ idx = AuBrSysfs_BR; ++ name += sizeof(SysaufsBr_PREFIX) - 1; ++ } else ++ BUG(); ++ ++ err = kstrtol(name, 10, &l); ++ if (!err) { ++ bbot = au_sbbot(sb); ++ if (l <= bbot) ++ err = sysaufs_si_br(seq, sb, (aufs_bindex_t)l, idx); ++ else ++ err = -ENOENT; ++ } ++ ++out_seq: ++ if (!err) { ++ err = seq->count; ++ /* sysfs limit */ ++ if (unlikely(err == PAGE_SIZE)) ++ err = -EFBIG; ++ } ++ au_kfree_rcu(seq); ++out_unlock: ++ si_read_unlock(sb); ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_brinfo(struct super_block *sb, union aufs_brinfo __user *arg) ++{ ++ int err; ++ int16_t brid; ++ aufs_bindex_t bindex, bbot; ++ size_t sz; ++ char *buf; ++ struct seq_file *seq; ++ struct au_branch *br; ++ ++ si_read_lock(sb, AuLock_FLUSH); ++ bbot = au_sbbot(sb); ++ err = bbot + 1; ++ if (!arg) ++ goto out; ++ ++ err = -ENOMEM; ++ buf = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!buf)) ++ goto out; ++ ++ seq = au_seq(buf, PAGE_SIZE); ++ err = PTR_ERR(seq); ++ if (IS_ERR(seq)) ++ goto out_buf; ++ ++ sz = sizeof(*arg) - offsetof(union aufs_brinfo, path); ++ for (bindex = 0; bindex <= bbot; bindex++, arg++) { ++ /* VERIFY_WRITE */ ++ err = !access_ok(arg, sizeof(*arg)); ++ if (unlikely(err)) ++ break; ++ ++ br = au_sbr(sb, bindex); ++ brid = br->br_id; ++ BUILD_BUG_ON(sizeof(brid) != sizeof(arg->id)); ++ err = __put_user(brid, &arg->id); ++ if (unlikely(err)) ++ break; ++ ++ BUILD_BUG_ON(sizeof(br->br_perm) != sizeof(arg->perm)); ++ err = __put_user(br->br_perm, &arg->perm); ++ if (unlikely(err)) ++ break; ++ ++ err = au_seq_path(seq, &br->br_path); ++ if (unlikely(err)) ++ break; ++ seq_putc(seq, '\0'); ++ if (!seq_has_overflowed(seq)) { ++ err = copy_to_user(arg->path, seq->buf, seq->count); ++ seq->count = 0; ++ if (unlikely(err)) ++ break; ++ } else { ++ err = -E2BIG; ++ goto out_seq; ++ } ++ } ++ if (unlikely(err)) ++ err = -EFAULT; ++ ++out_seq: ++ au_kfree_rcu(seq); ++out_buf: ++ free_page((unsigned long)buf); ++out: ++ si_read_unlock(sb); ++ return err; ++} ++ ++long au_brinfo_ioctl(struct file *file, unsigned long arg) ++{ ++ return au_brinfo(file->f_path.dentry->d_sb, (void __user *)arg); ++} ++ ++#ifdef CONFIG_COMPAT ++long au_brinfo_compat_ioctl(struct file *file, unsigned long arg) ++{ ++ return au_brinfo(file->f_path.dentry->d_sb, compat_ptr(arg)); ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++void sysaufs_br_init(struct au_branch *br) ++{ ++ int i; ++ struct au_brsysfs *br_sysfs; ++ struct attribute *attr; ++ ++ br_sysfs = br->br_sysfs; ++ for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { ++ attr = &br_sysfs->attr; ++ sysfs_attr_init(attr); ++ attr->name = br_sysfs->name; ++ attr->mode = 0444; ++ br_sysfs++; ++ } ++} ++ ++void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ struct au_branch *br; ++ struct kobject *kobj; ++ struct au_brsysfs *br_sysfs; ++ int i; ++ aufs_bindex_t bbot; ++ ++ if (!sysaufs_brs) ++ return; ++ ++ kobj = &au_sbi(sb)->si_kobj; ++ bbot = au_sbbot(sb); ++ for (; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ br_sysfs = br->br_sysfs; ++ for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { ++ sysfs_remove_file(kobj, &br_sysfs->attr); ++ br_sysfs++; ++ } ++ } ++} ++ ++void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ int err, i; ++ aufs_bindex_t bbot; ++ struct kobject *kobj; ++ struct au_branch *br; ++ struct au_brsysfs *br_sysfs; ++ ++ if (!sysaufs_brs) ++ return; ++ ++ kobj = &au_sbi(sb)->si_kobj; ++ bbot = au_sbbot(sb); ++ for (; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ br_sysfs = br->br_sysfs; ++ snprintf(br_sysfs[AuBrSysfs_BR].name, sizeof(br_sysfs->name), ++ SysaufsBr_PREFIX "%d", bindex); ++ snprintf(br_sysfs[AuBrSysfs_BRID].name, sizeof(br_sysfs->name), ++ SysaufsBrid_PREFIX "%d", bindex); ++ for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { ++ err = sysfs_create_file(kobj, &br_sysfs->attr); ++ if (unlikely(err)) ++ pr_warn("failed %s under sysfs(%d)\n", ++ br_sysfs->name, err); ++ br_sysfs++; ++ } ++ } ++} +diff -Naur null/fs/aufs/sysrq.c linux-5.15.36/fs/aufs/sysrq.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/sysrq.c 2022-05-10 16:51:39.877744219 +0300 +@@ -0,0 +1,149 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * magic sysrq handler ++ */ ++ ++/* #include */ ++#include ++#include "aufs.h" ++ ++/* ---------------------------------------------------------------------- */ ++ ++static void sysrq_sb(struct super_block *sb) ++{ ++ char *plevel; ++ struct au_sbinfo *sbinfo; ++ struct file *file; ++ struct hlist_bl_head *files; ++ struct hlist_bl_node *pos; ++ struct au_finfo *finfo; ++ struct inode *i; ++ ++ plevel = au_plevel; ++ au_plevel = KERN_WARNING; ++ ++ /* since we define pr_fmt, call printk directly */ ++#define pr(str) printk(KERN_WARNING AUFS_NAME ": " str) ++ ++ sbinfo = au_sbi(sb); ++ printk(KERN_WARNING "si=%lx\n", sysaufs_si_id(sbinfo)); ++ pr("superblock\n"); ++ au_dpri_sb(sb); ++ ++#if 0 /* reserved */ ++ do { ++ int err, i, j, ndentry; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ ++ err = au_dpages_init(&dpages, GFP_ATOMIC); ++ if (unlikely(err)) ++ break; ++ err = au_dcsub_pages(&dpages, sb->s_root, NULL, NULL); ++ if (!err) ++ for (i = 0; i < dpages.ndpage; i++) { ++ dpage = dpages.dpages + i; ++ ndentry = dpage->ndentry; ++ for (j = 0; j < ndentry; j++) ++ au_dpri_dentry(dpage->dentries[j]); ++ } ++ au_dpages_free(&dpages); ++ } while (0); ++#endif ++ ++ pr("isolated inode\n"); ++ spin_lock(&sb->s_inode_list_lock); ++ list_for_each_entry(i, &sb->s_inodes, i_sb_list) { ++ spin_lock(&i->i_lock); ++ if (hlist_empty(&i->i_dentry)) ++ au_dpri_inode(i); ++ spin_unlock(&i->i_lock); ++ } ++ spin_unlock(&sb->s_inode_list_lock); ++ ++ pr("files\n"); ++ files = &au_sbi(sb)->si_files; ++ hlist_bl_lock(files); ++ hlist_bl_for_each_entry(finfo, pos, files, fi_hlist) { ++ umode_t mode; ++ ++ file = finfo->fi_file; ++ mode = file_inode(file)->i_mode; ++ if (!special_file(mode)) ++ au_dpri_file(file); ++ } ++ hlist_bl_unlock(files); ++ pr("done\n"); ++ ++#undef pr ++ au_plevel = plevel; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* module parameter */ ++static char *aufs_sysrq_key = "a"; ++module_param_named(sysrq, aufs_sysrq_key, charp, 0444); ++MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); ++ ++static void au_sysrq(int key __maybe_unused) ++{ ++ struct au_sbinfo *sbinfo; ++ struct hlist_bl_node *pos; ++ ++ lockdep_off(); ++ au_sbilist_lock(); ++ hlist_bl_for_each_entry(sbinfo, pos, &au_sbilist, si_list) ++ sysrq_sb(sbinfo->si_sb); ++ au_sbilist_unlock(); ++ lockdep_on(); ++} ++ ++static struct sysrq_key_op au_sysrq_op = { ++ .handler = au_sysrq, ++ .help_msg = "Aufs", ++ .action_msg = "Aufs", ++ .enable_mask = SYSRQ_ENABLE_DUMP ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++int __init au_sysrq_init(void) ++{ ++ int err; ++ char key; ++ ++ err = -1; ++ key = *aufs_sysrq_key; ++ if ('a' <= key && key <= 'z') ++ err = register_sysrq_key(key, &au_sysrq_op); ++ if (unlikely(err)) ++ pr_err("err %d, sysrq=%c\n", err, key); ++ return err; ++} ++ ++void au_sysrq_fin(void) ++{ ++ int err; ++ ++ err = unregister_sysrq_key(*aufs_sysrq_key, &au_sysrq_op); ++ if (unlikely(err)) ++ pr_err("err %d (ignored)\n", err); ++} +diff -Naur null/fs/aufs/vdir.c linux-5.15.36/fs/aufs/vdir.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/vdir.c 2022-05-10 16:51:39.877744219 +0300 +@@ -0,0 +1,896 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * virtual or vertical directory ++ */ ++ ++#include ++#include "aufs.h" ++ ++static unsigned int calc_size(int nlen) ++{ ++ return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t)); ++} ++ ++static int set_deblk_end(union au_vdir_deblk_p *p, ++ union au_vdir_deblk_p *deblk_end) ++{ ++ if (calc_size(0) <= deblk_end->deblk - p->deblk) { ++ p->de->de_str.len = 0; ++ /* smp_mb(); */ ++ return 0; ++ } ++ return -1; /* error */ ++} ++ ++/* returns true or false */ ++static int is_deblk_end(union au_vdir_deblk_p *p, ++ union au_vdir_deblk_p *deblk_end) ++{ ++ if (calc_size(0) <= deblk_end->deblk - p->deblk) ++ return !p->de->de_str.len; ++ return 1; ++} ++ ++static unsigned char *last_deblk(struct au_vdir *vdir) ++{ ++ return vdir->vd_deblk[vdir->vd_nblk - 1]; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* estimate the appropriate size for name hash table */ ++unsigned int au_rdhash_est(loff_t sz) ++{ ++ unsigned int n; ++ ++ n = UINT_MAX; ++ sz >>= 10; ++ if (sz < n) ++ n = sz; ++ if (sz < AUFS_RDHASH_DEF) ++ n = AUFS_RDHASH_DEF; ++ /* pr_info("n %u\n", n); */ ++ return n; ++} ++ ++/* ++ * the allocated memory has to be freed by ++ * au_nhash_wh_free() or au_nhash_de_free(). ++ */ ++int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp) ++{ ++ struct hlist_head *head; ++ unsigned int u; ++ size_t sz; ++ ++ sz = sizeof(*nhash->nh_head) * num_hash; ++ head = kmalloc(sz, gfp); ++ if (head) { ++ nhash->nh_num = num_hash; ++ nhash->nh_head = head; ++ for (u = 0; u < num_hash; u++) ++ INIT_HLIST_HEAD(head++); ++ return 0; /* success */ ++ } ++ ++ return -ENOMEM; ++} ++ ++static void nhash_count(struct hlist_head *head) ++{ ++#if 0 /* debugging */ ++ unsigned long n; ++ struct hlist_node *pos; ++ ++ n = 0; ++ hlist_for_each(pos, head) ++ n++; ++ pr_info("%lu\n", n); ++#endif ++} ++ ++static void au_nhash_wh_do_free(struct hlist_head *head) ++{ ++ struct au_vdir_wh *pos; ++ struct hlist_node *node; ++ ++ hlist_for_each_entry_safe(pos, node, head, wh_hash) ++ au_kfree_rcu(pos); ++} ++ ++static void au_nhash_de_do_free(struct hlist_head *head) ++{ ++ struct au_vdir_dehstr *pos; ++ struct hlist_node *node; ++ ++ hlist_for_each_entry_safe(pos, node, head, hash) ++ au_cache_free_vdir_dehstr(pos); ++} ++ ++static void au_nhash_do_free(struct au_nhash *nhash, ++ void (*free)(struct hlist_head *head)) ++{ ++ unsigned int n; ++ struct hlist_head *head; ++ ++ n = nhash->nh_num; ++ if (!n) ++ return; ++ ++ head = nhash->nh_head; ++ while (n-- > 0) { ++ nhash_count(head); ++ free(head++); ++ } ++ au_kfree_try_rcu(nhash->nh_head); ++} ++ ++void au_nhash_wh_free(struct au_nhash *whlist) ++{ ++ au_nhash_do_free(whlist, au_nhash_wh_do_free); ++} ++ ++static void au_nhash_de_free(struct au_nhash *delist) ++{ ++ au_nhash_do_free(delist, au_nhash_de_do_free); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, ++ int limit) ++{ ++ int num; ++ unsigned int u, n; ++ struct hlist_head *head; ++ struct au_vdir_wh *pos; ++ ++ num = 0; ++ n = whlist->nh_num; ++ head = whlist->nh_head; ++ for (u = 0; u < n; u++, head++) ++ hlist_for_each_entry(pos, head, wh_hash) ++ if (pos->wh_bindex == btgt && ++num > limit) ++ return 1; ++ return 0; ++} ++ ++static struct hlist_head *au_name_hash(struct au_nhash *nhash, ++ unsigned char *name, ++ unsigned int len) ++{ ++ unsigned int v; ++ /* const unsigned int magic_bit = 12; */ ++ ++ AuDebugOn(!nhash->nh_num || !nhash->nh_head); ++ ++ v = 0; ++ if (len > 8) ++ len = 8; ++ while (len--) ++ v += *name++; ++ /* v = hash_long(v, magic_bit); */ ++ v %= nhash->nh_num; ++ return nhash->nh_head + v; ++} ++ ++static int au_nhash_test_name(struct au_vdir_destr *str, const char *name, ++ int nlen) ++{ ++ return str->len == nlen && !memcmp(str->name, name, nlen); ++} ++ ++/* returns found or not */ ++int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen) ++{ ++ struct hlist_head *head; ++ struct au_vdir_wh *pos; ++ struct au_vdir_destr *str; ++ ++ head = au_name_hash(whlist, name, nlen); ++ hlist_for_each_entry(pos, head, wh_hash) { ++ str = &pos->wh_str; ++ AuDbg("%.*s\n", str->len, str->name); ++ if (au_nhash_test_name(str, name, nlen)) ++ return 1; ++ } ++ return 0; ++} ++ ++/* returns found(true) or not */ ++static int test_known(struct au_nhash *delist, char *name, int nlen) ++{ ++ struct hlist_head *head; ++ struct au_vdir_dehstr *pos; ++ struct au_vdir_destr *str; ++ ++ head = au_name_hash(delist, name, nlen); ++ hlist_for_each_entry(pos, head, hash) { ++ str = pos->str; ++ AuDbg("%.*s\n", str->len, str->name); ++ if (au_nhash_test_name(str, name, nlen)) ++ return 1; ++ } ++ return 0; ++} ++ ++static void au_shwh_init_wh(struct au_vdir_wh *wh, ino_t ino, ++ unsigned char d_type) ++{ ++#ifdef CONFIG_AUFS_SHWH ++ wh->wh_ino = ino; ++ wh->wh_type = d_type; ++#endif ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, ++ unsigned int d_type, aufs_bindex_t bindex, ++ unsigned char shwh) ++{ ++ int err; ++ struct au_vdir_destr *str; ++ struct au_vdir_wh *wh; ++ ++ AuDbg("%.*s\n", nlen, name); ++ AuDebugOn(!whlist->nh_num || !whlist->nh_head); ++ ++ err = -ENOMEM; ++ wh = kmalloc(sizeof(*wh) + nlen, GFP_NOFS); ++ if (unlikely(!wh)) ++ goto out; ++ ++ err = 0; ++ wh->wh_bindex = bindex; ++ if (shwh) ++ au_shwh_init_wh(wh, ino, d_type); ++ str = &wh->wh_str; ++ str->len = nlen; ++ memcpy(str->name, name, nlen); ++ hlist_add_head(&wh->wh_hash, au_name_hash(whlist, name, nlen)); ++ /* smp_mb(); */ ++ ++out: ++ return err; ++} ++ ++static int append_deblk(struct au_vdir *vdir) ++{ ++ int err; ++ unsigned long ul; ++ const unsigned int deblk_sz = vdir->vd_deblk_sz; ++ union au_vdir_deblk_p p, deblk_end; ++ unsigned char **o; ++ ++ err = -ENOMEM; ++ o = au_krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), ++ GFP_NOFS, /*may_shrink*/0); ++ if (unlikely(!o)) ++ goto out; ++ ++ vdir->vd_deblk = o; ++ p.deblk = kmalloc(deblk_sz, GFP_NOFS); ++ if (p.deblk) { ++ ul = vdir->vd_nblk++; ++ vdir->vd_deblk[ul] = p.deblk; ++ vdir->vd_last.ul = ul; ++ vdir->vd_last.p.deblk = p.deblk; ++ deblk_end.deblk = p.deblk + deblk_sz; ++ err = set_deblk_end(&p, &deblk_end); ++ } ++ ++out: ++ return err; ++} ++ ++static int append_de(struct au_vdir *vdir, char *name, int nlen, ino_t ino, ++ unsigned int d_type, struct au_nhash *delist) ++{ ++ int err; ++ unsigned int sz; ++ const unsigned int deblk_sz = vdir->vd_deblk_sz; ++ union au_vdir_deblk_p p, *room, deblk_end; ++ struct au_vdir_dehstr *dehstr; ++ ++ p.deblk = last_deblk(vdir); ++ deblk_end.deblk = p.deblk + deblk_sz; ++ room = &vdir->vd_last.p; ++ AuDebugOn(room->deblk < p.deblk || deblk_end.deblk <= room->deblk ++ || !is_deblk_end(room, &deblk_end)); ++ ++ sz = calc_size(nlen); ++ if (unlikely(sz > deblk_end.deblk - room->deblk)) { ++ err = append_deblk(vdir); ++ if (unlikely(err)) ++ goto out; ++ ++ p.deblk = last_deblk(vdir); ++ deblk_end.deblk = p.deblk + deblk_sz; ++ /* smp_mb(); */ ++ AuDebugOn(room->deblk != p.deblk); ++ } ++ ++ err = -ENOMEM; ++ dehstr = au_cache_alloc_vdir_dehstr(); ++ if (unlikely(!dehstr)) ++ goto out; ++ ++ dehstr->str = &room->de->de_str; ++ hlist_add_head(&dehstr->hash, au_name_hash(delist, name, nlen)); ++ room->de->de_ino = ino; ++ room->de->de_type = d_type; ++ room->de->de_str.len = nlen; ++ memcpy(room->de->de_str.name, name, nlen); ++ ++ err = 0; ++ room->deblk += sz; ++ if (unlikely(set_deblk_end(room, &deblk_end))) ++ err = append_deblk(vdir); ++ /* smp_mb(); */ ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_vdir_free(struct au_vdir *vdir) ++{ ++ unsigned char **deblk; ++ ++ deblk = vdir->vd_deblk; ++ while (vdir->vd_nblk--) ++ au_kfree_try_rcu(*deblk++); ++ au_kfree_try_rcu(vdir->vd_deblk); ++ au_cache_free_vdir(vdir); ++} ++ ++static struct au_vdir *alloc_vdir(struct file *file) ++{ ++ struct au_vdir *vdir; ++ struct super_block *sb; ++ int err; ++ ++ sb = file->f_path.dentry->d_sb; ++ SiMustAnyLock(sb); ++ ++ err = -ENOMEM; ++ vdir = au_cache_alloc_vdir(); ++ if (unlikely(!vdir)) ++ goto out; ++ ++ vdir->vd_deblk = kzalloc(sizeof(*vdir->vd_deblk), GFP_NOFS); ++ if (unlikely(!vdir->vd_deblk)) ++ goto out_free; ++ ++ vdir->vd_deblk_sz = au_sbi(sb)->si_rdblk; ++ if (!vdir->vd_deblk_sz) { ++ /* estimate the appropriate size for deblk */ ++ vdir->vd_deblk_sz = au_dir_size(file, /*dentry*/NULL); ++ /* pr_info("vd_deblk_sz %u\n", vdir->vd_deblk_sz); */ ++ } ++ vdir->vd_nblk = 0; ++ vdir->vd_version = 0; ++ vdir->vd_jiffy = 0; ++ err = append_deblk(vdir); ++ if (!err) ++ return vdir; /* success */ ++ ++ au_kfree_try_rcu(vdir->vd_deblk); ++ ++out_free: ++ au_cache_free_vdir(vdir); ++out: ++ vdir = ERR_PTR(err); ++ return vdir; ++} ++ ++static int reinit_vdir(struct au_vdir *vdir) ++{ ++ int err; ++ union au_vdir_deblk_p p, deblk_end; ++ ++ while (vdir->vd_nblk > 1) { ++ au_kfree_try_rcu(vdir->vd_deblk[vdir->vd_nblk - 1]); ++ /* vdir->vd_deblk[vdir->vd_nblk - 1] = NULL; */ ++ vdir->vd_nblk--; ++ } ++ p.deblk = vdir->vd_deblk[0]; ++ deblk_end.deblk = p.deblk + vdir->vd_deblk_sz; ++ err = set_deblk_end(&p, &deblk_end); ++ /* keep vd_dblk_sz */ ++ vdir->vd_last.ul = 0; ++ vdir->vd_last.p.deblk = vdir->vd_deblk[0]; ++ vdir->vd_version = 0; ++ vdir->vd_jiffy = 0; ++ /* smp_mb(); */ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define AuFillVdir_CALLED 1 ++#define AuFillVdir_WHABLE (1 << 1) ++#define AuFillVdir_SHWH (1 << 2) ++#define au_ftest_fillvdir(flags, name) ((flags) & AuFillVdir_##name) ++#define au_fset_fillvdir(flags, name) \ ++ do { (flags) |= AuFillVdir_##name; } while (0) ++#define au_fclr_fillvdir(flags, name) \ ++ do { (flags) &= ~AuFillVdir_##name; } while (0) ++ ++#ifndef CONFIG_AUFS_SHWH ++#undef AuFillVdir_SHWH ++#define AuFillVdir_SHWH 0 ++#endif ++ ++struct fillvdir_arg { ++ struct dir_context ctx; ++ struct file *file; ++ struct au_vdir *vdir; ++ struct au_nhash delist; ++ struct au_nhash whlist; ++ aufs_bindex_t bindex; ++ unsigned int flags; ++ int err; ++}; ++ ++static int fillvdir(struct dir_context *ctx, const char *__name, int nlen, ++ loff_t offset __maybe_unused, u64 h_ino, ++ unsigned int d_type) ++{ ++ struct fillvdir_arg *arg = container_of(ctx, struct fillvdir_arg, ctx); ++ char *name = (void *)__name; ++ struct super_block *sb; ++ ino_t ino; ++ const unsigned char shwh = !!au_ftest_fillvdir(arg->flags, SHWH); ++ ++ arg->err = 0; ++ sb = arg->file->f_path.dentry->d_sb; ++ au_fset_fillvdir(arg->flags, CALLED); ++ /* smp_mb(); */ ++ if (nlen <= AUFS_WH_PFX_LEN ++ || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { ++ if (test_known(&arg->delist, name, nlen) ++ || au_nhash_test_known_wh(&arg->whlist, name, nlen)) ++ goto out; /* already exists or whiteouted */ ++ ++ arg->err = au_ino(sb, arg->bindex, h_ino, d_type, &ino); ++ if (!arg->err) { ++ if (unlikely(nlen > AUFS_MAX_NAMELEN)) ++ d_type = DT_UNKNOWN; ++ arg->err = append_de(arg->vdir, name, nlen, ino, ++ d_type, &arg->delist); ++ } ++ } else if (au_ftest_fillvdir(arg->flags, WHABLE)) { ++ name += AUFS_WH_PFX_LEN; ++ nlen -= AUFS_WH_PFX_LEN; ++ if (au_nhash_test_known_wh(&arg->whlist, name, nlen)) ++ goto out; /* already whiteouted */ ++ ++ ino = 0; /* just to suppress a warning */ ++ if (shwh) ++ arg->err = au_wh_ino(sb, arg->bindex, h_ino, d_type, ++ &ino); ++ if (!arg->err) { ++ if (nlen <= AUFS_MAX_NAMELEN + AUFS_WH_PFX_LEN) ++ d_type = DT_UNKNOWN; ++ arg->err = au_nhash_append_wh ++ (&arg->whlist, name, nlen, ino, d_type, ++ arg->bindex, shwh); ++ } ++ } ++ ++out: ++ if (!arg->err) ++ arg->vdir->vd_jiffy = jiffies; ++ /* smp_mb(); */ ++ AuTraceErr(arg->err); ++ return arg->err; ++} ++ ++static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, ++ struct au_nhash *whlist, struct au_nhash *delist) ++{ ++#ifdef CONFIG_AUFS_SHWH ++ int err; ++ unsigned int nh, u; ++ struct hlist_head *head; ++ struct au_vdir_wh *pos; ++ struct hlist_node *n; ++ char *p, *o; ++ struct au_vdir_destr *destr; ++ ++ AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); ++ ++ err = -ENOMEM; ++ o = p = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!p)) ++ goto out; ++ ++ err = 0; ++ nh = whlist->nh_num; ++ memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); ++ p += AUFS_WH_PFX_LEN; ++ for (u = 0; u < nh; u++) { ++ head = whlist->nh_head + u; ++ hlist_for_each_entry_safe(pos, n, head, wh_hash) { ++ destr = &pos->wh_str; ++ memcpy(p, destr->name, destr->len); ++ err = append_de(vdir, o, destr->len + AUFS_WH_PFX_LEN, ++ pos->wh_ino, pos->wh_type, delist); ++ if (unlikely(err)) ++ break; ++ } ++ } ++ ++ free_page((unsigned long)o); ++ ++out: ++ AuTraceErr(err); ++ return err; ++#else ++ return 0; ++#endif ++} ++ ++static int au_do_read_vdir(struct fillvdir_arg *arg) ++{ ++ int err; ++ unsigned int rdhash; ++ loff_t offset; ++ aufs_bindex_t bbot, bindex, btop; ++ unsigned char shwh; ++ struct file *hf, *file; ++ struct super_block *sb; ++ ++ file = arg->file; ++ sb = file->f_path.dentry->d_sb; ++ SiMustAnyLock(sb); ++ ++ rdhash = au_sbi(sb)->si_rdhash; ++ if (!rdhash) ++ rdhash = au_rdhash_est(au_dir_size(file, /*dentry*/NULL)); ++ err = au_nhash_alloc(&arg->delist, rdhash, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ err = au_nhash_alloc(&arg->whlist, rdhash, GFP_NOFS); ++ if (unlikely(err)) ++ goto out_delist; ++ ++ err = 0; ++ arg->flags = 0; ++ shwh = 0; ++ if (au_opt_test(au_mntflags(sb), SHWH)) { ++ shwh = 1; ++ au_fset_fillvdir(arg->flags, SHWH); ++ } ++ btop = au_fbtop(file); ++ bbot = au_fbbot_dir(file); ++ for (bindex = btop; !err && bindex <= bbot; bindex++) { ++ hf = au_hf_dir(file, bindex); ++ if (!hf) ++ continue; ++ ++ offset = vfsub_llseek(hf, 0, SEEK_SET); ++ err = offset; ++ if (unlikely(offset)) ++ break; ++ ++ arg->bindex = bindex; ++ au_fclr_fillvdir(arg->flags, WHABLE); ++ if (shwh ++ || (bindex != bbot ++ && au_br_whable(au_sbr_perm(sb, bindex)))) ++ au_fset_fillvdir(arg->flags, WHABLE); ++ do { ++ arg->err = 0; ++ au_fclr_fillvdir(arg->flags, CALLED); ++ /* smp_mb(); */ ++ err = vfsub_iterate_dir(hf, &arg->ctx); ++ if (err >= 0) ++ err = arg->err; ++ } while (!err && au_ftest_fillvdir(arg->flags, CALLED)); ++ ++ /* ++ * dir_relax() may be good for concurrency, but aufs should not ++ * use it since it will cause a lockdep problem. ++ */ ++ } ++ ++ if (!err && shwh) ++ err = au_handle_shwh(sb, arg->vdir, &arg->whlist, &arg->delist); ++ ++ au_nhash_wh_free(&arg->whlist); ++ ++out_delist: ++ au_nhash_de_free(&arg->delist); ++out: ++ return err; ++} ++ ++static int read_vdir(struct file *file, int may_read) ++{ ++ int err; ++ unsigned long expire; ++ unsigned char do_read; ++ struct fillvdir_arg arg = { ++ .ctx = { ++ .actor = fillvdir ++ } ++ }; ++ struct inode *inode; ++ struct au_vdir *vdir, *allocated; ++ ++ err = 0; ++ inode = file_inode(file); ++ IMustLock(inode); ++ IiMustWriteLock(inode); ++ SiMustAnyLock(inode->i_sb); ++ ++ allocated = NULL; ++ do_read = 0; ++ expire = au_sbi(inode->i_sb)->si_rdcache; ++ vdir = au_ivdir(inode); ++ if (!vdir) { ++ do_read = 1; ++ vdir = alloc_vdir(file); ++ err = PTR_ERR(vdir); ++ if (IS_ERR(vdir)) ++ goto out; ++ err = 0; ++ allocated = vdir; ++ } else if (may_read ++ && (!inode_eq_iversion(inode, vdir->vd_version) ++ || time_after(jiffies, vdir->vd_jiffy + expire))) { ++ do_read = 1; ++ err = reinit_vdir(vdir); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ if (!do_read) ++ return 0; /* success */ ++ ++ arg.file = file; ++ arg.vdir = vdir; ++ err = au_do_read_vdir(&arg); ++ if (!err) { ++ /* file->f_pos = 0; */ /* todo: ctx->pos? */ ++ vdir->vd_version = inode_query_iversion(inode); ++ vdir->vd_last.ul = 0; ++ vdir->vd_last.p.deblk = vdir->vd_deblk[0]; ++ if (allocated) ++ au_set_ivdir(inode, allocated); ++ } else if (allocated) ++ au_vdir_free(allocated); ++ ++out: ++ return err; ++} ++ ++static int copy_vdir(struct au_vdir *tgt, struct au_vdir *src) ++{ ++ int err, rerr; ++ unsigned long ul, n; ++ const unsigned int deblk_sz = src->vd_deblk_sz; ++ ++ AuDebugOn(tgt->vd_nblk != 1); ++ ++ err = -ENOMEM; ++ if (tgt->vd_nblk < src->vd_nblk) { ++ unsigned char **p; ++ ++ p = au_krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, ++ GFP_NOFS, /*may_shrink*/0); ++ if (unlikely(!p)) ++ goto out; ++ tgt->vd_deblk = p; ++ } ++ ++ if (tgt->vd_deblk_sz != deblk_sz) { ++ unsigned char *p; ++ ++ tgt->vd_deblk_sz = deblk_sz; ++ p = au_krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS, ++ /*may_shrink*/1); ++ if (unlikely(!p)) ++ goto out; ++ tgt->vd_deblk[0] = p; ++ } ++ memcpy(tgt->vd_deblk[0], src->vd_deblk[0], deblk_sz); ++ tgt->vd_version = src->vd_version; ++ tgt->vd_jiffy = src->vd_jiffy; ++ ++ n = src->vd_nblk; ++ for (ul = 1; ul < n; ul++) { ++ tgt->vd_deblk[ul] = kmemdup(src->vd_deblk[ul], deblk_sz, ++ GFP_NOFS); ++ if (unlikely(!tgt->vd_deblk[ul])) ++ goto out; ++ tgt->vd_nblk++; ++ } ++ tgt->vd_nblk = n; ++ tgt->vd_last.ul = tgt->vd_last.ul; ++ tgt->vd_last.p.deblk = tgt->vd_deblk[tgt->vd_last.ul]; ++ tgt->vd_last.p.deblk += src->vd_last.p.deblk ++ - src->vd_deblk[src->vd_last.ul]; ++ /* smp_mb(); */ ++ return 0; /* success */ ++ ++out: ++ rerr = reinit_vdir(tgt); ++ BUG_ON(rerr); ++ return err; ++} ++ ++int au_vdir_init(struct file *file) ++{ ++ int err; ++ struct inode *inode; ++ struct au_vdir *vdir_cache, *allocated; ++ ++ /* test file->f_pos here instead of ctx->pos */ ++ err = read_vdir(file, !file->f_pos); ++ if (unlikely(err)) ++ goto out; ++ ++ allocated = NULL; ++ vdir_cache = au_fvdir_cache(file); ++ if (!vdir_cache) { ++ vdir_cache = alloc_vdir(file); ++ err = PTR_ERR(vdir_cache); ++ if (IS_ERR(vdir_cache)) ++ goto out; ++ allocated = vdir_cache; ++ } else if (!file->f_pos && vdir_cache->vd_version != file->f_version) { ++ /* test file->f_pos here instead of ctx->pos */ ++ err = reinit_vdir(vdir_cache); ++ if (unlikely(err)) ++ goto out; ++ } else ++ return 0; /* success */ ++ ++ inode = file_inode(file); ++ err = copy_vdir(vdir_cache, au_ivdir(inode)); ++ if (!err) { ++ file->f_version = inode_query_iversion(inode); ++ if (allocated) ++ au_set_fvdir_cache(file, allocated); ++ } else if (allocated) ++ au_vdir_free(allocated); ++ ++out: ++ return err; ++} ++ ++static loff_t calc_offset(struct au_vdir *vdir) ++{ ++ loff_t offset; ++ union au_vdir_deblk_p p; ++ ++ p.deblk = vdir->vd_deblk[vdir->vd_last.ul]; ++ offset = vdir->vd_last.p.deblk - p.deblk; ++ offset += vdir->vd_deblk_sz * vdir->vd_last.ul; ++ return offset; ++} ++ ++/* returns true or false */ ++static int seek_vdir(struct file *file, struct dir_context *ctx) ++{ ++ int valid; ++ unsigned int deblk_sz; ++ unsigned long ul, n; ++ loff_t offset; ++ union au_vdir_deblk_p p, deblk_end; ++ struct au_vdir *vdir_cache; ++ ++ valid = 1; ++ vdir_cache = au_fvdir_cache(file); ++ offset = calc_offset(vdir_cache); ++ AuDbg("offset %lld\n", offset); ++ if (ctx->pos == offset) ++ goto out; ++ ++ vdir_cache->vd_last.ul = 0; ++ vdir_cache->vd_last.p.deblk = vdir_cache->vd_deblk[0]; ++ if (!ctx->pos) ++ goto out; ++ ++ valid = 0; ++ deblk_sz = vdir_cache->vd_deblk_sz; ++ ul = div64_u64(ctx->pos, deblk_sz); ++ AuDbg("ul %lu\n", ul); ++ if (ul >= vdir_cache->vd_nblk) ++ goto out; ++ ++ n = vdir_cache->vd_nblk; ++ for (; ul < n; ul++) { ++ p.deblk = vdir_cache->vd_deblk[ul]; ++ deblk_end.deblk = p.deblk + deblk_sz; ++ offset = ul; ++ offset *= deblk_sz; ++ while (!is_deblk_end(&p, &deblk_end) && offset < ctx->pos) { ++ unsigned int l; ++ ++ l = calc_size(p.de->de_str.len); ++ offset += l; ++ p.deblk += l; ++ } ++ if (!is_deblk_end(&p, &deblk_end)) { ++ valid = 1; ++ vdir_cache->vd_last.ul = ul; ++ vdir_cache->vd_last.p = p; ++ break; ++ } ++ } ++ ++out: ++ /* smp_mb(); */ ++ if (!valid) ++ AuDbg("valid %d\n", !valid); ++ return valid; ++} ++ ++int au_vdir_fill_de(struct file *file, struct dir_context *ctx) ++{ ++ unsigned int l, deblk_sz; ++ union au_vdir_deblk_p deblk_end; ++ struct au_vdir *vdir_cache; ++ struct au_vdir_de *de; ++ ++ if (!seek_vdir(file, ctx)) ++ return 0; ++ ++ vdir_cache = au_fvdir_cache(file); ++ deblk_sz = vdir_cache->vd_deblk_sz; ++ while (1) { ++ deblk_end.deblk = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; ++ deblk_end.deblk += deblk_sz; ++ while (!is_deblk_end(&vdir_cache->vd_last.p, &deblk_end)) { ++ de = vdir_cache->vd_last.p.de; ++ AuDbg("%.*s, off%lld, i%lu, dt%d\n", ++ de->de_str.len, de->de_str.name, ctx->pos, ++ (unsigned long)de->de_ino, de->de_type); ++ if (unlikely(!dir_emit(ctx, de->de_str.name, ++ de->de_str.len, de->de_ino, ++ de->de_type))) { ++ /* todo: ignore the error caused by udba? */ ++ /* return err; */ ++ return 0; ++ } ++ ++ l = calc_size(de->de_str.len); ++ vdir_cache->vd_last.p.deblk += l; ++ ctx->pos += l; ++ } ++ if (vdir_cache->vd_last.ul < vdir_cache->vd_nblk - 1) { ++ vdir_cache->vd_last.ul++; ++ vdir_cache->vd_last.p.deblk ++ = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; ++ ctx->pos = deblk_sz * vdir_cache->vd_last.ul; ++ continue; ++ } ++ break; ++ } ++ ++ /* smp_mb(); */ ++ return 0; ++} +diff -Naur null/fs/aufs/vfsub.c linux-5.15.36/fs/aufs/vfsub.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/vfsub.c 2022-05-10 16:51:39.877744219 +0300 +@@ -0,0 +1,918 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sub-routines for VFS ++ */ ++ ++#include ++#include ++#include ++#include ++#include "aufs.h" ++ ++#ifdef CONFIG_AUFS_BR_FUSE ++int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb) ++{ ++ if (!au_test_fuse(h_sb) || !au_userns) ++ return 0; ++ ++ return is_current_mnt_ns(mnt) ? 0 : -EACCES; ++} ++#endif ++ ++int vfsub_sync_filesystem(struct super_block *h_sb) ++{ ++ int err; ++ ++ lockdep_off(); ++ down_read(&h_sb->s_umount); ++ err = sync_filesystem(h_sb); ++ up_read(&h_sb->s_umount); ++ lockdep_on(); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int vfsub_update_h_iattr(struct path *h_path, int *did) ++{ ++ int err; ++ struct kstat st; ++ struct super_block *h_sb; ++ ++ /* ++ * Always needs h_path->mnt for LSM or FUSE branch. ++ */ ++ AuDebugOn(!h_path->mnt); ++ ++ /* for remote fs, leave work for its getattr or d_revalidate */ ++ /* for bad i_attr fs, handle them in aufs_getattr() */ ++ /* still some fs may acquire i_mutex. we need to skip them */ ++ err = 0; ++ if (!did) ++ did = &err; ++ h_sb = h_path->dentry->d_sb; ++ *did = (!au_test_fs_remote(h_sb) && au_test_fs_refresh_iattr(h_sb)); ++ if (*did) ++ err = vfsub_getattr(h_path, &st); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct file *vfsub_dentry_open(struct path *path, int flags) ++{ ++ return dentry_open(path, flags /* | __FMODE_NONOTIFY */, ++ current_cred()); ++} ++ ++struct file *vfsub_filp_open(const char *path, int oflags, int mode) ++{ ++ struct file *file; ++ ++ lockdep_off(); ++ file = filp_open(path, ++ oflags /* | __FMODE_NONOTIFY */, ++ mode); ++ lockdep_on(); ++ if (IS_ERR(file)) ++ goto out; ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ ++ ++out: ++ return file; ++} ++ ++/* ++ * Ideally this function should call VFS:do_last() in order to keep all its ++ * checkings. But it is very hard for aufs to regenerate several VFS internal ++ * structure such as nameidata. This is a second (or third) best approach. ++ * cf. linux/fs/namei.c:do_last(), lookup_open() and atomic_open(). ++ */ ++int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, ++ struct vfsub_aopen_args *args) ++{ ++ int err; ++ struct au_branch *br = args->br; ++ struct file *file = args->file; ++ /* copied from linux/fs/namei.c:atomic_open() */ ++ struct dentry *const DENTRY_NOT_SET = (void *)-1UL; ++ ++ IMustLock(dir); ++ AuDebugOn(!dir->i_op->atomic_open); ++ ++ err = au_br_test_oflag(args->open_flag, br); ++ if (unlikely(err)) ++ goto out; ++ ++ au_lcnt_inc(&br->br_nfiles); ++ file->f_path.dentry = DENTRY_NOT_SET; ++ file->f_path.mnt = au_br_mnt(br); ++ AuDbg("%ps\n", dir->i_op->atomic_open); ++ err = dir->i_op->atomic_open(dir, dentry, file, args->open_flag, ++ args->create_mode); ++ if (unlikely(err < 0)) { ++ au_lcnt_dec(&br->br_nfiles); ++ goto out; ++ } ++ ++ /* temporary workaround for nfsv4 branch */ ++ if (au_test_nfs(dir->i_sb)) ++ nfs_mark_for_revalidate(dir); ++ ++ if (file->f_mode & FMODE_CREATED) ++ fsnotify_create(dir, dentry); ++ if (!(file->f_mode & FMODE_OPENED)) { ++ au_lcnt_dec(&br->br_nfiles); ++ goto out; ++ } ++ ++ /* todo: call VFS:may_open() here */ ++ /* todo: ima_file_check() too? */ ++ if (!err && (args->open_flag & __FMODE_EXEC)) ++ err = deny_write_access(file); ++ if (!err) ++ fsnotify_open(file); ++ else ++ au_lcnt_dec(&br->br_nfiles); ++ /* note that the file is created and still opened */ ++ ++out: ++ return err; ++} ++ ++int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) ++{ ++ int err; ++ ++ err = kern_path(name, flags, path); ++ if (!err && d_is_positive(path->dentry)) ++ vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++struct dentry *vfsub_lookup_one_len_unlocked(const char *name, ++ struct path *ppath, int len) ++{ ++ struct path path; ++ ++ path.dentry = lookup_one_len_unlocked(name, ppath->dentry, len); ++ if (IS_ERR(path.dentry)) ++ goto out; ++ if (d_is_positive(path.dentry)) { ++ path.mnt = ppath->mnt; ++ vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ ++ } ++ ++out: ++ AuTraceErrPtr(path.dentry); ++ return path.dentry; ++} ++ ++struct dentry *vfsub_lookup_one_len(const char *name, struct path *ppath, ++ int len) ++{ ++ struct path path; ++ ++ /* VFS checks it too, but by WARN_ON_ONCE() */ ++ IMustLock(d_inode(ppath->dentry)); ++ ++ path.dentry = lookup_one_len(name, ppath->dentry, len); ++ if (IS_ERR(path.dentry)) ++ goto out; ++ if (d_is_positive(path.dentry)) { ++ path.mnt = ppath->mnt; ++ vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ ++ } ++ ++out: ++ AuTraceErrPtr(path.dentry); ++ return path.dentry; ++} ++ ++void vfsub_call_lkup_one(void *args) ++{ ++ struct vfsub_lkup_one_args *a = args; ++ *a->errp = vfsub_lkup_one(a->name, a->ppath); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, ++ struct dentry *d2, struct au_hinode *hdir2) ++{ ++ struct dentry *d; ++ ++ lockdep_off(); ++ d = lock_rename(d1, d2); ++ lockdep_on(); ++ au_hn_suspend(hdir1); ++ if (hdir1 != hdir2) ++ au_hn_suspend(hdir2); ++ ++ return d; ++} ++ ++void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, ++ struct dentry *d2, struct au_hinode *hdir2) ++{ ++ au_hn_resume(hdir1); ++ if (hdir1 != hdir2) ++ au_hn_resume(hdir2); ++ lockdep_off(); ++ unlock_rename(d1, d2); ++ lockdep_on(); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int vfsub_create(struct inode *dir, struct path *path, int mode, bool want_excl) ++{ ++ int err; ++ struct dentry *d; ++ struct user_namespace *userns; ++ ++ IMustLock(dir); ++ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ err = security_path_mknod(path, d, mode, 0); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ userns = mnt_user_ns(path->mnt); ++ ++ lockdep_off(); ++ err = vfs_create(userns, dir, path->dentry, mode, want_excl); ++ lockdep_on(); ++ if (!err) { ++ struct path tmp = *path; ++ int did; ++ ++ vfsub_update_h_iattr(&tmp, &did); ++ if (did) { ++ tmp.dentry = path->dentry->d_parent; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ } ++ /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++int vfsub_symlink(struct inode *dir, struct path *path, const char *symname) ++{ ++ int err; ++ struct dentry *d; ++ struct user_namespace *userns; ++ ++ IMustLock(dir); ++ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ err = security_path_symlink(path, d, symname); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ userns = mnt_user_ns(path->mnt); ++ ++ lockdep_off(); ++ err = vfs_symlink(userns, dir, path->dentry, symname); ++ lockdep_on(); ++ if (!err) { ++ struct path tmp = *path; ++ int did; ++ ++ vfsub_update_h_iattr(&tmp, &did); ++ if (did) { ++ tmp.dentry = path->dentry->d_parent; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ } ++ /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev) ++{ ++ int err; ++ struct dentry *d; ++ struct user_namespace *userns; ++ ++ IMustLock(dir); ++ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ err = security_path_mknod(path, d, mode, new_encode_dev(dev)); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ userns = mnt_user_ns(path->mnt); ++ ++ lockdep_off(); ++ err = vfs_mknod(userns, dir, path->dentry, mode, dev); ++ lockdep_on(); ++ if (!err) { ++ struct path tmp = *path; ++ int did; ++ ++ vfsub_update_h_iattr(&tmp, &did); ++ if (did) { ++ tmp.dentry = path->dentry->d_parent; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ } ++ /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++static int au_test_nlink(struct inode *inode) ++{ ++ const unsigned int link_max = UINT_MAX >> 1; /* rough margin */ ++ ++ if (!au_test_fs_no_limit_nlink(inode->i_sb) ++ || inode->i_nlink < link_max) ++ return 0; ++ return -EMLINK; ++} ++ ++int vfsub_link(struct dentry *src_dentry, struct inode *dir, struct path *path, ++ struct inode **delegated_inode) ++{ ++ int err; ++ struct dentry *d; ++ struct user_namespace *userns; ++ ++ IMustLock(dir); ++ ++ err = au_test_nlink(d_inode(src_dentry)); ++ if (unlikely(err)) ++ return err; ++ ++ /* we don't call may_linkat() */ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ err = security_path_link(src_dentry, path, d); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ userns = mnt_user_ns(path->mnt); ++ ++ lockdep_off(); ++ err = vfs_link(src_dentry, userns, dir, path->dentry, delegated_inode); ++ lockdep_on(); ++ if (!err) { ++ struct path tmp = *path; ++ int did; ++ ++ /* fuse has different memory inode for the same inumber */ ++ vfsub_update_h_iattr(&tmp, &did); ++ if (did) { ++ tmp.dentry = path->dentry->d_parent; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ tmp.dentry = src_dentry; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ } ++ /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++int vfsub_rename(struct inode *src_dir, struct dentry *src_dentry, ++ struct inode *dir, struct path *path, ++ struct inode **delegated_inode, unsigned int flags) ++{ ++ int err; ++ struct renamedata rd; ++ struct path tmp = { ++ .mnt = path->mnt ++ }; ++ struct dentry *d; ++ ++ IMustLock(dir); ++ IMustLock(src_dir); ++ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ tmp.dentry = src_dentry->d_parent; ++ err = security_path_rename(&tmp, src_dentry, path, d, /*flags*/0); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ ++ rd.old_mnt_userns = mnt_user_ns(path->mnt); ++ rd.old_dir = src_dir; ++ rd.old_dentry = src_dentry; ++ rd.new_mnt_userns = rd.old_mnt_userns; ++ rd.new_dir = dir; ++ rd.new_dentry = path->dentry; ++ rd.delegated_inode = delegated_inode; ++ rd.flags = flags; ++ lockdep_off(); ++ err = vfs_rename(&rd); ++ lockdep_on(); ++ if (!err) { ++ int did; ++ ++ tmp.dentry = d->d_parent; ++ vfsub_update_h_iattr(&tmp, &did); ++ if (did) { ++ tmp.dentry = src_dentry; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ tmp.dentry = src_dentry->d_parent; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ } ++ /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++int vfsub_mkdir(struct inode *dir, struct path *path, int mode) ++{ ++ int err; ++ struct dentry *d; ++ struct user_namespace *userns; ++ ++ IMustLock(dir); ++ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ err = security_path_mkdir(path, d, mode); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ userns = mnt_user_ns(path->mnt); ++ ++ lockdep_off(); ++ err = vfs_mkdir(userns, dir, path->dentry, mode); ++ lockdep_on(); ++ if (!err) { ++ struct path tmp = *path; ++ int did; ++ ++ vfsub_update_h_iattr(&tmp, &did); ++ if (did) { ++ tmp.dentry = path->dentry->d_parent; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); ++ } ++ /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++int vfsub_rmdir(struct inode *dir, struct path *path) ++{ ++ int err; ++ struct dentry *d; ++ struct user_namespace *userns; ++ ++ IMustLock(dir); ++ ++ d = path->dentry; ++ path->dentry = d->d_parent; ++ err = security_path_rmdir(path, d); ++ path->dentry = d; ++ if (unlikely(err)) ++ goto out; ++ userns = mnt_user_ns(path->mnt); ++ ++ lockdep_off(); ++ err = vfs_rmdir(userns, dir, path->dentry); ++ lockdep_on(); ++ if (!err) { ++ struct path tmp = { ++ .dentry = path->dentry->d_parent, ++ .mnt = path->mnt ++ }; ++ ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ ++ } ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* todo: support mmap_sem? */ ++ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, ++ loff_t *ppos) ++{ ++ ssize_t err; ++ ++ lockdep_off(); ++ err = vfs_read(file, ubuf, count, ppos); ++ lockdep_on(); ++ if (err >= 0) ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, ++ loff_t *ppos) ++{ ++ ssize_t err; ++ ++ lockdep_off(); ++ err = kernel_read(file, kbuf, count, ppos); ++ lockdep_on(); ++ AuTraceErr(err); ++ if (err >= 0) ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, ++ loff_t *ppos) ++{ ++ ssize_t err; ++ ++ lockdep_off(); ++ err = vfs_write(file, ubuf, count, ppos); ++ lockdep_on(); ++ if (err >= 0) ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, loff_t *ppos) ++{ ++ ssize_t err; ++ ++ lockdep_off(); ++ err = kernel_write(file, kbuf, count, ppos); ++ lockdep_on(); ++ if (err >= 0) ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++int vfsub_flush(struct file *file, fl_owner_t id) ++{ ++ int err; ++ ++ err = 0; ++ if (file->f_op->flush) { ++ if (!au_test_nfs(file->f_path.dentry->d_sb)) ++ err = file->f_op->flush(file, id); ++ else { ++ lockdep_off(); ++ err = file->f_op->flush(file, id); ++ lockdep_on(); ++ } ++ if (!err) ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); ++ /*ignore*/ ++ } ++ return err; ++} ++ ++int vfsub_iterate_dir(struct file *file, struct dir_context *ctx) ++{ ++ int err; ++ ++ AuDbg("%pD, ctx{%ps, %llu}\n", file, ctx->actor, ctx->pos); ++ ++ lockdep_off(); ++ err = iterate_dir(file, ctx); ++ lockdep_on(); ++ if (err >= 0) ++ vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ ++ ++ return err; ++} ++ ++long vfsub_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags) ++{ ++ long err; ++ ++ lockdep_off(); ++ err = do_splice_to(in, ppos, pipe, len, flags); ++ lockdep_on(); ++ file_accessed(in); ++ if (err >= 0) ++ vfsub_update_h_iattr(&in->f_path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags) ++{ ++ long err; ++ ++ lockdep_off(); ++ err = do_splice_from(pipe, out, ppos, len, flags); ++ lockdep_on(); ++ if (err >= 0) ++ vfsub_update_h_iattr(&out->f_path, /*did*/NULL); /*ignore*/ ++ return err; ++} ++ ++int vfsub_fsync(struct file *file, struct path *path, int datasync) ++{ ++ int err; ++ ++ /* file can be NULL */ ++ lockdep_off(); ++ err = vfs_fsync(file, datasync); ++ lockdep_on(); ++ if (!err) { ++ if (!path) { ++ AuDebugOn(!file); ++ path = &file->f_path; ++ } ++ vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ ++ } ++ return err; ++} ++ ++/* cf. open.c:do_sys_truncate() and do_sys_ftruncate() */ ++int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, ++ struct file *h_file) ++{ ++ int err; ++ struct inode *h_inode; ++ struct super_block *h_sb; ++ struct user_namespace *h_userns; ++ ++ if (!h_file) { ++ err = vfsub_truncate(h_path, length); ++ goto out; ++ } ++ ++ h_inode = d_inode(h_path->dentry); ++ h_sb = h_inode->i_sb; ++ lockdep_off(); ++ sb_start_write(h_sb); ++ lockdep_on(); ++ err = security_path_truncate(h_path); ++ if (!err) { ++ h_userns = mnt_user_ns(h_path->mnt); ++ lockdep_off(); ++ err = do_truncate(h_userns, h_path->dentry, length, attr, ++ h_file); ++ lockdep_on(); ++ } ++ lockdep_off(); ++ sb_end_write(h_sb); ++ lockdep_on(); ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_vfsub_mkdir_args { ++ int *errp; ++ struct inode *dir; ++ struct path *path; ++ int mode; ++}; ++ ++static void au_call_vfsub_mkdir(void *args) ++{ ++ struct au_vfsub_mkdir_args *a = args; ++ *a->errp = vfsub_mkdir(a->dir, a->path, a->mode); ++} ++ ++int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) ++{ ++ int err, do_sio, wkq_err; ++ struct user_namespace *userns; ++ ++ userns = mnt_user_ns(path->mnt); ++ do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); ++ if (!do_sio) { ++ lockdep_off(); ++ err = vfsub_mkdir(dir, path, mode); ++ lockdep_on(); ++ } else { ++ struct au_vfsub_mkdir_args args = { ++ .errp = &err, ++ .dir = dir, ++ .path = path, ++ .mode = mode ++ }; ++ wkq_err = au_wkq_wait(au_call_vfsub_mkdir, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ ++ return err; ++} ++ ++struct au_vfsub_rmdir_args { ++ int *errp; ++ struct inode *dir; ++ struct path *path; ++}; ++ ++static void au_call_vfsub_rmdir(void *args) ++{ ++ struct au_vfsub_rmdir_args *a = args; ++ *a->errp = vfsub_rmdir(a->dir, a->path); ++} ++ ++int vfsub_sio_rmdir(struct inode *dir, struct path *path) ++{ ++ int err, do_sio, wkq_err; ++ struct user_namespace *userns; ++ ++ userns = mnt_user_ns(path->mnt); ++ do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); ++ if (!do_sio) { ++ lockdep_off(); ++ err = vfsub_rmdir(dir, path); ++ lockdep_on(); ++ } else { ++ struct au_vfsub_rmdir_args args = { ++ .errp = &err, ++ .dir = dir, ++ .path = path ++ }; ++ wkq_err = au_wkq_wait(au_call_vfsub_rmdir, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct notify_change_args { ++ int *errp; ++ struct path *path; ++ struct iattr *ia; ++ struct inode **delegated_inode; ++}; ++ ++static void call_notify_change(void *args) ++{ ++ struct notify_change_args *a = args; ++ struct inode *h_inode; ++ struct user_namespace *userns; ++ ++ h_inode = d_inode(a->path->dentry); ++ IMustLock(h_inode); ++ ++ *a->errp = -EPERM; ++ if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { ++ userns = mnt_user_ns(a->path->mnt); ++ lockdep_off(); ++ *a->errp = notify_change(userns, a->path->dentry, a->ia, ++ a->delegated_inode); ++ lockdep_on(); ++ if (!*a->errp) ++ vfsub_update_h_iattr(a->path, /*did*/NULL); /*ignore*/ ++ } ++ AuTraceErr(*a->errp); ++} ++ ++int vfsub_notify_change(struct path *path, struct iattr *ia, ++ struct inode **delegated_inode) ++{ ++ int err; ++ struct notify_change_args args = { ++ .errp = &err, ++ .path = path, ++ .ia = ia, ++ .delegated_inode = delegated_inode ++ }; ++ ++ call_notify_change(&args); ++ ++ return err; ++} ++ ++int vfsub_sio_notify_change(struct path *path, struct iattr *ia, ++ struct inode **delegated_inode) ++{ ++ int err, wkq_err; ++ struct notify_change_args args = { ++ .errp = &err, ++ .path = path, ++ .ia = ia, ++ .delegated_inode = delegated_inode ++ }; ++ ++ wkq_err = au_wkq_wait(call_notify_change, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct unlink_args { ++ int *errp; ++ struct inode *dir; ++ struct path *path; ++ struct inode **delegated_inode; ++}; ++ ++static void call_unlink(void *args) ++{ ++ struct unlink_args *a = args; ++ struct dentry *d = a->path->dentry; ++ struct inode *h_inode; ++ struct user_namespace *userns; ++ const int stop_sillyrename = (au_test_nfs(d->d_sb) ++ && au_dcount(d) == 1); ++ ++ IMustLock(a->dir); ++ ++ a->path->dentry = d->d_parent; ++ *a->errp = security_path_unlink(a->path, d); ++ a->path->dentry = d; ++ if (unlikely(*a->errp)) ++ return; ++ ++ if (!stop_sillyrename) ++ dget(d); ++ h_inode = NULL; ++ if (d_is_positive(d)) { ++ h_inode = d_inode(d); ++ ihold(h_inode); ++ } ++ ++ userns = mnt_user_ns(a->path->mnt); ++ lockdep_off(); ++ *a->errp = vfs_unlink(userns, a->dir, d, a->delegated_inode); ++ lockdep_on(); ++ if (!*a->errp) { ++ struct path tmp = { ++ .dentry = d->d_parent, ++ .mnt = a->path->mnt ++ }; ++ vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ ++ } ++ ++ if (!stop_sillyrename) ++ dput(d); ++ if (h_inode) ++ iput(h_inode); ++ ++ AuTraceErr(*a->errp); ++} ++ ++/* ++ * @dir: must be locked. ++ * @dentry: target dentry. ++ */ ++int vfsub_unlink(struct inode *dir, struct path *path, ++ struct inode **delegated_inode, int force) ++{ ++ int err; ++ struct unlink_args args = { ++ .errp = &err, ++ .dir = dir, ++ .path = path, ++ .delegated_inode = delegated_inode ++ }; ++ ++ if (!force) ++ call_unlink(&args); ++ else { ++ int wkq_err; ++ ++ wkq_err = au_wkq_wait(call_unlink, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ ++ return err; ++} +diff -Naur null/fs/aufs/vfsub.h linux-5.15.36/fs/aufs/vfsub.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/vfsub.h 2022-05-10 16:51:39.877744219 +0300 +@@ -0,0 +1,358 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * sub-routines for VFS ++ */ ++ ++#ifndef __AUFS_VFSUB_H__ ++#define __AUFS_VFSUB_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++#include ++#include "debug.h" ++ ++/* copied from linux/fs/internal.h */ ++/* todo: BAD approach!! */ ++extern void __mnt_drop_write(struct vfsmount *); ++extern struct file *alloc_empty_file(int, const struct cred *); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* lock subclass for lower inode */ ++/* default MAX_LOCKDEP_SUBCLASSES(8) is not enough */ ++/* reduce? gave up. */ ++enum { ++ AuLsc_I_Begin = I_MUTEX_PARENT2, /* 5 */ ++ AuLsc_I_PARENT, /* lower inode, parent first */ ++ AuLsc_I_PARENT2, /* copyup dirs */ ++ AuLsc_I_PARENT3, /* copyup wh */ ++ AuLsc_I_CHILD, ++ AuLsc_I_CHILD2, ++ AuLsc_I_End ++}; ++ ++/* to debug easier, do not make them inlined functions */ ++#define MtxMustLock(mtx) AuDebugOn(!mutex_is_locked(mtx)) ++#define IMustLock(i) AuDebugOn(!inode_is_locked(i)) ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline void vfsub_drop_nlink(struct inode *inode) ++{ ++ AuDebugOn(!inode->i_nlink); ++ drop_nlink(inode); ++} ++ ++static inline void vfsub_dead_dir(struct inode *inode) ++{ ++ AuDebugOn(!S_ISDIR(inode->i_mode)); ++ inode->i_flags |= S_DEAD; ++ clear_nlink(inode); ++} ++ ++static inline int vfsub_native_ro(struct inode *inode) ++{ ++ return sb_rdonly(inode->i_sb) ++ || IS_RDONLY(inode) ++ /* || IS_APPEND(inode) */ ++ || IS_IMMUTABLE(inode); ++} ++ ++#ifdef CONFIG_AUFS_BR_FUSE ++int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb); ++#else ++AuStubInt0(vfsub_test_mntns, struct vfsmount *mnt, struct super_block *h_sb); ++#endif ++ ++int vfsub_sync_filesystem(struct super_block *h_sb); ++ ++/* ---------------------------------------------------------------------- */ ++ ++int vfsub_update_h_iattr(struct path *h_path, int *did); ++struct file *vfsub_dentry_open(struct path *path, int flags); ++struct file *vfsub_filp_open(const char *path, int oflags, int mode); ++struct au_branch; ++struct vfsub_aopen_args { ++ struct file *file; ++ unsigned int open_flag; ++ umode_t create_mode; ++ struct au_branch *br; ++}; ++int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, ++ struct vfsub_aopen_args *args); ++int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); ++ ++struct dentry *vfsub_lookup_one_len_unlocked(const char *name, ++ struct path *ppath, int len); ++struct dentry *vfsub_lookup_one_len(const char *name, struct path *ppath, ++ int len); ++ ++struct vfsub_lkup_one_args { ++ struct dentry **errp; ++ struct qstr *name; ++ struct path *ppath; ++}; ++ ++static inline struct dentry *vfsub_lkup_one(struct qstr *name, ++ struct path *ppath) ++{ ++ return vfsub_lookup_one_len(name->name, ppath, name->len); ++} ++ ++void vfsub_call_lkup_one(void *args); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline int vfsub_mnt_want_write(struct vfsmount *mnt) ++{ ++ int err; ++ ++ lockdep_off(); ++ err = mnt_want_write(mnt); ++ lockdep_on(); ++ return err; ++} ++ ++static inline void vfsub_mnt_drop_write(struct vfsmount *mnt) ++{ ++ lockdep_off(); ++ mnt_drop_write(mnt); ++ lockdep_on(); ++} ++ ++#if 0 /* reserved */ ++static inline void vfsub_mnt_drop_write_file(struct file *file) ++{ ++ lockdep_off(); ++ mnt_drop_write_file(file); ++ lockdep_on(); ++} ++#endif ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_hinode; ++struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, ++ struct dentry *d2, struct au_hinode *hdir2); ++void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, ++ struct dentry *d2, struct au_hinode *hdir2); ++ ++int vfsub_create(struct inode *dir, struct path *path, int mode, ++ bool want_excl); ++int vfsub_symlink(struct inode *dir, struct path *path, ++ const char *symname); ++int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev); ++int vfsub_link(struct dentry *src_dentry, struct inode *dir, ++ struct path *path, struct inode **delegated_inode); ++int vfsub_rename(struct inode *src_hdir, struct dentry *src_dentry, ++ struct inode *hdir, struct path *path, ++ struct inode **delegated_inode, unsigned int flags); ++int vfsub_mkdir(struct inode *dir, struct path *path, int mode); ++int vfsub_rmdir(struct inode *dir, struct path *path); ++ ++/* ---------------------------------------------------------------------- */ ++ ++ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, ++ loff_t *ppos); ++ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, ++ loff_t *ppos); ++ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, ++ loff_t *ppos); ++ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, ++ loff_t *ppos); ++int vfsub_flush(struct file *file, fl_owner_t id); ++int vfsub_iterate_dir(struct file *file, struct dir_context *ctx); ++ ++static inline loff_t vfsub_f_size_read(struct file *file) ++{ ++ return i_size_read(file_inode(file)); ++} ++ ++static inline unsigned int vfsub_file_flags(struct file *file) ++{ ++ unsigned int flags; ++ ++ spin_lock(&file->f_lock); ++ flags = file->f_flags; ++ spin_unlock(&file->f_lock); ++ ++ return flags; ++} ++ ++static inline int vfsub_file_execed(struct file *file) ++{ ++ /* todo: direct access f_flags */ ++ return !!(vfsub_file_flags(file) & __FMODE_EXEC); ++} ++ ++#if 0 /* reserved */ ++static inline void vfsub_file_accessed(struct file *h_file) ++{ ++ file_accessed(h_file); ++ vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); /*ignore*/ ++} ++#endif ++ ++#if 0 /* reserved */ ++static inline void vfsub_touch_atime(struct vfsmount *h_mnt, ++ struct dentry *h_dentry) ++{ ++ struct path h_path = { ++ .dentry = h_dentry, ++ .mnt = h_mnt ++ }; ++ touch_atime(&h_path); ++ vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ ++} ++#endif ++ ++static inline int vfsub_update_time(struct inode *h_inode, ++ struct timespec64 *ts, int flags) ++{ ++ return inode_update_time(h_inode, ts, flags); ++ /* no vfsub_update_h_iattr() since we don't have struct path */ ++} ++ ++#ifdef CONFIG_FS_POSIX_ACL ++static inline int vfsub_acl_chmod(struct user_namespace *h_userns, ++ struct inode *h_inode, umode_t h_mode) ++{ ++ int err; ++ ++ err = posix_acl_chmod(h_userns, h_inode, h_mode); ++ if (err == -EOPNOTSUPP) ++ err = 0; ++ return err; ++} ++#else ++AuStubInt0(vfsub_acl_chmod, struct user_namespace *h_userns, ++ struct inode *h_inode, umode_t h_mode); ++#endif ++ ++long vfsub_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags); ++long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags); ++ ++static inline long vfsub_truncate(struct path *path, loff_t length) ++{ ++ long err; ++ ++ lockdep_off(); ++ err = vfs_truncate(path, length); ++ lockdep_on(); ++ return err; ++} ++ ++int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, ++ struct file *h_file); ++int vfsub_fsync(struct file *file, struct path *path, int datasync); ++ ++/* ++ * re-use branch fs's ioctl(FICLONE) while aufs itself doesn't support such ++ * ioctl. ++ */ ++static inline loff_t vfsub_clone_file_range(struct file *src, struct file *dst, ++ loff_t len) ++{ ++ loff_t err; ++ ++ lockdep_off(); ++ err = vfs_clone_file_range(src, 0, dst, 0, len, /*remap_flags*/0); ++ lockdep_on(); ++ ++ return err; ++} ++ ++/* copy_file_range(2) is a systemcall */ ++static inline ssize_t vfsub_copy_file_range(struct file *src, loff_t src_pos, ++ struct file *dst, loff_t dst_pos, ++ size_t len, unsigned int flags) ++{ ++ ssize_t ssz; ++ ++ lockdep_off(); ++ ssz = vfs_copy_file_range(src, src_pos, dst, dst_pos, len, flags); ++ lockdep_on(); ++ ++ return ssz; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline loff_t vfsub_llseek(struct file *file, loff_t offset, int origin) ++{ ++ loff_t err; ++ ++ lockdep_off(); ++ err = vfs_llseek(file, offset, origin); ++ lockdep_on(); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode); ++int vfsub_sio_rmdir(struct inode *dir, struct path *path); ++int vfsub_sio_notify_change(struct path *path, struct iattr *ia, ++ struct inode **delegated_inode); ++int vfsub_notify_change(struct path *path, struct iattr *ia, ++ struct inode **delegated_inode); ++int vfsub_unlink(struct inode *dir, struct path *path, ++ struct inode **delegated_inode, int force); ++ ++static inline int vfsub_getattr(const struct path *path, struct kstat *st) ++{ ++ return vfs_getattr(path, st, STATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline int vfsub_setxattr(struct user_namespace *userns, ++ struct dentry *dentry, const char *name, ++ const void *value, size_t size, int flags) ++{ ++ int err; ++ ++ lockdep_off(); ++ err = vfs_setxattr(userns, dentry, name, value, size, flags); ++ lockdep_on(); ++ ++ return err; ++} ++ ++static inline int vfsub_removexattr(struct user_namespace *userns, ++ struct dentry *dentry, const char *name) ++{ ++ int err; ++ ++ lockdep_off(); ++ err = vfs_removexattr(userns, dentry, name); ++ lockdep_on(); ++ ++ return err; ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_VFSUB_H__ */ +diff -Naur null/fs/aufs/wbr_policy.c linux-5.15.36/fs/aufs/wbr_policy.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/wbr_policy.c 2022-05-10 16:51:39.877744219 +0300 +@@ -0,0 +1,830 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * policies for selecting one among multiple writable branches ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* subset of cpup_attr() */ ++static noinline_for_stack ++int au_cpdown_attr(struct path *h_path, struct dentry *h_src) ++{ ++ int err, sbits; ++ struct iattr ia; ++ struct inode *h_isrc; ++ ++ h_isrc = d_inode(h_src); ++ ia.ia_valid = ATTR_FORCE | ATTR_MODE | ATTR_UID | ATTR_GID; ++ ia.ia_mode = h_isrc->i_mode; ++ ia.ia_uid = h_isrc->i_uid; ++ ia.ia_gid = h_isrc->i_gid; ++ sbits = !!(ia.ia_mode & (S_ISUID | S_ISGID)); ++ au_cpup_attr_flags(d_inode(h_path->dentry), h_isrc->i_flags); ++ /* no delegation since it is just created */ ++ err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); ++ ++ /* is this nfs only? */ ++ if (!err && sbits && au_test_nfs(h_path->dentry->d_sb)) { ++ ia.ia_valid = ATTR_FORCE | ATTR_MODE; ++ ia.ia_mode = h_isrc->i_mode; ++ err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); ++ } ++ ++ return err; ++} ++ ++#define AuCpdown_PARENT_OPQ 1 ++#define AuCpdown_WHED (1 << 1) ++#define AuCpdown_MADE_DIR (1 << 2) ++#define AuCpdown_DIROPQ (1 << 3) ++#define au_ftest_cpdown(flags, name) ((flags) & AuCpdown_##name) ++#define au_fset_cpdown(flags, name) \ ++ do { (flags) |= AuCpdown_##name; } while (0) ++#define au_fclr_cpdown(flags, name) \ ++ do { (flags) &= ~AuCpdown_##name; } while (0) ++ ++static int au_cpdown_dir_opq(struct dentry *dentry, aufs_bindex_t bdst, ++ unsigned int *flags) ++{ ++ int err; ++ struct dentry *opq_dentry; ++ ++ opq_dentry = au_diropq_create(dentry, bdst); ++ err = PTR_ERR(opq_dentry); ++ if (IS_ERR(opq_dentry)) ++ goto out; ++ dput(opq_dentry); ++ au_fset_cpdown(*flags, DIROPQ); ++ ++out: ++ return err; ++} ++ ++static int au_cpdown_dir_wh(struct dentry *dentry, struct dentry *h_parent, ++ struct inode *dir, aufs_bindex_t bdst) ++{ ++ int err; ++ struct path h_path; ++ struct au_branch *br; ++ ++ br = au_sbr(dentry->d_sb, bdst); ++ h_path.dentry = au_wh_lkup(h_parent, &dentry->d_name, br); ++ err = PTR_ERR(h_path.dentry); ++ if (IS_ERR(h_path.dentry)) ++ goto out; ++ ++ err = 0; ++ if (d_is_positive(h_path.dentry)) { ++ h_path.mnt = au_br_mnt(br); ++ err = au_wh_unlink_dentry(au_h_iptr(dir, bdst), &h_path, ++ dentry); ++ } ++ dput(h_path.dentry); ++ ++out: ++ return err; ++} ++ ++static int au_cpdown_dir(struct dentry *dentry, aufs_bindex_t bdst, ++ struct au_pin *pin, ++ struct dentry *h_parent, void *arg) ++{ ++ int err, rerr; ++ aufs_bindex_t bopq, btop; ++ struct path h_path; ++ struct dentry *parent; ++ struct inode *h_dir, *h_inode, *inode, *dir; ++ unsigned int *flags = arg; ++ ++ btop = au_dbtop(dentry); ++ /* dentry is di-locked */ ++ parent = dget_parent(dentry); ++ dir = d_inode(parent); ++ h_dir = d_inode(h_parent); ++ AuDebugOn(h_dir != au_h_iptr(dir, bdst)); ++ IMustLock(h_dir); ++ ++ err = au_lkup_neg(dentry, bdst, /*wh*/0); ++ if (unlikely(err < 0)) ++ goto out; ++ h_path.dentry = au_h_dptr(dentry, bdst); ++ h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst); ++ err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, 0755); ++ if (unlikely(err)) ++ goto out_put; ++ au_fset_cpdown(*flags, MADE_DIR); ++ ++ bopq = au_dbdiropq(dentry); ++ au_fclr_cpdown(*flags, WHED); ++ au_fclr_cpdown(*flags, DIROPQ); ++ if (au_dbwh(dentry) == bdst) ++ au_fset_cpdown(*flags, WHED); ++ if (!au_ftest_cpdown(*flags, PARENT_OPQ) && bopq <= bdst) ++ au_fset_cpdown(*flags, PARENT_OPQ); ++ h_inode = d_inode(h_path.dentry); ++ inode_lock_nested(h_inode, AuLsc_I_CHILD); ++ if (au_ftest_cpdown(*flags, WHED)) { ++ err = au_cpdown_dir_opq(dentry, bdst, flags); ++ if (unlikely(err)) { ++ inode_unlock(h_inode); ++ goto out_dir; ++ } ++ } ++ ++ err = au_cpdown_attr(&h_path, au_h_dptr(dentry, btop)); ++ inode_unlock(h_inode); ++ if (unlikely(err)) ++ goto out_opq; ++ ++ if (au_ftest_cpdown(*flags, WHED)) { ++ err = au_cpdown_dir_wh(dentry, h_parent, dir, bdst); ++ if (unlikely(err)) ++ goto out_opq; ++ } ++ ++ inode = d_inode(dentry); ++ if (au_ibbot(inode) < bdst) ++ au_set_ibbot(inode, bdst); ++ au_set_h_iptr(inode, bdst, au_igrab(h_inode), ++ au_hi_flags(inode, /*isdir*/1)); ++ au_fhsm_wrote(dentry->d_sb, bdst, /*force*/0); ++ goto out; /* success */ ++ ++ /* revert */ ++out_opq: ++ if (au_ftest_cpdown(*flags, DIROPQ)) { ++ inode_lock_nested(h_inode, AuLsc_I_CHILD); ++ rerr = au_diropq_remove(dentry, bdst); ++ inode_unlock(h_inode); ++ if (unlikely(rerr)) { ++ AuIOErr("failed removing diropq for %pd b%d (%d)\n", ++ dentry, bdst, rerr); ++ err = -EIO; ++ goto out; ++ } ++ } ++out_dir: ++ if (au_ftest_cpdown(*flags, MADE_DIR)) { ++ rerr = vfsub_sio_rmdir(au_h_iptr(dir, bdst), &h_path); ++ if (unlikely(rerr)) { ++ AuIOErr("failed removing %pd b%d (%d)\n", ++ dentry, bdst, rerr); ++ err = -EIO; ++ } ++ } ++out_put: ++ au_set_h_dptr(dentry, bdst, NULL); ++ if (au_dbbot(dentry) == bdst) ++ au_update_dbbot(dentry); ++out: ++ dput(parent); ++ return err; ++} ++ ++int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst) ++{ ++ int err; ++ unsigned int flags; ++ ++ flags = 0; ++ err = au_cp_dirs(dentry, bdst, au_cpdown_dir, &flags); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* policies for create */ ++ ++int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ int err, i, j, ndentry; ++ aufs_bindex_t bopq; ++ struct au_dcsub_pages dpages; ++ struct au_dpage *dpage; ++ struct dentry **dentries, *parent, *d; ++ ++ err = au_dpages_init(&dpages, GFP_NOFS); ++ if (unlikely(err)) ++ goto out; ++ parent = dget_parent(dentry); ++ err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/0); ++ if (unlikely(err)) ++ goto out_free; ++ ++ err = bindex; ++ for (i = 0; i < dpages.ndpage; i++) { ++ dpage = dpages.dpages + i; ++ dentries = dpage->dentries; ++ ndentry = dpage->ndentry; ++ for (j = 0; j < ndentry; j++) { ++ d = dentries[j]; ++ di_read_lock_parent2(d, !AuLock_IR); ++ bopq = au_dbdiropq(d); ++ di_read_unlock(d, !AuLock_IR); ++ if (bopq >= 0 && bopq < err) ++ err = bopq; ++ } ++ } ++ ++out_free: ++ dput(parent); ++ au_dpages_free(&dpages); ++out: ++ return err; ++} ++ ++static int au_wbr_bu(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ for (; bindex >= 0; bindex--) ++ if (!au_br_rdonly(au_sbr(sb, bindex))) ++ return bindex; ++ return -EROFS; ++} ++ ++/* top down parent */ ++static int au_wbr_create_tdp(struct dentry *dentry, ++ unsigned int flags __maybe_unused) ++{ ++ int err; ++ aufs_bindex_t btop, bindex; ++ struct super_block *sb; ++ struct dentry *parent, *h_parent; ++ ++ sb = dentry->d_sb; ++ btop = au_dbtop(dentry); ++ err = btop; ++ if (!au_br_rdonly(au_sbr(sb, btop))) ++ goto out; ++ ++ err = -EROFS; ++ parent = dget_parent(dentry); ++ for (bindex = au_dbtop(parent); bindex < btop; bindex++) { ++ h_parent = au_h_dptr(parent, bindex); ++ if (!h_parent || d_is_negative(h_parent)) ++ continue; ++ ++ if (!au_br_rdonly(au_sbr(sb, bindex))) { ++ err = bindex; ++ break; ++ } ++ } ++ dput(parent); ++ ++ /* bottom up here */ ++ if (unlikely(err < 0)) { ++ err = au_wbr_bu(sb, btop - 1); ++ if (err >= 0) ++ err = au_wbr_nonopq(dentry, err); ++ } ++ ++out: ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* an exception for the policy other than tdp */ ++static int au_wbr_create_exp(struct dentry *dentry) ++{ ++ int err; ++ aufs_bindex_t bwh, bdiropq; ++ struct dentry *parent; ++ ++ err = -1; ++ bwh = au_dbwh(dentry); ++ parent = dget_parent(dentry); ++ bdiropq = au_dbdiropq(parent); ++ if (bwh >= 0) { ++ if (bdiropq >= 0) ++ err = min(bdiropq, bwh); ++ else ++ err = bwh; ++ AuDbg("%d\n", err); ++ } else if (bdiropq >= 0) { ++ err = bdiropq; ++ AuDbg("%d\n", err); ++ } ++ dput(parent); ++ ++ if (err >= 0) ++ err = au_wbr_nonopq(dentry, err); ++ ++ if (err >= 0 && au_br_rdonly(au_sbr(dentry->d_sb, err))) ++ err = -1; ++ ++ AuDbg("%d\n", err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* round robin */ ++static int au_wbr_create_init_rr(struct super_block *sb) ++{ ++ int err; ++ ++ err = au_wbr_bu(sb, au_sbbot(sb)); ++ atomic_set(&au_sbi(sb)->si_wbr_rr_next, -err); /* less important */ ++ /* smp_mb(); */ ++ ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++static int au_wbr_create_rr(struct dentry *dentry, unsigned int flags) ++{ ++ int err, nbr; ++ unsigned int u; ++ aufs_bindex_t bindex, bbot; ++ struct super_block *sb; ++ atomic_t *next; ++ ++ err = au_wbr_create_exp(dentry); ++ if (err >= 0) ++ goto out; ++ ++ sb = dentry->d_sb; ++ next = &au_sbi(sb)->si_wbr_rr_next; ++ bbot = au_sbbot(sb); ++ nbr = bbot + 1; ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ if (!au_ftest_wbr(flags, DIR)) { ++ err = atomic_dec_return(next) + 1; ++ /* modulo for 0 is meaningless */ ++ if (unlikely(!err)) ++ err = atomic_dec_return(next) + 1; ++ } else ++ err = atomic_read(next); ++ AuDbg("%d\n", err); ++ u = err; ++ err = u % nbr; ++ AuDbg("%d\n", err); ++ if (!au_br_rdonly(au_sbr(sb, err))) ++ break; ++ err = -EROFS; ++ } ++ ++ if (err >= 0) ++ err = au_wbr_nonopq(dentry, err); ++ ++out: ++ AuDbg("%d\n", err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* most free space */ ++static void au_mfs(struct dentry *dentry, struct dentry *parent) ++{ ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_wbr_mfs *mfs; ++ struct dentry *h_parent; ++ aufs_bindex_t bindex, bbot; ++ int err; ++ unsigned long long b, bavail; ++ struct path h_path; ++ /* reduce the stack usage */ ++ struct kstatfs *st; ++ ++ st = kmalloc(sizeof(*st), GFP_NOFS); ++ if (unlikely(!st)) { ++ AuWarn1("failed updating mfs(%d), ignored\n", -ENOMEM); ++ return; ++ } ++ ++ bavail = 0; ++ sb = dentry->d_sb; ++ mfs = &au_sbi(sb)->si_wbr_mfs; ++ MtxMustLock(&mfs->mfs_lock); ++ mfs->mfs_bindex = -EROFS; ++ mfs->mfsrr_bytes = 0; ++ if (!parent) { ++ bindex = 0; ++ bbot = au_sbbot(sb); ++ } else { ++ bindex = au_dbtop(parent); ++ bbot = au_dbtaildir(parent); ++ } ++ ++ for (; bindex <= bbot; bindex++) { ++ if (parent) { ++ h_parent = au_h_dptr(parent, bindex); ++ if (!h_parent || d_is_negative(h_parent)) ++ continue; ++ } ++ br = au_sbr(sb, bindex); ++ if (au_br_rdonly(br)) ++ continue; ++ ++ /* sb->s_root for NFS is unreliable */ ++ h_path.mnt = au_br_mnt(br); ++ h_path.dentry = h_path.mnt->mnt_root; ++ err = vfs_statfs(&h_path, st); ++ if (unlikely(err)) { ++ AuWarn1("failed statfs, b%d, %d\n", bindex, err); ++ continue; ++ } ++ ++ /* when the available size is equal, select the lower one */ ++ BUILD_BUG_ON(sizeof(b) < sizeof(st->f_bavail) ++ || sizeof(b) < sizeof(st->f_bsize)); ++ b = st->f_bavail * st->f_bsize; ++ br->br_wbr->wbr_bytes = b; ++ if (b >= bavail) { ++ bavail = b; ++ mfs->mfs_bindex = bindex; ++ mfs->mfs_jiffy = jiffies; ++ } ++ } ++ ++ mfs->mfsrr_bytes = bavail; ++ AuDbg("b%d\n", mfs->mfs_bindex); ++ au_kfree_rcu(st); ++} ++ ++static int au_wbr_create_mfs(struct dentry *dentry, unsigned int flags) ++{ ++ int err; ++ struct dentry *parent; ++ struct super_block *sb; ++ struct au_wbr_mfs *mfs; ++ ++ err = au_wbr_create_exp(dentry); ++ if (err >= 0) ++ goto out; ++ ++ sb = dentry->d_sb; ++ parent = NULL; ++ if (au_ftest_wbr(flags, PARENT)) ++ parent = dget_parent(dentry); ++ mfs = &au_sbi(sb)->si_wbr_mfs; ++ mutex_lock(&mfs->mfs_lock); ++ if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) ++ || mfs->mfs_bindex < 0 ++ || au_br_rdonly(au_sbr(sb, mfs->mfs_bindex))) ++ au_mfs(dentry, parent); ++ mutex_unlock(&mfs->mfs_lock); ++ err = mfs->mfs_bindex; ++ dput(parent); ++ ++ if (err >= 0) ++ err = au_wbr_nonopq(dentry, err); ++ ++out: ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++static int au_wbr_create_init_mfs(struct super_block *sb) ++{ ++ struct au_wbr_mfs *mfs; ++ ++ mfs = &au_sbi(sb)->si_wbr_mfs; ++ mutex_init(&mfs->mfs_lock); ++ mfs->mfs_jiffy = 0; ++ mfs->mfs_bindex = -EROFS; ++ ++ return 0; ++} ++ ++static int au_wbr_create_fin_mfs(struct super_block *sb __maybe_unused) ++{ ++ mutex_destroy(&au_sbi(sb)->si_wbr_mfs.mfs_lock); ++ return 0; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* top down regardless parent, and then mfs */ ++static int au_wbr_create_tdmfs(struct dentry *dentry, ++ unsigned int flags __maybe_unused) ++{ ++ int err; ++ aufs_bindex_t bwh, btail, bindex, bfound, bmfs; ++ unsigned long long watermark; ++ struct super_block *sb; ++ struct au_wbr_mfs *mfs; ++ struct au_branch *br; ++ struct dentry *parent; ++ ++ sb = dentry->d_sb; ++ mfs = &au_sbi(sb)->si_wbr_mfs; ++ mutex_lock(&mfs->mfs_lock); ++ if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) ++ || mfs->mfs_bindex < 0) ++ au_mfs(dentry, /*parent*/NULL); ++ watermark = mfs->mfsrr_watermark; ++ bmfs = mfs->mfs_bindex; ++ mutex_unlock(&mfs->mfs_lock); ++ ++ /* another style of au_wbr_create_exp() */ ++ bwh = au_dbwh(dentry); ++ parent = dget_parent(dentry); ++ btail = au_dbtaildir(parent); ++ if (bwh >= 0 && bwh < btail) ++ btail = bwh; ++ ++ err = au_wbr_nonopq(dentry, btail); ++ if (unlikely(err < 0)) ++ goto out; ++ btail = err; ++ bfound = -1; ++ for (bindex = 0; bindex <= btail; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_rdonly(br)) ++ continue; ++ if (br->br_wbr->wbr_bytes > watermark) { ++ bfound = bindex; ++ break; ++ } ++ } ++ err = bfound; ++ if (err < 0) ++ err = bmfs; ++ ++out: ++ dput(parent); ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* most free space and then round robin */ ++static int au_wbr_create_mfsrr(struct dentry *dentry, unsigned int flags) ++{ ++ int err; ++ struct au_wbr_mfs *mfs; ++ ++ err = au_wbr_create_mfs(dentry, flags); ++ if (err >= 0) { ++ mfs = &au_sbi(dentry->d_sb)->si_wbr_mfs; ++ mutex_lock(&mfs->mfs_lock); ++ if (mfs->mfsrr_bytes < mfs->mfsrr_watermark) ++ err = au_wbr_create_rr(dentry, flags); ++ mutex_unlock(&mfs->mfs_lock); ++ } ++ ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++static int au_wbr_create_init_mfsrr(struct super_block *sb) ++{ ++ int err; ++ ++ au_wbr_create_init_mfs(sb); /* ignore */ ++ err = au_wbr_create_init_rr(sb); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* top down parent and most free space */ ++static int au_wbr_create_pmfs(struct dentry *dentry, unsigned int flags) ++{ ++ int err, e2; ++ unsigned long long b; ++ aufs_bindex_t bindex, btop, bbot; ++ struct super_block *sb; ++ struct dentry *parent, *h_parent; ++ struct au_branch *br; ++ ++ err = au_wbr_create_tdp(dentry, flags); ++ if (unlikely(err < 0)) ++ goto out; ++ parent = dget_parent(dentry); ++ btop = au_dbtop(parent); ++ bbot = au_dbtaildir(parent); ++ if (btop == bbot) ++ goto out_parent; /* success */ ++ ++ e2 = au_wbr_create_mfs(dentry, flags); ++ if (e2 < 0) ++ goto out_parent; /* success */ ++ ++ /* when the available size is equal, select upper one */ ++ sb = dentry->d_sb; ++ br = au_sbr(sb, err); ++ b = br->br_wbr->wbr_bytes; ++ AuDbg("b%d, %llu\n", err, b); ++ ++ for (bindex = btop; bindex <= bbot; bindex++) { ++ h_parent = au_h_dptr(parent, bindex); ++ if (!h_parent || d_is_negative(h_parent)) ++ continue; ++ ++ br = au_sbr(sb, bindex); ++ if (!au_br_rdonly(br) && br->br_wbr->wbr_bytes > b) { ++ b = br->br_wbr->wbr_bytes; ++ err = bindex; ++ AuDbg("b%d, %llu\n", err, b); ++ } ++ } ++ ++ if (err >= 0) ++ err = au_wbr_nonopq(dentry, err); ++ ++out_parent: ++ dput(parent); ++out: ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * - top down parent ++ * - most free space with parent ++ * - most free space round-robin regardless parent ++ */ ++static int au_wbr_create_pmfsrr(struct dentry *dentry, unsigned int flags) ++{ ++ int err; ++ unsigned long long watermark; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_wbr_mfs *mfs; ++ ++ err = au_wbr_create_pmfs(dentry, flags | AuWbr_PARENT); ++ if (unlikely(err < 0)) ++ goto out; ++ ++ sb = dentry->d_sb; ++ br = au_sbr(sb, err); ++ mfs = &au_sbi(sb)->si_wbr_mfs; ++ mutex_lock(&mfs->mfs_lock); ++ watermark = mfs->mfsrr_watermark; ++ mutex_unlock(&mfs->mfs_lock); ++ if (br->br_wbr->wbr_bytes < watermark) ++ /* regardless the parent dir */ ++ err = au_wbr_create_mfsrr(dentry, flags); ++ ++out: ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* policies for copyup */ ++ ++/* top down parent */ ++static int au_wbr_copyup_tdp(struct dentry *dentry) ++{ ++ return au_wbr_create_tdp(dentry, /*flags, anything is ok*/0); ++} ++ ++/* bottom up parent */ ++static int au_wbr_copyup_bup(struct dentry *dentry) ++{ ++ int err; ++ aufs_bindex_t bindex, btop; ++ struct dentry *parent, *h_parent; ++ struct super_block *sb; ++ ++ err = -EROFS; ++ sb = dentry->d_sb; ++ parent = dget_parent(dentry); ++ btop = au_dbtop(parent); ++ for (bindex = au_dbtop(dentry); bindex >= btop; bindex--) { ++ h_parent = au_h_dptr(parent, bindex); ++ if (!h_parent || d_is_negative(h_parent)) ++ continue; ++ ++ if (!au_br_rdonly(au_sbr(sb, bindex))) { ++ err = bindex; ++ break; ++ } ++ } ++ dput(parent); ++ ++ /* bottom up here */ ++ if (unlikely(err < 0)) ++ err = au_wbr_bu(sb, btop - 1); ++ ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++/* bottom up */ ++int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t btop) ++{ ++ int err; ++ ++ err = au_wbr_bu(dentry->d_sb, btop); ++ AuDbg("b%d\n", err); ++ if (err > btop) ++ err = au_wbr_nonopq(dentry, err); ++ ++ AuDbg("b%d\n", err); ++ return err; ++} ++ ++static int au_wbr_copyup_bu(struct dentry *dentry) ++{ ++ int err; ++ aufs_bindex_t btop; ++ ++ btop = au_dbtop(dentry); ++ err = au_wbr_do_copyup_bu(dentry, btop); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { ++ [AuWbrCopyup_TDP] = { ++ .copyup = au_wbr_copyup_tdp ++ }, ++ [AuWbrCopyup_BUP] = { ++ .copyup = au_wbr_copyup_bup ++ }, ++ [AuWbrCopyup_BU] = { ++ .copyup = au_wbr_copyup_bu ++ } ++}; ++ ++struct au_wbr_create_operations au_wbr_create_ops[] = { ++ [AuWbrCreate_TDP] = { ++ .create = au_wbr_create_tdp ++ }, ++ [AuWbrCreate_RR] = { ++ .create = au_wbr_create_rr, ++ .init = au_wbr_create_init_rr ++ }, ++ [AuWbrCreate_MFS] = { ++ .create = au_wbr_create_mfs, ++ .init = au_wbr_create_init_mfs, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_MFSV] = { ++ .create = au_wbr_create_mfs, ++ .init = au_wbr_create_init_mfs, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_MFSRR] = { ++ .create = au_wbr_create_mfsrr, ++ .init = au_wbr_create_init_mfsrr, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_MFSRRV] = { ++ .create = au_wbr_create_mfsrr, ++ .init = au_wbr_create_init_mfsrr, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_TDMFS] = { ++ .create = au_wbr_create_tdmfs, ++ .init = au_wbr_create_init_mfs, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_TDMFSV] = { ++ .create = au_wbr_create_tdmfs, ++ .init = au_wbr_create_init_mfs, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_PMFS] = { ++ .create = au_wbr_create_pmfs, ++ .init = au_wbr_create_init_mfs, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_PMFSV] = { ++ .create = au_wbr_create_pmfs, ++ .init = au_wbr_create_init_mfs, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_PMFSRR] = { ++ .create = au_wbr_create_pmfsrr, ++ .init = au_wbr_create_init_mfsrr, ++ .fin = au_wbr_create_fin_mfs ++ }, ++ [AuWbrCreate_PMFSRRV] = { ++ .create = au_wbr_create_pmfsrr, ++ .init = au_wbr_create_init_mfsrr, ++ .fin = au_wbr_create_fin_mfs ++ } ++}; +diff -Naur null/fs/aufs/whout.c linux-5.15.36/fs/aufs/whout.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/whout.c 2022-05-10 16:51:39.878744219 +0300 +@@ -0,0 +1,1072 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * whiteout for logical deletion and opaque directory ++ */ ++ ++#include "aufs.h" ++ ++#define WH_MASK 0444 ++ ++/* ++ * If a directory contains this file, then it is opaque. We start with the ++ * .wh. flag so that it is blocked by lookup. ++ */ ++static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ, ++ sizeof(AUFS_WH_DIROPQ) - 1); ++ ++/* ++ * generate whiteout name, which is NOT terminated by NULL. ++ * @name: original d_name.name ++ * @len: original d_name.len ++ * @wh: whiteout qstr ++ * returns zero when succeeds, otherwise error. ++ * succeeded value as wh->name should be freed by kfree(). ++ */ ++int au_wh_name_alloc(struct qstr *wh, const struct qstr *name) ++{ ++ char *p; ++ ++ if (unlikely(name->len > PATH_MAX - AUFS_WH_PFX_LEN)) ++ return -ENAMETOOLONG; ++ ++ wh->len = name->len + AUFS_WH_PFX_LEN; ++ p = kmalloc(wh->len, GFP_NOFS); ++ wh->name = p; ++ if (p) { ++ memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); ++ memcpy(p + AUFS_WH_PFX_LEN, name->name, name->len); ++ /* smp_mb(); */ ++ return 0; ++ } ++ return -ENOMEM; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * test if the @wh_name exists under @h_ppath. ++ * @try_sio specifies the necessary of super-io. ++ */ ++int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath, ++ struct qstr *wh_name, int try_sio) ++{ ++ int err; ++ struct dentry *wh_dentry; ++ ++ if (!try_sio) ++ wh_dentry = vfsub_lkup_one(wh_name, h_ppath); ++ else ++ wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_ppath); ++ err = PTR_ERR(wh_dentry); ++ if (IS_ERR(wh_dentry)) { ++ if (err == -ENAMETOOLONG) ++ err = 0; ++ goto out; ++ } ++ ++ err = 0; ++ if (d_is_negative(wh_dentry)) ++ goto out_wh; /* success */ ++ ++ err = 1; ++ if (d_is_reg(wh_dentry)) ++ goto out_wh; /* success */ ++ ++ err = -EIO; ++ AuIOErr("%pd Invalid whiteout entry type 0%o.\n", ++ wh_dentry, d_inode(wh_dentry)->i_mode); ++ ++out_wh: ++ dput(wh_dentry); ++out: ++ return err; ++} ++ ++/* ++ * test if the @h_path->dentry sets opaque or not. ++ */ ++int au_diropq_test(struct user_namespace *h_userns, struct path *h_path) ++{ ++ int err; ++ struct inode *h_dir; ++ ++ h_dir = d_inode(h_path->dentry); ++ err = au_wh_test(h_userns, h_path, &diropq_name, ++ au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC)); ++ return err; ++} ++ ++/* ++ * returns a negative dentry whose name is unique and temporary. ++ */ ++struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, ++ struct qstr *prefix) ++{ ++ struct dentry *dentry; ++ int i; ++ char defname[NAME_MAX - AUFS_MAX_NAMELEN + DNAME_INLINE_LEN + 1], ++ *name, *p; ++ /* strict atomic_t is unnecessary here */ ++ static unsigned short cnt; ++ struct qstr qs; ++ struct path h_ppath; ++ struct user_namespace *h_userns; ++ ++ BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); ++ ++ name = defname; ++ qs.len = sizeof(defname) - DNAME_INLINE_LEN + prefix->len - 1; ++ if (unlikely(prefix->len > DNAME_INLINE_LEN)) { ++ dentry = ERR_PTR(-ENAMETOOLONG); ++ if (unlikely(qs.len > NAME_MAX)) ++ goto out; ++ dentry = ERR_PTR(-ENOMEM); ++ name = kmalloc(qs.len + 1, GFP_NOFS); ++ if (unlikely(!name)) ++ goto out; ++ } ++ ++ /* doubly whiteout-ed */ ++ memcpy(name, AUFS_WH_PFX AUFS_WH_PFX, AUFS_WH_PFX_LEN * 2); ++ p = name + AUFS_WH_PFX_LEN * 2; ++ memcpy(p, prefix->name, prefix->len); ++ p += prefix->len; ++ *p++ = '.'; ++ AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN); ++ ++ h_ppath.dentry = h_parent; ++ h_ppath.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); ++ qs.name = name; ++ for (i = 0; i < 3; i++) { ++ sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); ++ dentry = au_sio_lkup_one(h_userns, &qs, &h_ppath); ++ if (IS_ERR(dentry) || d_is_negative(dentry)) ++ goto out_name; ++ dput(dentry); ++ } ++ /* pr_warn("could not get random name\n"); */ ++ dentry = ERR_PTR(-EEXIST); ++ AuDbg("%.*s\n", AuLNPair(&qs)); ++ BUG(); ++ ++out_name: ++ if (name != defname) ++ au_kfree_try_rcu(name); ++out: ++ AuTraceErrPtr(dentry); ++ return dentry; ++} ++ ++/* ++ * rename the @h_dentry on @br to the whiteouted temporary name. ++ */ ++int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br) ++{ ++ int err; ++ struct path h_path = { ++ .mnt = au_br_mnt(br) ++ }; ++ struct inode *h_dir, *delegated; ++ struct dentry *h_parent; ++ ++ h_parent = h_dentry->d_parent; /* dir inode is locked */ ++ h_dir = d_inode(h_parent); ++ IMustLock(h_dir); ++ ++ h_path.dentry = au_whtmp_lkup(h_parent, br, &h_dentry->d_name); ++ err = PTR_ERR(h_path.dentry); ++ if (IS_ERR(h_path.dentry)) ++ goto out; ++ ++ /* under the same dir, no need to lock_rename() */ ++ delegated = NULL; ++ err = vfsub_rename(h_dir, h_dentry, h_dir, &h_path, &delegated, ++ /*flags*/0); ++ AuTraceErr(err); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal rename\n"); ++ iput(delegated); ++ } ++ dput(h_path.dentry); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * functions for removing a whiteout ++ */ ++ ++static int do_unlink_wh(struct inode *h_dir, struct path *h_path) ++{ ++ int err, force; ++ struct inode *delegated; ++ ++ /* ++ * forces superio when the dir has a sticky bit. ++ * this may be a violation of unix fs semantics. ++ */ ++ force = (h_dir->i_mode & S_ISVTX) ++ && !uid_eq(current_fsuid(), d_inode(h_path->dentry)->i_uid); ++ delegated = NULL; ++ err = vfsub_unlink(h_dir, h_path, &delegated, force); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ return err; ++} ++ ++int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, ++ struct dentry *dentry) ++{ ++ int err; ++ ++ err = do_unlink_wh(h_dir, h_path); ++ if (!err && dentry) ++ au_set_dbwh(dentry, -1); ++ ++ return err; ++} ++ ++static int unlink_wh_name(struct path *h_ppath, struct qstr *wh) ++{ ++ int err; ++ struct path h_path; ++ ++ err = 0; ++ h_path.dentry = vfsub_lkup_one(wh, h_ppath); ++ if (IS_ERR(h_path.dentry)) ++ err = PTR_ERR(h_path.dentry); ++ else { ++ if (d_is_reg(h_path.dentry)) { ++ h_path.mnt = h_ppath->mnt; ++ err = do_unlink_wh(d_inode(h_ppath->dentry), &h_path); ++ } ++ dput(h_path.dentry); ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * initialize/clean whiteout for a branch ++ */ ++ ++static void au_wh_clean(struct inode *h_dir, struct path *whpath, ++ const int isdir) ++{ ++ int err; ++ struct inode *delegated; ++ ++ if (d_is_negative(whpath->dentry)) ++ return; ++ ++ if (isdir) ++ err = vfsub_rmdir(h_dir, whpath); ++ else { ++ delegated = NULL; ++ err = vfsub_unlink(h_dir, whpath, &delegated, /*force*/0); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ } ++ if (unlikely(err)) ++ pr_warn("failed removing %pd (%d), ignored.\n", ++ whpath->dentry, err); ++} ++ ++static int test_linkable(struct dentry *h_root) ++{ ++ struct inode *h_dir = d_inode(h_root); ++ ++ if (h_dir->i_op->link) ++ return 0; ++ ++ pr_err("%pd (%s) doesn't support link(2), use noplink and rw+nolwh\n", ++ h_root, au_sbtype(h_root->d_sb)); ++ return -ENOSYS; /* the branch doesn't have its ->link() */ ++} ++ ++/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ ++static int au_whdir(struct inode *h_dir, struct path *path) ++{ ++ int err; ++ ++ err = -EEXIST; ++ if (d_is_negative(path->dentry)) { ++ int mode = 0700; ++ ++ if (au_test_nfs(path->dentry->d_sb)) ++ mode |= 0111; ++ err = vfsub_mkdir(h_dir, path, mode); ++ } else if (d_is_dir(path->dentry)) ++ err = 0; ++ else ++ pr_err("unknown %pd exists\n", path->dentry); ++ ++ return err; ++} ++ ++struct au_wh_base { ++ const struct qstr *name; ++ struct dentry *dentry; ++}; ++ ++static void au_wh_init_ro(struct inode *h_dir, struct au_wh_base base[], ++ struct path *h_path) ++{ ++ h_path->dentry = base[AuBrWh_BASE].dentry; ++ au_wh_clean(h_dir, h_path, /*isdir*/0); ++ h_path->dentry = base[AuBrWh_PLINK].dentry; ++ au_wh_clean(h_dir, h_path, /*isdir*/1); ++ h_path->dentry = base[AuBrWh_ORPH].dentry; ++ au_wh_clean(h_dir, h_path, /*isdir*/1); ++} ++ ++/* ++ * returns tri-state, ++ * minus: error, caller should print the message ++ * zero: success ++ * plus: error, caller should NOT print the message ++ */ ++static int au_wh_init_rw_nolink(struct dentry *h_root, struct au_wbr *wbr, ++ int do_plink, struct au_wh_base base[], ++ struct path *h_path) ++{ ++ int err; ++ struct inode *h_dir; ++ ++ h_dir = d_inode(h_root); ++ h_path->dentry = base[AuBrWh_BASE].dentry; ++ au_wh_clean(h_dir, h_path, /*isdir*/0); ++ h_path->dentry = base[AuBrWh_PLINK].dentry; ++ if (do_plink) { ++ err = test_linkable(h_root); ++ if (unlikely(err)) { ++ err = 1; ++ goto out; ++ } ++ ++ err = au_whdir(h_dir, h_path); ++ if (unlikely(err)) ++ goto out; ++ wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); ++ } else ++ au_wh_clean(h_dir, h_path, /*isdir*/1); ++ h_path->dentry = base[AuBrWh_ORPH].dentry; ++ err = au_whdir(h_dir, h_path); ++ if (unlikely(err)) ++ goto out; ++ wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); ++ ++out: ++ return err; ++} ++ ++/* ++ * for the moment, aufs supports the branch filesystem which does not support ++ * link(2). testing on FAT which does not support i_op->setattr() fully either, ++ * copyup failed. finally, such filesystem will not be used as the writable ++ * branch. ++ * ++ * returns tri-state, see above. ++ */ ++static int au_wh_init_rw(struct dentry *h_root, struct au_wbr *wbr, ++ int do_plink, struct au_wh_base base[], ++ struct path *h_path) ++{ ++ int err; ++ struct inode *h_dir; ++ ++ WbrWhMustWriteLock(wbr); ++ ++ err = test_linkable(h_root); ++ if (unlikely(err)) { ++ err = 1; ++ goto out; ++ } ++ ++ /* ++ * todo: should this create be done in /sbin/mount.aufs helper? ++ */ ++ err = -EEXIST; ++ h_dir = d_inode(h_root); ++ if (d_is_negative(base[AuBrWh_BASE].dentry)) { ++ h_path->dentry = base[AuBrWh_BASE].dentry; ++ err = vfsub_create(h_dir, h_path, WH_MASK, /*want_excl*/true); ++ } else if (d_is_reg(base[AuBrWh_BASE].dentry)) ++ err = 0; ++ else ++ pr_err("unknown %pd2 exists\n", base[AuBrWh_BASE].dentry); ++ if (unlikely(err)) ++ goto out; ++ ++ h_path->dentry = base[AuBrWh_PLINK].dentry; ++ if (do_plink) { ++ err = au_whdir(h_dir, h_path); ++ if (unlikely(err)) ++ goto out; ++ wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); ++ } else ++ au_wh_clean(h_dir, h_path, /*isdir*/1); ++ wbr->wbr_whbase = dget(base[AuBrWh_BASE].dentry); ++ ++ h_path->dentry = base[AuBrWh_ORPH].dentry; ++ err = au_whdir(h_dir, h_path); ++ if (unlikely(err)) ++ goto out; ++ wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); ++ ++out: ++ return err; ++} ++ ++/* ++ * initialize the whiteout base file/dir for @br. ++ */ ++int au_wh_init(struct au_branch *br, struct super_block *sb) ++{ ++ int err, i; ++ const unsigned char do_plink ++ = !!au_opt_test(au_mntflags(sb), PLINK); ++ struct inode *h_dir; ++ struct path path = br->br_path; ++ struct dentry *h_root = path.dentry; ++ struct au_wbr *wbr = br->br_wbr; ++ static const struct qstr base_name[] = { ++ [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME, ++ sizeof(AUFS_BASE_NAME) - 1), ++ [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME, ++ sizeof(AUFS_PLINKDIR_NAME) - 1), ++ [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME, ++ sizeof(AUFS_ORPHDIR_NAME) - 1) ++ }; ++ struct au_wh_base base[] = { ++ [AuBrWh_BASE] = { ++ .name = base_name + AuBrWh_BASE, ++ .dentry = NULL ++ }, ++ [AuBrWh_PLINK] = { ++ .name = base_name + AuBrWh_PLINK, ++ .dentry = NULL ++ }, ++ [AuBrWh_ORPH] = { ++ .name = base_name + AuBrWh_ORPH, ++ .dentry = NULL ++ } ++ }; ++ ++ if (wbr) ++ WbrWhMustWriteLock(wbr); ++ ++ for (i = 0; i < AuBrWh_Last; i++) { ++ /* doubly whiteouted */ ++ struct dentry *d; ++ ++ d = au_wh_lkup(h_root, (void *)base[i].name, br); ++ err = PTR_ERR(d); ++ if (IS_ERR(d)) ++ goto out; ++ ++ base[i].dentry = d; ++ AuDebugOn(wbr ++ && wbr->wbr_wh[i] ++ && wbr->wbr_wh[i] != base[i].dentry); ++ } ++ ++ if (wbr) ++ for (i = 0; i < AuBrWh_Last; i++) { ++ dput(wbr->wbr_wh[i]); ++ wbr->wbr_wh[i] = NULL; ++ } ++ ++ err = 0; ++ if (!au_br_writable(br->br_perm)) { ++ h_dir = d_inode(h_root); ++ au_wh_init_ro(h_dir, base, &path); ++ } else if (!au_br_wh_linkable(br->br_perm)) { ++ err = au_wh_init_rw_nolink(h_root, wbr, do_plink, base, &path); ++ if (err > 0) ++ goto out; ++ else if (err) ++ goto out_err; ++ } else { ++ err = au_wh_init_rw(h_root, wbr, do_plink, base, &path); ++ if (err > 0) ++ goto out; ++ else if (err) ++ goto out_err; ++ } ++ goto out; /* success */ ++ ++out_err: ++ pr_err("an error(%d) on the writable branch %pd(%s)\n", ++ err, h_root, au_sbtype(h_root->d_sb)); ++out: ++ for (i = 0; i < AuBrWh_Last; i++) ++ dput(base[i].dentry); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * whiteouts are all hard-linked usually. ++ * when its link count reaches a ceiling, we create a new whiteout base ++ * asynchronously. ++ */ ++ ++struct reinit_br_wh { ++ struct super_block *sb; ++ struct au_branch *br; ++}; ++ ++static void reinit_br_wh(void *arg) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct path h_path; ++ struct reinit_br_wh *a = arg; ++ struct au_wbr *wbr; ++ struct inode *dir, *delegated; ++ struct dentry *h_root; ++ struct au_hinode *hdir; ++ ++ err = 0; ++ wbr = a->br->br_wbr; ++ /* big aufs lock */ ++ si_noflush_write_lock(a->sb); ++ if (!au_br_writable(a->br->br_perm)) ++ goto out; ++ bindex = au_br_index(a->sb, a->br->br_id); ++ if (unlikely(bindex < 0)) ++ goto out; ++ ++ di_read_lock_parent(a->sb->s_root, AuLock_IR); ++ dir = d_inode(a->sb->s_root); ++ hdir = au_hi(dir, bindex); ++ h_root = au_h_dptr(a->sb->s_root, bindex); ++ AuDebugOn(h_root != au_br_dentry(a->br)); ++ ++ au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); ++ wbr_wh_write_lock(wbr); ++ err = au_h_verify(wbr->wbr_whbase, au_opt_udba(a->sb), hdir->hi_inode, ++ h_root, a->br); ++ if (!err) { ++ h_path.dentry = wbr->wbr_whbase; ++ h_path.mnt = au_br_mnt(a->br); ++ delegated = NULL; ++ err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, ++ /*force*/0); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ } else { ++ pr_warn("%pd is moved, ignored\n", wbr->wbr_whbase); ++ err = 0; ++ } ++ dput(wbr->wbr_whbase); ++ wbr->wbr_whbase = NULL; ++ if (!err) ++ err = au_wh_init(a->br, a->sb); ++ wbr_wh_write_unlock(wbr); ++ au_hn_inode_unlock(hdir); ++ di_read_unlock(a->sb->s_root, AuLock_IR); ++ if (!err) ++ au_fhsm_wrote(a->sb, bindex, /*force*/0); ++ ++out: ++ if (wbr) ++ atomic_dec(&wbr->wbr_wh_running); ++ au_lcnt_dec(&a->br->br_count); ++ si_write_unlock(a->sb); ++ au_nwt_done(&au_sbi(a->sb)->si_nowait); ++ au_kfree_rcu(a); ++ if (unlikely(err)) ++ AuIOErr("err %d\n", err); ++} ++ ++static void kick_reinit_br_wh(struct super_block *sb, struct au_branch *br) ++{ ++ int do_dec, wkq_err; ++ struct reinit_br_wh *arg; ++ ++ do_dec = 1; ++ if (atomic_inc_return(&br->br_wbr->wbr_wh_running) != 1) ++ goto out; ++ ++ /* ignore ENOMEM */ ++ arg = kmalloc(sizeof(*arg), GFP_NOFS); ++ if (arg) { ++ /* ++ * dec(wh_running), kfree(arg) and dec(br_count) ++ * in reinit function ++ */ ++ arg->sb = sb; ++ arg->br = br; ++ au_lcnt_inc(&br->br_count); ++ wkq_err = au_wkq_nowait(reinit_br_wh, arg, sb, /*flags*/0); ++ if (unlikely(wkq_err)) { ++ atomic_dec(&br->br_wbr->wbr_wh_running); ++ au_lcnt_dec(&br->br_count); ++ au_kfree_rcu(arg); ++ } ++ do_dec = 0; ++ } ++ ++out: ++ if (do_dec) ++ atomic_dec(&br->br_wbr->wbr_wh_running); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * create the whiteout @wh. ++ */ ++static int link_or_create_wh(struct super_block *sb, aufs_bindex_t bindex, ++ struct dentry *wh) ++{ ++ int err; ++ struct path h_path = { ++ .dentry = wh ++ }; ++ struct au_branch *br; ++ struct au_wbr *wbr; ++ struct dentry *h_parent; ++ struct inode *h_dir, *delegated; ++ ++ h_parent = wh->d_parent; /* dir inode is locked */ ++ h_dir = d_inode(h_parent); ++ IMustLock(h_dir); ++ ++ br = au_sbr(sb, bindex); ++ h_path.mnt = au_br_mnt(br); ++ wbr = br->br_wbr; ++ wbr_wh_read_lock(wbr); ++ if (wbr->wbr_whbase) { ++ delegated = NULL; ++ err = vfsub_link(wbr->wbr_whbase, h_dir, &h_path, &delegated); ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal link\n"); ++ iput(delegated); ++ } ++ if (!err || err != -EMLINK) ++ goto out; ++ ++ /* link count full. re-initialize br_whbase. */ ++ kick_reinit_br_wh(sb, br); ++ } ++ ++ /* return this error in this context */ ++ err = vfsub_create(h_dir, &h_path, WH_MASK, /*want_excl*/true); ++ if (!err) ++ au_fhsm_wrote(sb, bindex, /*force*/0); ++ ++out: ++ wbr_wh_read_unlock(wbr); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * create or remove the diropq. ++ */ ++static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex, ++ unsigned int flags) ++{ ++ struct dentry *opq_dentry; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct path h_path; ++ int err; ++ ++ sb = dentry->d_sb; ++ br = au_sbr(sb, bindex); ++ h_path.dentry = au_h_dptr(dentry, bindex); ++ h_path.mnt = au_br_mnt(br); ++ opq_dentry = vfsub_lkup_one(&diropq_name, &h_path); ++ if (IS_ERR(opq_dentry)) ++ goto out; ++ ++ if (au_ftest_diropq(flags, CREATE)) { ++ err = link_or_create_wh(sb, bindex, opq_dentry); ++ if (!err) { ++ au_set_dbdiropq(dentry, bindex); ++ goto out; /* success */ ++ } ++ } else { ++ h_path.dentry = opq_dentry; ++ err = do_unlink_wh(au_h_iptr(d_inode(dentry), bindex), &h_path); ++ if (!err) ++ au_set_dbdiropq(dentry, -1); ++ } ++ dput(opq_dentry); ++ opq_dentry = ERR_PTR(err); ++ ++out: ++ return opq_dentry; ++} ++ ++struct do_diropq_args { ++ struct dentry **errp; ++ struct dentry *dentry; ++ aufs_bindex_t bindex; ++ unsigned int flags; ++}; ++ ++static void call_do_diropq(void *args) ++{ ++ struct do_diropq_args *a = args; ++ *a->errp = do_diropq(a->dentry, a->bindex, a->flags); ++} ++ ++struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, ++ unsigned int flags) ++{ ++ struct dentry *diropq, *h_dentry; ++ struct user_namespace *h_userns; ++ ++ h_userns = au_sbr_userns(dentry->d_sb, bindex); ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (!au_test_h_perm_sio(h_userns, d_inode(h_dentry), ++ MAY_EXEC | MAY_WRITE)) ++ diropq = do_diropq(dentry, bindex, flags); ++ else { ++ int wkq_err; ++ struct do_diropq_args args = { ++ .errp = &diropq, ++ .dentry = dentry, ++ .bindex = bindex, ++ .flags = flags ++ }; ++ ++ wkq_err = au_wkq_wait(call_do_diropq, &args); ++ if (unlikely(wkq_err)) ++ diropq = ERR_PTR(wkq_err); ++ } ++ ++ return diropq; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * lookup whiteout dentry. ++ * @h_parent: lower parent dentry which must exist and be locked ++ * @base_name: name of dentry which will be whiteouted ++ * returns dentry for whiteout. ++ */ ++struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, ++ struct au_branch *br) ++{ ++ int err; ++ struct qstr wh_name; ++ struct dentry *wh_dentry; ++ struct path h_path; ++ ++ err = au_wh_name_alloc(&wh_name, base_name); ++ wh_dentry = ERR_PTR(err); ++ if (!err) { ++ h_path.dentry = h_parent; ++ h_path.mnt = au_br_mnt(br); ++ wh_dentry = vfsub_lkup_one(&wh_name, &h_path); ++ au_kfree_try_rcu(wh_name.name); ++ } ++ return wh_dentry; ++} ++ ++/* ++ * link/create a whiteout for @dentry on @bindex. ++ */ ++struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent) ++{ ++ struct dentry *wh_dentry; ++ struct super_block *sb; ++ int err; ++ ++ sb = dentry->d_sb; ++ wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, au_sbr(sb, bindex)); ++ if (!IS_ERR(wh_dentry) && d_is_negative(wh_dentry)) { ++ err = link_or_create_wh(sb, bindex, wh_dentry); ++ if (!err) { ++ au_set_dbwh(dentry, bindex); ++ au_fhsm_wrote(sb, bindex, /*force*/0); ++ } else { ++ dput(wh_dentry); ++ wh_dentry = ERR_PTR(err); ++ } ++ } ++ ++ return wh_dentry; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* Delete all whiteouts in this directory on branch bindex. */ ++static int del_wh_children(struct path *h_path, struct au_nhash *whlist, ++ aufs_bindex_t bindex) ++{ ++ int err; ++ unsigned long ul, n; ++ struct qstr wh_name; ++ char *p; ++ struct hlist_head *head; ++ struct au_vdir_wh *pos; ++ struct au_vdir_destr *str; ++ ++ err = -ENOMEM; ++ p = (void *)__get_free_page(GFP_NOFS); ++ wh_name.name = p; ++ if (unlikely(!wh_name.name)) ++ goto out; ++ ++ err = 0; ++ memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); ++ p += AUFS_WH_PFX_LEN; ++ n = whlist->nh_num; ++ head = whlist->nh_head; ++ for (ul = 0; !err && ul < n; ul++, head++) { ++ hlist_for_each_entry(pos, head, wh_hash) { ++ if (pos->wh_bindex != bindex) ++ continue; ++ ++ str = &pos->wh_str; ++ if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) { ++ memcpy(p, str->name, str->len); ++ wh_name.len = AUFS_WH_PFX_LEN + str->len; ++ err = unlink_wh_name(h_path, &wh_name); ++ if (!err) ++ continue; ++ break; ++ } ++ AuIOErr("whiteout name too long %.*s\n", ++ str->len, str->name); ++ err = -EIO; ++ break; ++ } ++ } ++ free_page((unsigned long)wh_name.name); ++ ++out: ++ return err; ++} ++ ++struct del_wh_children_args { ++ int *errp; ++ struct path *h_path; ++ struct au_nhash *whlist; ++ aufs_bindex_t bindex; ++}; ++ ++static void call_del_wh_children(void *args) ++{ ++ struct del_wh_children_args *a = args; ++ *a->errp = del_wh_children(a->h_path, a->whlist, a->bindex); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp) ++{ ++ struct au_whtmp_rmdir *whtmp; ++ int err; ++ unsigned int rdhash; ++ ++ SiMustAnyLock(sb); ++ ++ whtmp = kzalloc(sizeof(*whtmp), gfp); ++ if (unlikely(!whtmp)) { ++ whtmp = ERR_PTR(-ENOMEM); ++ goto out; ++ } ++ ++ /* no estimation for dir size */ ++ rdhash = au_sbi(sb)->si_rdhash; ++ if (!rdhash) ++ rdhash = AUFS_RDHASH_DEF; ++ err = au_nhash_alloc(&whtmp->whlist, rdhash, gfp); ++ if (unlikely(err)) { ++ au_kfree_rcu(whtmp); ++ whtmp = ERR_PTR(err); ++ } ++ ++out: ++ return whtmp; ++} ++ ++void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) ++{ ++ if (whtmp->br) ++ au_lcnt_dec(&whtmp->br->br_count); ++ dput(whtmp->wh_dentry); ++ iput(whtmp->dir); ++ au_nhash_wh_free(&whtmp->whlist); ++ au_kfree_rcu(whtmp); ++} ++ ++/* ++ * rmdir the whiteouted temporary named dir @h_dentry. ++ * @whlist: whiteouted children. ++ */ ++int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, ++ struct dentry *wh_dentry, struct au_nhash *whlist) ++{ ++ int err; ++ unsigned int h_nlink; ++ struct path wh_path; ++ struct inode *wh_inode, *h_dir; ++ struct au_branch *br; ++ struct user_namespace *h_userns; ++ ++ h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ ++ IMustLock(h_dir); ++ ++ br = au_sbr(dir->i_sb, bindex); ++ wh_path.dentry = wh_dentry; ++ wh_path.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); ++ wh_inode = d_inode(wh_dentry); ++ inode_lock_nested(wh_inode, AuLsc_I_CHILD); ++ ++ /* ++ * someone else might change some whiteouts while we were sleeping. ++ * it means this whlist may have an obsoleted entry. ++ */ ++ if (!au_test_h_perm_sio(h_userns, wh_inode, MAY_EXEC | MAY_WRITE)) ++ err = del_wh_children(&wh_path, whlist, bindex); ++ else { ++ int wkq_err; ++ struct del_wh_children_args args = { ++ .errp = &err, ++ .h_path = &wh_path, ++ .whlist = whlist, ++ .bindex = bindex ++ }; ++ ++ wkq_err = au_wkq_wait(call_del_wh_children, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ } ++ inode_unlock(wh_inode); ++ ++ if (!err) { ++ h_nlink = h_dir->i_nlink; ++ err = vfsub_rmdir(h_dir, &wh_path); ++ /* some fs doesn't change the parent nlink in some cases */ ++ h_nlink -= h_dir->i_nlink; ++ } ++ ++ if (!err) { ++ if (au_ibtop(dir) == bindex) { ++ /* todo: dir->i_mutex is necessary */ ++ au_cpup_attr_timesizes(dir); ++ if (h_nlink) ++ vfsub_drop_nlink(dir); ++ } ++ return 0; /* success */ ++ } ++ ++ pr_warn("failed removing %pd(%d), ignored\n", wh_dentry, err); ++ return err; ++} ++ ++static void call_rmdir_whtmp(void *args) ++{ ++ int err; ++ aufs_bindex_t bindex; ++ struct au_whtmp_rmdir *a = args; ++ struct super_block *sb; ++ struct dentry *h_parent; ++ struct inode *h_dir; ++ struct au_hinode *hdir; ++ ++ /* rmdir by nfsd may cause deadlock with this i_mutex */ ++ /* inode_lock(a->dir); */ ++ err = -EROFS; ++ sb = a->dir->i_sb; ++ si_read_lock(sb, !AuLock_FLUSH); ++ if (!au_br_writable(a->br->br_perm)) ++ goto out; ++ bindex = au_br_index(sb, a->br->br_id); ++ if (unlikely(bindex < 0)) ++ goto out; ++ ++ err = -EIO; ++ ii_write_lock_parent(a->dir); ++ h_parent = dget_parent(a->wh_dentry); ++ h_dir = d_inode(h_parent); ++ hdir = au_hi(a->dir, bindex); ++ err = vfsub_mnt_want_write(au_br_mnt(a->br)); ++ if (unlikely(err)) ++ goto out_mnt; ++ au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); ++ err = au_h_verify(a->wh_dentry, au_opt_udba(sb), h_dir, h_parent, ++ a->br); ++ if (!err) ++ err = au_whtmp_rmdir(a->dir, bindex, a->wh_dentry, &a->whlist); ++ au_hn_inode_unlock(hdir); ++ vfsub_mnt_drop_write(au_br_mnt(a->br)); ++ ++out_mnt: ++ dput(h_parent); ++ ii_write_unlock(a->dir); ++out: ++ /* inode_unlock(a->dir); */ ++ au_whtmp_rmdir_free(a); ++ si_read_unlock(sb); ++ au_nwt_done(&au_sbi(sb)->si_nowait); ++ if (unlikely(err)) ++ AuIOErr("err %d\n", err); ++} ++ ++void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, ++ struct dentry *wh_dentry, struct au_whtmp_rmdir *args) ++{ ++ int wkq_err; ++ struct super_block *sb; ++ ++ IMustLock(dir); ++ ++ /* all post-process will be done in do_rmdir_whtmp(). */ ++ sb = dir->i_sb; ++ args->dir = au_igrab(dir); ++ args->br = au_sbr(sb, bindex); ++ au_lcnt_inc(&args->br->br_count); ++ args->wh_dentry = dget(wh_dentry); ++ wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0); ++ if (unlikely(wkq_err)) { ++ pr_warn("rmdir error %pd (%d), ignored\n", wh_dentry, wkq_err); ++ au_whtmp_rmdir_free(args); ++ } ++} +diff -Naur null/fs/aufs/whout.h linux-5.15.36/fs/aufs/whout.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/whout.h 2022-05-10 16:51:39.878744219 +0300 +@@ -0,0 +1,87 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * whiteout for logical deletion and opaque directory ++ */ ++ ++#ifndef __AUFS_WHOUT_H__ ++#define __AUFS_WHOUT_H__ ++ ++#ifdef __KERNEL__ ++ ++#include "dir.h" ++ ++/* whout.c */ ++int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); ++int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath, ++ struct qstr *wh_name, int try_sio); ++int au_diropq_test(struct user_namespace *h_userns, struct path *h_path); ++struct au_branch; ++struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, ++ struct qstr *prefix); ++int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br); ++int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, ++ struct dentry *dentry); ++int au_wh_init(struct au_branch *br, struct super_block *sb); ++ ++/* diropq flags */ ++#define AuDiropq_CREATE 1 ++#define au_ftest_diropq(flags, name) ((flags) & AuDiropq_##name) ++#define au_fset_diropq(flags, name) \ ++ do { (flags) |= AuDiropq_##name; } while (0) ++#define au_fclr_diropq(flags, name) \ ++ do { (flags) &= ~AuDiropq_##name; } while (0) ++ ++struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, ++ unsigned int flags); ++struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, ++ struct au_branch *br); ++struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, ++ struct dentry *h_parent); ++ ++/* real rmdir for the whiteout-ed dir */ ++struct au_whtmp_rmdir { ++ struct inode *dir; ++ struct au_branch *br; ++ struct dentry *wh_dentry; ++ struct au_nhash whlist; ++}; ++ ++struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp); ++void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp); ++int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, ++ struct dentry *wh_dentry, struct au_nhash *whlist); ++void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, ++ struct dentry *wh_dentry, struct au_whtmp_rmdir *args); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline struct dentry *au_diropq_create(struct dentry *dentry, ++ aufs_bindex_t bindex) ++{ ++ return au_diropq_sio(dentry, bindex, AuDiropq_CREATE); ++} ++ ++static inline int au_diropq_remove(struct dentry *dentry, aufs_bindex_t bindex) ++{ ++ return PTR_ERR(au_diropq_sio(dentry, bindex, !AuDiropq_CREATE)); ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_WHOUT_H__ */ +diff -Naur null/fs/aufs/wkq.c linux-5.15.36/fs/aufs/wkq.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/wkq.c 2022-05-10 16:51:39.878744219 +0300 +@@ -0,0 +1,372 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * workqueue for asynchronous/super-io operations ++ * todo: try new credential scheme ++ */ ++ ++#include ++#include "aufs.h" ++ ++/* internal workqueue named AUFS_WKQ_NAME */ ++ ++static struct workqueue_struct *au_wkq; ++ ++struct au_wkinfo { ++ struct work_struct wk; ++ struct kobject *kobj; ++ ++ unsigned int flags; /* see wkq.h */ ++ ++ au_wkq_func_t func; ++ void *args; ++ ++#ifdef CONFIG_LOCKDEP ++ int dont_check; ++ struct held_lock **hlock; ++#endif ++ ++ struct completion *comp; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++/* ++ * Aufs passes some operations to the workqueue such as the internal copyup. ++ * This scheme looks rather unnatural for LOCKDEP debugging feature, since the ++ * job run by workqueue depends upon the locks acquired in the other task. ++ * Delegating a small operation to the workqueue, aufs passes its lockdep ++ * information too. And the job in the workqueue restores the info in order to ++ * pretend as if it acquired those locks. This is just to make LOCKDEP work ++ * correctly and expectedly. ++ */ ++ ++#ifndef CONFIG_LOCKDEP ++AuStubInt0(au_wkq_lockdep_alloc, struct au_wkinfo *wkinfo); ++AuStubVoid(au_wkq_lockdep_free, struct au_wkinfo *wkinfo); ++AuStubVoid(au_wkq_lockdep_pre, struct au_wkinfo *wkinfo); ++AuStubVoid(au_wkq_lockdep_post, struct au_wkinfo *wkinfo); ++AuStubVoid(au_wkq_lockdep_init, struct au_wkinfo *wkinfo); ++#else ++static void au_wkq_lockdep_init(struct au_wkinfo *wkinfo) ++{ ++ wkinfo->hlock = NULL; ++ wkinfo->dont_check = 0; ++} ++ ++/* ++ * 1: matched ++ * 0: unmatched ++ */ ++static int au_wkq_lockdep_test(struct lock_class_key *key, const char *name) ++{ ++ static DEFINE_SPINLOCK(spin); ++ static struct { ++ char *name; ++ struct lock_class_key *key; ++ } a[] = { ++ { .name = "&sbinfo->si_rwsem" }, ++ { .name = "&finfo->fi_rwsem" }, ++ { .name = "&dinfo->di_rwsem" }, ++ { .name = "&iinfo->ii_rwsem" } ++ }; ++ static int set; ++ int i; ++ ++ /* lockless read from 'set.' see below */ ++ if (set == ARRAY_SIZE(a)) { ++ for (i = 0; i < ARRAY_SIZE(a); i++) ++ if (a[i].key == key) ++ goto match; ++ goto unmatch; ++ } ++ ++ spin_lock(&spin); ++ if (set) ++ for (i = 0; i < ARRAY_SIZE(a); i++) ++ if (a[i].key == key) { ++ spin_unlock(&spin); ++ goto match; ++ } ++ for (i = 0; i < ARRAY_SIZE(a); i++) { ++ if (a[i].key) { ++ if (unlikely(a[i].key == key)) { /* rare but possible */ ++ spin_unlock(&spin); ++ goto match; ++ } else ++ continue; ++ } ++ if (strstr(a[i].name, name)) { ++ /* ++ * the order of these three lines is important for the ++ * lockless read above. ++ */ ++ a[i].key = key; ++ spin_unlock(&spin); ++ set++; ++ /* AuDbg("%d, %s\n", set, name); */ ++ goto match; ++ } ++ } ++ spin_unlock(&spin); ++ goto unmatch; ++ ++match: ++ return 1; ++unmatch: ++ return 0; ++} ++ ++static int au_wkq_lockdep_alloc(struct au_wkinfo *wkinfo) ++{ ++ int err, n; ++ struct task_struct *curr; ++ struct held_lock **hl, *held_locks, *p; ++ ++ err = 0; ++ curr = current; ++ wkinfo->dont_check = lockdep_recursing(curr); ++ if (wkinfo->dont_check) ++ goto out; ++ n = curr->lockdep_depth; ++ if (!n) ++ goto out; ++ ++ err = -ENOMEM; ++ wkinfo->hlock = kmalloc_array(n + 1, sizeof(*wkinfo->hlock), GFP_NOFS); ++ if (unlikely(!wkinfo->hlock)) ++ goto out; ++ ++ err = 0; ++#if 0 /* left for debugging */ ++ if (0 && au_debug_test()) ++ lockdep_print_held_locks(curr); ++#endif ++ held_locks = curr->held_locks; ++ hl = wkinfo->hlock; ++ while (n--) { ++ p = held_locks++; ++ if (au_wkq_lockdep_test(p->instance->key, p->instance->name)) ++ *hl++ = p; ++ } ++ *hl = NULL; ++ ++out: ++ return err; ++} ++ ++static void au_wkq_lockdep_free(struct au_wkinfo *wkinfo) ++{ ++ au_kfree_try_rcu(wkinfo->hlock); ++} ++ ++static void au_wkq_lockdep_pre(struct au_wkinfo *wkinfo) ++{ ++ struct held_lock *p, **hl = wkinfo->hlock; ++ int subclass; ++ ++ if (wkinfo->dont_check) ++ lockdep_off(); ++ if (!hl) ++ return; ++ while ((p = *hl++)) { /* assignment */ ++ subclass = lockdep_hlock_class(p)->subclass; ++ /* AuDbg("%s, %d\n", p->instance->name, subclass); */ ++ if (p->read) ++ rwsem_acquire_read(p->instance, subclass, 0, ++ /*p->acquire_ip*/_RET_IP_); ++ else ++ rwsem_acquire(p->instance, subclass, 0, ++ /*p->acquire_ip*/_RET_IP_); ++ } ++} ++ ++static void au_wkq_lockdep_post(struct au_wkinfo *wkinfo) ++{ ++ struct held_lock *p, **hl = wkinfo->hlock; ++ ++ if (wkinfo->dont_check) ++ lockdep_on(); ++ if (!hl) ++ return; ++ while ((p = *hl++)) /* assignment */ ++ rwsem_release(p->instance, /*p->acquire_ip*/_RET_IP_); ++} ++#endif ++ ++static void wkq_func(struct work_struct *wk) ++{ ++ struct au_wkinfo *wkinfo = container_of(wk, struct au_wkinfo, wk); ++ ++ AuDebugOn(!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)); ++ AuDebugOn(rlimit(RLIMIT_FSIZE) != RLIM_INFINITY); ++ ++ au_wkq_lockdep_pre(wkinfo); ++ wkinfo->func(wkinfo->args); ++ au_wkq_lockdep_post(wkinfo); ++ if (au_ftest_wkq(wkinfo->flags, WAIT)) ++ complete(wkinfo->comp); ++ else { ++ kobject_put(wkinfo->kobj); ++ module_put(THIS_MODULE); /* todo: ?? */ ++ au_kfree_rcu(wkinfo); ++ } ++} ++ ++/* ++ * Since struct completion is large, try allocating it dynamically. ++ */ ++#define AuWkqCompDeclare(name) struct completion *comp = NULL ++ ++static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) ++{ ++ *comp = kmalloc(sizeof(**comp), GFP_NOFS); ++ if (*comp) { ++ init_completion(*comp); ++ wkinfo->comp = *comp; ++ return 0; ++ } ++ return -ENOMEM; ++} ++ ++static void au_wkq_comp_free(struct completion *comp) ++{ ++ au_kfree_rcu(comp); ++} ++ ++static void au_wkq_run(struct au_wkinfo *wkinfo) ++{ ++ if (au_ftest_wkq(wkinfo->flags, NEST)) { ++ if (au_wkq_test()) { ++ AuWarn1("wkq from wkq, unless silly-rename on NFS," ++ " due to a dead dir by UDBA," ++ " or async xino write?\n"); ++ AuDebugOn(au_ftest_wkq(wkinfo->flags, WAIT)); ++ } ++ } else ++ au_dbg_verify_kthread(); ++ ++ if (au_ftest_wkq(wkinfo->flags, WAIT)) { ++ INIT_WORK_ONSTACK(&wkinfo->wk, wkq_func); ++ queue_work(au_wkq, &wkinfo->wk); ++ } else { ++ INIT_WORK(&wkinfo->wk, wkq_func); ++ schedule_work(&wkinfo->wk); ++ } ++} ++ ++/* ++ * Be careful. It is easy to make deadlock happen. ++ * processA: lock, wkq and wait ++ * processB: wkq and wait, lock in wkq ++ * --> deadlock ++ */ ++int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args) ++{ ++ int err; ++ AuWkqCompDeclare(comp); ++ struct au_wkinfo wkinfo = { ++ .flags = flags, ++ .func = func, ++ .args = args ++ }; ++ ++ err = au_wkq_comp_alloc(&wkinfo, &comp); ++ if (unlikely(err)) ++ goto out; ++ err = au_wkq_lockdep_alloc(&wkinfo); ++ if (unlikely(err)) ++ goto out_comp; ++ if (!err) { ++ au_wkq_run(&wkinfo); ++ /* no timeout, no interrupt */ ++ wait_for_completion(wkinfo.comp); ++ } ++ au_wkq_lockdep_free(&wkinfo); ++ ++out_comp: ++ au_wkq_comp_free(comp); ++out: ++ destroy_work_on_stack(&wkinfo.wk); ++ return err; ++} ++ ++/* ++ * Note: dget/dput() in func for aufs dentries are not supported. It will be a ++ * problem in a concurrent umounting. ++ */ ++int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, ++ unsigned int flags) ++{ ++ int err; ++ struct au_wkinfo *wkinfo; ++ ++ atomic_inc(&au_sbi(sb)->si_nowait.nw_len); ++ ++ /* ++ * wkq_func() must free this wkinfo. ++ * it highly depends upon the implementation of workqueue. ++ */ ++ err = 0; ++ wkinfo = kmalloc(sizeof(*wkinfo), GFP_NOFS); ++ if (wkinfo) { ++ wkinfo->kobj = &au_sbi(sb)->si_kobj; ++ wkinfo->flags = flags & ~AuWkq_WAIT; ++ wkinfo->func = func; ++ wkinfo->args = args; ++ wkinfo->comp = NULL; ++ au_wkq_lockdep_init(wkinfo); ++ kobject_get(wkinfo->kobj); ++ __module_get(THIS_MODULE); /* todo: ?? */ ++ ++ au_wkq_run(wkinfo); ++ } else { ++ err = -ENOMEM; ++ au_nwt_done(&au_sbi(sb)->si_nowait); ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++void au_nwt_init(struct au_nowait_tasks *nwt) ++{ ++ atomic_set(&nwt->nw_len, 0); ++ /* smp_mb(); */ /* atomic_set */ ++ init_waitqueue_head(&nwt->nw_wq); ++} ++ ++void au_wkq_fin(void) ++{ ++ destroy_workqueue(au_wkq); ++} ++ ++int __init au_wkq_init(void) ++{ ++ int err; ++ ++ err = 0; ++ au_wkq = alloc_workqueue(AUFS_WKQ_NAME, 0, WQ_DFL_ACTIVE); ++ if (IS_ERR(au_wkq)) ++ err = PTR_ERR(au_wkq); ++ else if (!au_wkq) ++ err = -ENOMEM; ++ ++ return err; ++} +diff -Naur null/fs/aufs/wkq.h linux-5.15.36/fs/aufs/wkq.h +--- /dev/null ++++ linux-5.15.36/fs/aufs/wkq.h 2022-05-10 16:51:39.878744219 +0300 +@@ -0,0 +1,89 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * workqueue for asynchronous/super-io operations ++ * todo: try new credentials management scheme ++ */ ++ ++#ifndef __AUFS_WKQ_H__ ++#define __AUFS_WKQ_H__ ++ ++#ifdef __KERNEL__ ++ ++#include ++ ++struct super_block; ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * in the next operation, wait for the 'nowait' tasks in system-wide workqueue ++ */ ++struct au_nowait_tasks { ++ atomic_t nw_len; ++ wait_queue_head_t nw_wq; ++}; ++ ++/* ---------------------------------------------------------------------- */ ++ ++typedef void (*au_wkq_func_t)(void *args); ++ ++/* wkq flags */ ++#define AuWkq_WAIT 1 ++#define AuWkq_NEST (1 << 1) ++#define au_ftest_wkq(flags, name) ((flags) & AuWkq_##name) ++#define au_fset_wkq(flags, name) \ ++ do { (flags) |= AuWkq_##name; } while (0) ++#define au_fclr_wkq(flags, name) \ ++ do { (flags) &= ~AuWkq_##name; } while (0) ++ ++/* wkq.c */ ++int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args); ++int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, ++ unsigned int flags); ++void au_nwt_init(struct au_nowait_tasks *nwt); ++int __init au_wkq_init(void); ++void au_wkq_fin(void); ++ ++/* ---------------------------------------------------------------------- */ ++ ++static inline int au_wkq_test(void) ++{ ++ return current->flags & PF_WQ_WORKER; ++} ++ ++static inline int au_wkq_wait(au_wkq_func_t func, void *args) ++{ ++ return au_wkq_do_wait(AuWkq_WAIT, func, args); ++} ++ ++static inline void au_nwt_done(struct au_nowait_tasks *nwt) ++{ ++ if (atomic_dec_and_test(&nwt->nw_len)) ++ wake_up_all(&nwt->nw_wq); ++} ++ ++static inline int au_nwt_flush(struct au_nowait_tasks *nwt) ++{ ++ wait_event(nwt->nw_wq, !atomic_read(&nwt->nw_len)); ++ return 0; ++} ++ ++#endif /* __KERNEL__ */ ++#endif /* __AUFS_WKQ_H__ */ +diff -Naur null/fs/aufs/xattr.c linux-5.15.36/fs/aufs/xattr.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/xattr.c 2022-05-10 16:51:39.878744219 +0300 +@@ -0,0 +1,368 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2014-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * handling xattr functions ++ */ ++ ++#include ++#include ++#include ++#include "aufs.h" ++ ++static int au_xattr_ignore(int err, char *name, unsigned int ignore_flags) ++{ ++ if (!ignore_flags) ++ goto out; ++ switch (err) { ++ case -ENOMEM: ++ case -EDQUOT: ++ goto out; ++ } ++ ++ if ((ignore_flags & AuBrAttr_ICEX) == AuBrAttr_ICEX) { ++ err = 0; ++ goto out; ++ } ++ ++#define cmp(brattr, prefix) do { \ ++ if (!strncmp(name, XATTR_##prefix##_PREFIX, \ ++ XATTR_##prefix##_PREFIX_LEN)) { \ ++ if (ignore_flags & AuBrAttr_ICEX_##brattr) \ ++ err = 0; \ ++ goto out; \ ++ } \ ++ } while (0) ++ ++ cmp(SEC, SECURITY); ++ cmp(SYS, SYSTEM); ++ cmp(TR, TRUSTED); ++ cmp(USR, USER); ++#undef cmp ++ ++ if (ignore_flags & AuBrAttr_ICEX_OTH) ++ err = 0; ++ ++out: ++ return err; ++} ++ ++static const int au_xattr_out_of_list = AuBrAttr_ICEX_OTH << 1; ++ ++static int au_do_cpup_xattr(struct path *h_dst, struct path *h_src, ++ char *name, char **buf, unsigned int ignore_flags, ++ unsigned int verbose) ++{ ++ int err; ++ ssize_t ssz; ++ struct inode *h_idst; ++ struct dentry *h_dst_dentry, *h_src_dentry; ++ struct user_namespace *h_dst_userns, *h_src_userns; ++ ++ h_src_userns = mnt_user_ns(h_src->mnt); ++ h_src_dentry = h_src->dentry; ++ ssz = vfs_getxattr_alloc(h_src_userns, h_src_dentry, name, buf, 0, ++ GFP_NOFS); ++ err = ssz; ++ if (unlikely(err <= 0)) { ++ if (err == -ENODATA ++ || (err == -EOPNOTSUPP ++ && ((ignore_flags & au_xattr_out_of_list) ++ || (au_test_nfs_noacl(d_inode(h_src_dentry)) ++ && (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) ++ || !strcmp(name, ++ XATTR_NAME_POSIX_ACL_DEFAULT)))) ++ )) ++ err = 0; ++ if (err && (verbose || au_debug_test())) ++ pr_err("%s, err %d\n", name, err); ++ goto out; ++ } ++ ++ /* unlock it temporary */ ++ h_dst_userns = mnt_user_ns(h_dst->mnt); ++ h_dst_dentry = h_dst->dentry; ++ h_idst = d_inode(h_dst_dentry); ++ inode_unlock(h_idst); ++ err = vfsub_setxattr(h_dst_userns, h_dst_dentry, name, *buf, ssz, ++ /*flags*/0); ++ inode_lock_nested(h_idst, AuLsc_I_CHILD2); ++ if (unlikely(err)) { ++ if (verbose || au_debug_test()) ++ pr_err("%s, err %d\n", name, err); ++ err = au_xattr_ignore(err, name, ignore_flags); ++ } ++ ++out: ++ return err; ++} ++ ++int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, ++ unsigned int verbose) ++{ ++ int err, unlocked, acl_access, acl_default; ++ ssize_t ssz; ++ struct dentry *h_dst_dentry, *h_src_dentry; ++ struct inode *h_isrc, *h_idst; ++ char *value, *p, *o, *e; ++ ++ /* try stopping to update the source inode while we are referencing */ ++ /* there should not be the parent-child relationship between them */ ++ h_dst_dentry = h_dst->dentry; ++ h_idst = d_inode(h_dst_dentry); ++ h_src_dentry = h_src->dentry; ++ h_isrc = d_inode(h_src_dentry); ++ inode_unlock(h_idst); ++ inode_lock_shared_nested(h_isrc, AuLsc_I_CHILD); ++ inode_lock_nested(h_idst, AuLsc_I_CHILD2); ++ unlocked = 0; ++ ++ /* some filesystems don't list POSIX ACL, for example tmpfs */ ++ ssz = vfs_listxattr(h_src_dentry, NULL, 0); ++ err = ssz; ++ if (unlikely(err < 0)) { ++ AuTraceErr(err); ++ if (err == -ENODATA ++ || err == -EOPNOTSUPP) ++ err = 0; /* ignore */ ++ goto out; ++ } ++ ++ err = 0; ++ p = NULL; ++ o = NULL; ++ if (ssz) { ++ err = -ENOMEM; ++ p = kmalloc(ssz, GFP_NOFS); ++ o = p; ++ if (unlikely(!p)) ++ goto out; ++ err = vfs_listxattr(h_src_dentry, p, ssz); ++ } ++ inode_unlock_shared(h_isrc); ++ unlocked = 1; ++ AuDbg("err %d, ssz %zd\n", err, ssz); ++ if (unlikely(err < 0)) ++ goto out_free; ++ ++ err = 0; ++ e = p + ssz; ++ value = NULL; ++ acl_access = 0; ++ acl_default = 0; ++ while (!err && p < e) { ++ acl_access |= !strncmp(p, XATTR_NAME_POSIX_ACL_ACCESS, ++ sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1); ++ acl_default |= !strncmp(p, XATTR_NAME_POSIX_ACL_DEFAULT, ++ sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) ++ - 1); ++ err = au_do_cpup_xattr(h_dst, h_src, p, &value, ignore_flags, ++ verbose); ++ p += strlen(p) + 1; ++ } ++ AuTraceErr(err); ++ ignore_flags |= au_xattr_out_of_list; ++ if (!err && !acl_access) { ++ err = au_do_cpup_xattr(h_dst, h_src, ++ XATTR_NAME_POSIX_ACL_ACCESS, &value, ++ ignore_flags, verbose); ++ AuTraceErr(err); ++ } ++ if (!err && !acl_default) { ++ err = au_do_cpup_xattr(h_dst, h_src, ++ XATTR_NAME_POSIX_ACL_DEFAULT, &value, ++ ignore_flags, verbose); ++ AuTraceErr(err); ++ } ++ ++ au_kfree_try_rcu(value); ++ ++out_free: ++ au_kfree_try_rcu(o); ++out: ++ if (!unlocked) ++ inode_unlock_shared(h_isrc); ++ AuTraceErr(err); ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_smack_reentering(struct super_block *sb) ++{ ++#if IS_ENABLED(CONFIG_SECURITY_SMACK) || IS_ENABLED(CONFIG_SECURITY_SELINUX) ++ /* ++ * as a part of lookup, smack_d_instantiate() is called, and it calls ++ * i_op->getxattr(). ouch. ++ */ ++ return si_pid_test(sb); ++#else ++ return 0; ++#endif ++} ++ ++enum { ++ AU_XATTR_LIST, ++ AU_XATTR_GET ++}; ++ ++struct au_lgxattr { ++ int type; ++ union { ++ struct { ++ char *list; ++ size_t size; ++ } list; ++ struct { ++ const char *name; ++ void *value; ++ size_t size; ++ } get; ++ } u; ++}; ++ ++static ssize_t au_lgxattr(struct dentry *dentry, struct inode *inode, ++ struct au_lgxattr *arg) ++{ ++ ssize_t err; ++ int reenter; ++ struct path h_path; ++ struct super_block *sb; ++ ++ sb = dentry->d_sb; ++ reenter = au_smack_reentering(sb); ++ if (!reenter) { ++ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); ++ if (unlikely(err)) ++ goto out; ++ } ++ err = au_h_path_getattr(dentry, inode, /*force*/1, &h_path, reenter); ++ if (unlikely(err)) ++ goto out_si; ++ if (unlikely(!h_path.dentry)) ++ /* illegally overlapped or something */ ++ goto out_di; /* pretending success */ ++ ++ /* always topmost entry only */ ++ switch (arg->type) { ++ case AU_XATTR_LIST: ++ err = vfs_listxattr(h_path.dentry, ++ arg->u.list.list, arg->u.list.size); ++ break; ++ case AU_XATTR_GET: ++ AuDebugOn(d_is_negative(h_path.dentry)); ++ err = vfs_getxattr(mnt_user_ns(h_path.mnt), h_path.dentry, ++ arg->u.get.name, arg->u.get.value, ++ arg->u.get.size); ++ break; ++ } ++ ++out_di: ++ if (!reenter) ++ di_read_unlock(dentry, AuLock_IR); ++out_si: ++ if (!reenter) ++ si_read_unlock(sb); ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size) ++{ ++ struct au_lgxattr arg = { ++ .type = AU_XATTR_LIST, ++ .u.list = { ++ .list = list, ++ .size = size ++ }, ++ }; ++ ++ return au_lgxattr(dentry, /*inode*/NULL, &arg); ++} ++ ++static ssize_t au_getxattr(struct dentry *dentry, struct inode *inode, ++ const char *name, void *value, size_t size) ++{ ++ struct au_lgxattr arg = { ++ .type = AU_XATTR_GET, ++ .u.get = { ++ .name = name, ++ .value = value, ++ .size = size ++ }, ++ }; ++ ++ return au_lgxattr(dentry, inode, &arg); ++} ++ ++static int au_setxattr(struct dentry *dentry, struct inode *inode, ++ const char *name, const void *value, size_t size, ++ int flags) ++{ ++ struct au_sxattr arg = { ++ .type = AU_XATTR_SET, ++ .u.set = { ++ .name = name, ++ .value = value, ++ .size = size, ++ .flags = flags ++ }, ++ }; ++ ++ return au_sxattr(dentry, inode, &arg); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_xattr_get(const struct xattr_handler *handler, ++ struct dentry *dentry, struct inode *inode, ++ const char *name, void *buffer, size_t size) ++{ ++ return au_getxattr(dentry, inode, name, buffer, size); ++} ++ ++static int au_xattr_set(const struct xattr_handler *handler, ++ struct user_namespace *userns, ++ struct dentry *dentry, struct inode *inode, ++ const char *name, const void *value, size_t size, ++ int flags) ++{ ++ return au_setxattr(dentry, inode, name, value, size, flags); ++} ++ ++static const struct xattr_handler au_xattr_handler = { ++ .name = "", ++ .prefix = "", ++ .get = au_xattr_get, ++ .set = au_xattr_set ++}; ++ ++static const struct xattr_handler *au_xattr_handlers[] = { ++#ifdef CONFIG_FS_POSIX_ACL ++ &posix_acl_access_xattr_handler, ++ &posix_acl_default_xattr_handler, ++#endif ++ &au_xattr_handler, /* must be last */ ++ NULL ++}; ++ ++void au_xattr_init(struct super_block *sb) ++{ ++ sb->s_xattr = au_xattr_handlers; ++} +diff -Naur null/fs/aufs/xino.c linux-5.15.36/fs/aufs/xino.c +--- /dev/null ++++ linux-5.15.36/fs/aufs/xino.c 2022-05-10 16:51:39.879744219 +0300 +@@ -0,0 +1,1926 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++/* ++ * external inode number translation table and bitmap ++ * ++ * things to consider ++ * - the lifetime ++ * + au_xino object ++ * + XINO files (xino, xib, xigen) ++ * + dynamic debugfs entries (xiN) ++ * + static debugfs entries (xib, xigen) ++ * + static sysfs entry (xi_path) ++ * - several entry points to handle them. ++ * + mount(2) without xino option (default) ++ * + mount(2) with xino option ++ * + mount(2) with noxino option ++ * + umount(2) ++ * + remount with add/del branches ++ * + remount with xino/noxino options ++ */ ++ ++#include ++#include ++#include "aufs.h" ++ ++static aufs_bindex_t sbr_find_shared(struct super_block *sb, aufs_bindex_t btop, ++ aufs_bindex_t bbot, ++ struct super_block *h_sb) ++{ ++ /* todo: try binary-search if the branches are many */ ++ for (; btop <= bbot; btop++) ++ if (h_sb == au_sbr_sb(sb, btop)) ++ return btop; ++ return -1; ++} ++ ++/* ++ * find another branch who is on the same filesystem of the specified ++ * branch{@btgt}. search until @bbot. ++ */ ++static aufs_bindex_t is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, ++ aufs_bindex_t bbot) ++{ ++ aufs_bindex_t bindex; ++ struct super_block *tgt_sb; ++ ++ tgt_sb = au_sbr_sb(sb, btgt); ++ bindex = sbr_find_shared(sb, /*btop*/0, btgt - 1, tgt_sb); ++ if (bindex < 0) ++ bindex = sbr_find_shared(sb, btgt + 1, bbot, tgt_sb); ++ ++ return bindex; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * stop unnecessary notify events at creating xino files ++ */ ++ ++aufs_bindex_t au_xi_root(struct super_block *sb, struct dentry *dentry) ++{ ++ aufs_bindex_t bfound, bindex, bbot; ++ struct dentry *parent; ++ struct au_branch *br; ++ ++ bfound = -1; ++ parent = dentry->d_parent; /* safe d_parent access */ ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_dentry(br) == parent) { ++ bfound = bindex; ++ break; ++ } ++ } ++ ++ AuDbg("bfound b%d\n", bfound); ++ return bfound; ++} ++ ++struct au_xino_lock_dir { ++ struct au_hinode *hdir; ++ struct dentry *parent; ++ struct inode *dir; ++}; ++ ++static struct dentry *au_dget_parent_lock(struct dentry *dentry, ++ unsigned int lsc) ++{ ++ struct dentry *parent; ++ struct inode *dir; ++ ++ parent = dget_parent(dentry); ++ dir = d_inode(parent); ++ inode_lock_nested(dir, lsc); ++#if 0 /* it should not happen */ ++ spin_lock(&dentry->d_lock); ++ if (unlikely(dentry->d_parent != parent)) { ++ spin_unlock(&dentry->d_lock); ++ inode_unlock(dir); ++ dput(parent); ++ parent = NULL; ++ goto out; ++ } ++ spin_unlock(&dentry->d_lock); ++ ++out: ++#endif ++ return parent; ++} ++ ++static void au_xino_lock_dir(struct super_block *sb, struct path *xipath, ++ struct au_xino_lock_dir *ldir) ++{ ++ aufs_bindex_t bindex; ++ ++ ldir->hdir = NULL; ++ bindex = au_xi_root(sb, xipath->dentry); ++ if (bindex >= 0) { ++ /* rw branch root */ ++ ldir->hdir = au_hi(d_inode(sb->s_root), bindex); ++ au_hn_inode_lock_nested(ldir->hdir, AuLsc_I_PARENT); ++ } else { ++ /* other */ ++ ldir->parent = au_dget_parent_lock(xipath->dentry, ++ AuLsc_I_PARENT); ++ ldir->dir = d_inode(ldir->parent); ++ } ++} ++ ++static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) ++{ ++ if (ldir->hdir) ++ au_hn_inode_unlock(ldir->hdir); ++ else { ++ inode_unlock(ldir->dir); ++ dput(ldir->parent); ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * create and set a new xino file ++ */ ++struct file *au_xino_create(struct super_block *sb, char *fpath, int silent, ++ int wbrtop) ++{ ++ struct file *file; ++ struct dentry *h_parent, *d; ++ struct inode *h_dir, *inode; ++ int err; ++ static DEFINE_MUTEX(mtx); ++ ++ /* ++ * at mount-time, and the xino file is the default path, ++ * hnotify is disabled so we have no notify events to ignore. ++ * when a user specified the xino, we cannot get au_hdir to be ignored. ++ */ ++ if (!wbrtop) ++ mutex_lock(&mtx); ++ file = vfsub_filp_open(fpath, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE ++ /* | __FMODE_NONOTIFY */, ++ 0666); ++ if (IS_ERR(file)) { ++ if (!wbrtop) ++ mutex_unlock(&mtx); ++ if (!silent) ++ pr_err("open %s(%ld)\n", fpath, PTR_ERR(file)); ++ return file; ++ } ++ ++ /* keep file count */ ++ err = 0; ++ d = file->f_path.dentry; ++ h_parent = au_dget_parent_lock(d, AuLsc_I_PARENT); ++ if (!wbrtop) ++ mutex_unlock(&mtx); ++ /* mnt_want_write() is unnecessary here */ ++ h_dir = d_inode(h_parent); ++ inode = file_inode(file); ++ /* no delegation since it is just created */ ++ if (inode->i_nlink) ++ err = vfsub_unlink(h_dir, &file->f_path, /*delegated*/NULL, ++ /*force*/0); ++ inode_unlock(h_dir); ++ dput(h_parent); ++ if (unlikely(err)) { ++ if (!silent) ++ pr_err("unlink %s(%d)\n", fpath, err); ++ goto out; ++ } ++ ++ err = -EINVAL; ++ if (unlikely(sb && sb == d->d_sb)) { ++ if (!silent) ++ pr_err("%s must be outside\n", fpath); ++ goto out; ++ } ++ if (unlikely(au_test_fs_bad_xino(d->d_sb))) { ++ if (!silent) ++ pr_err("xino doesn't support %s(%s)\n", ++ fpath, au_sbtype(d->d_sb)); ++ goto out; ++ } ++ return file; /* success */ ++ ++out: ++ fput(file); ++ file = ERR_PTR(err); ++ return file; ++} ++ ++/* ++ * create a new xinofile at the same place/path as @base. ++ */ ++struct file *au_xino_create2(struct super_block *sb, struct path *base, ++ struct file *copy_src) ++{ ++ struct file *file; ++ struct dentry *dentry; ++ struct inode *dir, *delegated; ++ struct qstr *name; ++ struct path ppath, path; ++ int err, do_unlock; ++ struct au_xino_lock_dir ldir; ++ ++ do_unlock = 1; ++ au_xino_lock_dir(sb, base, &ldir); ++ dentry = base->dentry; ++ ppath.dentry = dentry->d_parent; /* dir inode is locked */ ++ ppath.mnt = base->mnt; ++ dir = d_inode(ppath.dentry); ++ IMustLock(dir); ++ ++ name = &dentry->d_name; ++ path.dentry = vfsub_lookup_one_len(name->name, &ppath, name->len); ++ if (IS_ERR(path.dentry)) { ++ file = (void *)path.dentry; ++ pr_err("%pd lookup err %ld\n", dentry, PTR_ERR(path.dentry)); ++ goto out; ++ } ++ ++ /* no need to mnt_want_write() since we call dentry_open() later */ ++ err = vfs_create(mnt_user_ns(base->mnt), dir, path.dentry, 0666, NULL); ++ if (unlikely(err)) { ++ file = ERR_PTR(err); ++ pr_err("%pd create err %d\n", dentry, err); ++ goto out_dput; ++ } ++ ++ path.mnt = base->mnt; ++ file = vfsub_dentry_open(&path, ++ O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE ++ /* | __FMODE_NONOTIFY */); ++ if (IS_ERR(file)) { ++ pr_err("%pd open err %ld\n", dentry, PTR_ERR(file)); ++ goto out_dput; ++ } ++ ++ delegated = NULL; ++ err = vfsub_unlink(dir, &file->f_path, &delegated, /*force*/0); ++ au_xino_unlock_dir(&ldir); ++ do_unlock = 0; ++ if (unlikely(err == -EWOULDBLOCK)) { ++ pr_warn("cannot retry for NFSv4 delegation" ++ " for an internal unlink\n"); ++ iput(delegated); ++ } ++ if (unlikely(err)) { ++ pr_err("%pd unlink err %d\n", dentry, err); ++ goto out_fput; ++ } ++ ++ if (copy_src) { ++ /* no one can touch copy_src xino */ ++ err = au_copy_file(file, copy_src, vfsub_f_size_read(copy_src)); ++ if (unlikely(err)) { ++ pr_err("%pd copy err %d\n", dentry, err); ++ goto out_fput; ++ } ++ } ++ goto out_dput; /* success */ ++ ++out_fput: ++ fput(file); ++ file = ERR_PTR(err); ++out_dput: ++ dput(path.dentry); ++out: ++ if (do_unlock) ++ au_xino_unlock_dir(&ldir); ++ return file; ++} ++ ++struct file *au_xino_file1(struct au_xino *xi) ++{ ++ struct file *file; ++ unsigned int u, nfile; ++ ++ file = NULL; ++ nfile = xi->xi_nfile; ++ for (u = 0; u < nfile; u++) { ++ file = xi->xi_file[u]; ++ if (file) ++ break; ++ } ++ ++ return file; ++} ++ ++static int au_xino_file_set(struct au_xino *xi, int idx, struct file *file) ++{ ++ int err; ++ struct file *f; ++ void *p; ++ ++ if (file) ++ get_file(file); ++ ++ err = 0; ++ f = NULL; ++ if (idx < xi->xi_nfile) { ++ f = xi->xi_file[idx]; ++ if (f) ++ fput(f); ++ } else { ++ p = au_kzrealloc(xi->xi_file, ++ sizeof(*xi->xi_file) * xi->xi_nfile, ++ sizeof(*xi->xi_file) * (idx + 1), ++ GFP_NOFS, /*may_shrink*/0); ++ if (p) { ++ MtxMustLock(&xi->xi_mtx); ++ xi->xi_file = p; ++ xi->xi_nfile = idx + 1; ++ } else { ++ err = -ENOMEM; ++ if (file) ++ fput(file); ++ goto out; ++ } ++ } ++ xi->xi_file[idx] = file; ++ ++out: ++ return err; ++} ++ ++/* ++ * if @xinew->xi is not set, then create new xigen file. ++ */ ++struct file *au_xi_new(struct super_block *sb, struct au_xi_new *xinew) ++{ ++ struct file *file; ++ int err; ++ ++ SiMustAnyLock(sb); ++ ++ file = au_xino_create2(sb, xinew->base, xinew->copy_src); ++ if (IS_ERR(file)) { ++ err = PTR_ERR(file); ++ pr_err("%s[%d], err %d\n", ++ xinew->xi ? "xino" : "xigen", ++ xinew->idx, err); ++ goto out; ++ } ++ ++ if (xinew->xi) ++ err = au_xino_file_set(xinew->xi, xinew->idx, file); ++ else { ++ BUG(); ++ /* todo: make xigen file an array */ ++ /* err = au_xigen_file_set(sb, xinew->idx, file); */ ++ } ++ fput(file); ++ if (unlikely(err)) ++ file = ERR_PTR(err); ++ ++out: ++ return file; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * truncate xino files ++ */ ++static int au_xino_do_trunc(struct super_block *sb, aufs_bindex_t bindex, ++ int idx, struct kstatfs *st) ++{ ++ int err; ++ blkcnt_t blocks; ++ struct file *file, *new_xino; ++ struct au_xi_new xinew = { ++ .idx = idx ++ }; ++ ++ err = 0; ++ xinew.xi = au_sbr(sb, bindex)->br_xino; ++ file = au_xino_file(xinew.xi, idx); ++ if (!file) ++ goto out; ++ ++ xinew.base = &file->f_path; ++ err = vfs_statfs(xinew.base, st); ++ if (unlikely(err)) { ++ AuErr1("statfs err %d, ignored\n", err); ++ err = 0; ++ goto out; ++ } ++ ++ blocks = file_inode(file)->i_blocks; ++ pr_info("begin truncating xino(b%d-%d), ib%llu, %llu/%llu free blks\n", ++ bindex, idx, (u64)blocks, st->f_bfree, st->f_blocks); ++ ++ xinew.copy_src = file; ++ new_xino = au_xi_new(sb, &xinew); ++ if (IS_ERR(new_xino)) { ++ err = PTR_ERR(new_xino); ++ pr_err("xino(b%d-%d), err %d, ignored\n", bindex, idx, err); ++ goto out; ++ } ++ ++ err = vfs_statfs(&new_xino->f_path, st); ++ if (!err) ++ pr_info("end truncating xino(b%d-%d), ib%llu, %llu/%llu free blks\n", ++ bindex, idx, (u64)file_inode(new_xino)->i_blocks, ++ st->f_bfree, st->f_blocks); ++ else { ++ AuErr1("statfs err %d, ignored\n", err); ++ err = 0; ++ } ++ ++out: ++ return err; ++} ++ ++int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex, int idx_begin) ++{ ++ int err, i; ++ unsigned long jiffy; ++ aufs_bindex_t bbot; ++ struct kstatfs *st; ++ struct au_branch *br; ++ struct au_xino *xi; ++ ++ err = -ENOMEM; ++ st = kmalloc(sizeof(*st), GFP_NOFS); ++ if (unlikely(!st)) ++ goto out; ++ ++ err = -EINVAL; ++ bbot = au_sbbot(sb); ++ if (unlikely(bindex < 0 || bbot < bindex)) ++ goto out_st; ++ ++ err = 0; ++ jiffy = jiffies; ++ br = au_sbr(sb, bindex); ++ xi = br->br_xino; ++ for (i = idx_begin; !err && i < xi->xi_nfile; i++) ++ err = au_xino_do_trunc(sb, bindex, i, st); ++ if (!err) ++ au_sbi(sb)->si_xino_jiffy = jiffy; ++ ++out_st: ++ au_kfree_rcu(st); ++out: ++ return err; ++} ++ ++struct xino_do_trunc_args { ++ struct super_block *sb; ++ struct au_branch *br; ++ int idx; ++}; ++ ++static void xino_do_trunc(void *_args) ++{ ++ struct xino_do_trunc_args *args = _args; ++ struct super_block *sb; ++ struct au_branch *br; ++ struct inode *dir; ++ int err, idx; ++ aufs_bindex_t bindex; ++ ++ err = 0; ++ sb = args->sb; ++ dir = d_inode(sb->s_root); ++ br = args->br; ++ idx = args->idx; ++ ++ si_noflush_write_lock(sb); ++ ii_read_lock_parent(dir); ++ bindex = au_br_index(sb, br->br_id); ++ err = au_xino_trunc(sb, bindex, idx); ++ ii_read_unlock(dir); ++ if (unlikely(err)) ++ pr_warn("err b%d, (%d)\n", bindex, err); ++ atomic_dec(&br->br_xino->xi_truncating); ++ au_lcnt_dec(&br->br_count); ++ si_write_unlock(sb); ++ au_nwt_done(&au_sbi(sb)->si_nowait); ++ au_kfree_rcu(args); ++} ++ ++/* ++ * returns the index in the xi_file array whose corresponding file is necessary ++ * to truncate, or -1 which means no need to truncate. ++ */ ++static int xino_trunc_test(struct super_block *sb, struct au_branch *br) ++{ ++ int err; ++ unsigned int u; ++ struct kstatfs st; ++ struct au_sbinfo *sbinfo; ++ struct au_xino *xi; ++ struct file *file; ++ ++ /* todo: si_xino_expire and the ratio should be customizable */ ++ sbinfo = au_sbi(sb); ++ if (time_before(jiffies, ++ sbinfo->si_xino_jiffy + sbinfo->si_xino_expire)) ++ return -1; ++ ++ /* truncation border */ ++ xi = br->br_xino; ++ for (u = 0; u < xi->xi_nfile; u++) { ++ file = au_xino_file(xi, u); ++ if (!file) ++ continue; ++ ++ err = vfs_statfs(&file->f_path, &st); ++ if (unlikely(err)) { ++ AuErr1("statfs err %d, ignored\n", err); ++ return -1; ++ } ++ if (div64_u64(st.f_bfree * 100, st.f_blocks) ++ >= AUFS_XINO_DEF_TRUNC) ++ return u; ++ } ++ ++ return -1; ++} ++ ++static void xino_try_trunc(struct super_block *sb, struct au_branch *br) ++{ ++ int idx; ++ struct xino_do_trunc_args *args; ++ int wkq_err; ++ ++ idx = xino_trunc_test(sb, br); ++ if (idx < 0) ++ return; ++ ++ if (atomic_inc_return(&br->br_xino->xi_truncating) > 1) ++ goto out; ++ ++ /* lock and kfree() will be called in trunc_xino() */ ++ args = kmalloc(sizeof(*args), GFP_NOFS); ++ if (unlikely(!args)) { ++ AuErr1("no memory\n"); ++ goto out; ++ } ++ ++ au_lcnt_inc(&br->br_count); ++ args->sb = sb; ++ args->br = br; ++ args->idx = idx; ++ wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); ++ if (!wkq_err) ++ return; /* success */ ++ ++ pr_err("wkq %d\n", wkq_err); ++ au_lcnt_dec(&br->br_count); ++ au_kfree_rcu(args); ++ ++out: ++ atomic_dec(&br->br_xino->xi_truncating); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_xi_calc { ++ int idx; ++ loff_t pos; ++}; ++ ++static void au_xi_calc(struct super_block *sb, ino_t h_ino, ++ struct au_xi_calc *calc) ++{ ++ loff_t maxent; ++ ++ maxent = au_xi_maxent(sb); ++ calc->idx = div64_u64_rem(h_ino, maxent, &calc->pos); ++ calc->pos *= sizeof(ino_t); ++} ++ ++static int au_xino_do_new_async(struct super_block *sb, struct au_branch *br, ++ struct au_xi_calc *calc) ++{ ++ int err; ++ struct file *file; ++ struct au_xino *xi = br->br_xino; ++ struct au_xi_new xinew = { ++ .xi = xi ++ }; ++ ++ SiMustAnyLock(sb); ++ ++ err = 0; ++ if (!xi) ++ goto out; ++ ++ mutex_lock(&xi->xi_mtx); ++ file = au_xino_file(xi, calc->idx); ++ if (file) ++ goto out_mtx; ++ ++ file = au_xino_file(xi, /*idx*/-1); ++ AuDebugOn(!file); ++ xinew.idx = calc->idx; ++ xinew.base = &file->f_path; ++ /* xinew.copy_src = NULL; */ ++ file = au_xi_new(sb, &xinew); ++ if (IS_ERR(file)) ++ err = PTR_ERR(file); ++ ++out_mtx: ++ mutex_unlock(&xi->xi_mtx); ++out: ++ return err; ++} ++ ++struct au_xino_do_new_async_args { ++ struct super_block *sb; ++ struct au_branch *br; ++ struct au_xi_calc calc; ++ ino_t ino; ++}; ++ ++struct au_xi_writing { ++ struct hlist_bl_node node; ++ ino_t h_ino, ino; ++}; ++ ++static int au_xino_do_write(struct file *file, struct au_xi_calc *calc, ++ ino_t ino); ++ ++static void au_xino_call_do_new_async(void *args) ++{ ++ struct au_xino_do_new_async_args *a = args; ++ struct au_branch *br; ++ struct super_block *sb; ++ struct au_sbinfo *sbi; ++ struct inode *root; ++ struct file *file; ++ struct au_xi_writing *del, *p; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ int err; ++ ++ br = a->br; ++ sb = a->sb; ++ sbi = au_sbi(sb); ++ si_noflush_read_lock(sb); ++ root = d_inode(sb->s_root); ++ ii_read_lock_child(root); ++ err = au_xino_do_new_async(sb, br, &a->calc); ++ if (unlikely(err)) { ++ AuIOErr("err %d\n", err); ++ goto out; ++ } ++ ++ file = au_xino_file(br->br_xino, a->calc.idx); ++ AuDebugOn(!file); ++ err = au_xino_do_write(file, &a->calc, a->ino); ++ if (unlikely(err)) { ++ AuIOErr("err %d\n", err); ++ goto out; ++ } ++ ++ del = NULL; ++ hbl = &br->br_xino->xi_writing; ++ hlist_bl_lock(hbl); ++ au_hbl_for_each(pos, hbl) { ++ p = container_of(pos, struct au_xi_writing, node); ++ if (p->ino == a->ino) { ++ del = p; ++ hlist_bl_del(&p->node); ++ break; ++ } ++ } ++ hlist_bl_unlock(hbl); ++ au_kfree_rcu(del); ++ ++out: ++ au_lcnt_dec(&br->br_count); ++ ii_read_unlock(root); ++ si_read_unlock(sb); ++ au_nwt_done(&sbi->si_nowait); ++ au_kfree_rcu(a); ++} ++ ++/* ++ * create a new xino file asynchronously ++ */ ++static int au_xino_new_async(struct super_block *sb, struct au_branch *br, ++ struct au_xi_calc *calc, ino_t ino) ++{ ++ int err; ++ struct au_xino_do_new_async_args *arg; ++ ++ err = -ENOMEM; ++ arg = kmalloc(sizeof(*arg), GFP_NOFS); ++ if (unlikely(!arg)) ++ goto out; ++ ++ arg->sb = sb; ++ arg->br = br; ++ arg->calc = *calc; ++ arg->ino = ino; ++ au_lcnt_inc(&br->br_count); ++ err = au_wkq_nowait(au_xino_call_do_new_async, arg, sb, AuWkq_NEST); ++ if (unlikely(err)) { ++ pr_err("wkq %d\n", err); ++ au_lcnt_dec(&br->br_count); ++ au_kfree_rcu(arg); ++ } ++ ++out: ++ return err; ++} ++ ++/* ++ * read @ino from xinofile for the specified branch{@sb, @bindex} ++ * at the position of @h_ino. ++ */ ++int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ ino_t *ino) ++{ ++ int err; ++ ssize_t sz; ++ struct au_xi_calc calc; ++ struct au_sbinfo *sbinfo; ++ struct file *file; ++ struct au_xino *xi; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos; ++ struct au_xi_writing *p; ++ ++ *ino = 0; ++ if (!au_opt_test(au_mntflags(sb), XINO)) ++ return 0; /* no xino */ ++ ++ err = 0; ++ au_xi_calc(sb, h_ino, &calc); ++ xi = au_sbr(sb, bindex)->br_xino; ++ file = au_xino_file(xi, calc.idx); ++ if (!file) { ++ hbl = &xi->xi_writing; ++ hlist_bl_lock(hbl); ++ au_hbl_for_each(pos, hbl) { ++ p = container_of(pos, struct au_xi_writing, node); ++ if (p->h_ino == h_ino) { ++ AuDbg("hi%llu, i%llu, found\n", ++ (u64)p->h_ino, (u64)p->ino); ++ *ino = p->ino; ++ break; ++ } ++ } ++ hlist_bl_unlock(hbl); ++ return 0; ++ } else if (vfsub_f_size_read(file) < calc.pos + sizeof(*ino)) ++ return 0; /* no xino */ ++ ++ sbinfo = au_sbi(sb); ++ sz = xino_fread(file, ino, sizeof(*ino), &calc.pos); ++ if (sz == sizeof(*ino)) ++ return 0; /* success */ ++ ++ err = sz; ++ if (unlikely(sz >= 0)) { ++ err = -EIO; ++ AuIOErr("xino read error (%zd)\n", sz); ++ } ++ return err; ++} ++ ++static int au_xino_do_write(struct file *file, struct au_xi_calc *calc, ++ ino_t ino) ++{ ++ ssize_t sz; ++ ++ sz = xino_fwrite(file, &ino, sizeof(ino), &calc->pos); ++ if (sz == sizeof(ino)) ++ return 0; /* success */ ++ ++ AuIOErr("write failed (%zd)\n", sz); ++ return -EIO; ++} ++ ++/* ++ * write @ino to the xinofile for the specified branch{@sb, @bindex} ++ * at the position of @h_ino. ++ * even if @ino is zero, it is written to the xinofile and means no entry. ++ * if the size of the xino file on a specific filesystem exceeds the watermark, ++ * try truncating it. ++ */ ++int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ ino_t ino) ++{ ++ int err; ++ unsigned int mnt_flags; ++ struct au_xi_calc calc; ++ struct file *file; ++ struct au_branch *br; ++ struct au_xino *xi; ++ struct au_xi_writing *p; ++ ++ SiMustAnyLock(sb); ++ ++ mnt_flags = au_mntflags(sb); ++ if (!au_opt_test(mnt_flags, XINO)) ++ return 0; ++ ++ au_xi_calc(sb, h_ino, &calc); ++ br = au_sbr(sb, bindex); ++ xi = br->br_xino; ++ file = au_xino_file(xi, calc.idx); ++ if (!file) { ++ /* store the inum pair into the list */ ++ p = kmalloc(sizeof(*p), GFP_NOFS | __GFP_NOFAIL); ++ p->h_ino = h_ino; ++ p->ino = ino; ++ au_hbl_add(&p->node, &xi->xi_writing); ++ ++ /* create and write a new xino file asynchronously */ ++ err = au_xino_new_async(sb, br, &calc, ino); ++ if (!err) ++ return 0; /* success */ ++ goto out; ++ } ++ ++ err = au_xino_do_write(file, &calc, ino); ++ if (!err) { ++ br = au_sbr(sb, bindex); ++ if (au_opt_test(mnt_flags, TRUNC_XINO) ++ && au_test_fs_trunc_xino(au_br_sb(br))) ++ xino_try_trunc(sb, br); ++ return 0; /* success */ ++ } ++ ++out: ++ AuIOErr("write failed (%d)\n", err); ++ return -EIO; ++} ++ ++static ssize_t xino_fread_wkq(struct file *file, void *buf, size_t size, ++ loff_t *pos); ++ ++/* todo: unnecessary to support mmap_sem since kernel-space? */ ++ssize_t xino_fread(struct file *file, void *kbuf, size_t size, loff_t *pos) ++{ ++ ssize_t err; ++ int i; ++ const int prevent_endless = 10; ++ ++ i = 0; ++ do { ++ err = vfsub_read_k(file, kbuf, size, pos); ++ if (err == -EINTR ++ && !au_wkq_test() ++ && fatal_signal_pending(current)) { ++ err = xino_fread_wkq(file, kbuf, size, pos); ++ BUG_ON(err == -EINTR); ++ } ++ } while (i++ < prevent_endless ++ && (err == -EAGAIN || err == -EINTR)); ++ ++#if 0 /* reserved for future use */ ++ if (err > 0) ++ fsnotify_access(file->f_path.dentry); ++#endif ++ ++ return err; ++} ++ ++struct xino_fread_args { ++ ssize_t *errp; ++ struct file *file; ++ void *buf; ++ size_t size; ++ loff_t *pos; ++}; ++ ++static void call_xino_fread(void *args) ++{ ++ struct xino_fread_args *a = args; ++ *a->errp = xino_fread(a->file, a->buf, a->size, a->pos); ++} ++ ++static ssize_t xino_fread_wkq(struct file *file, void *buf, size_t size, ++ loff_t *pos) ++{ ++ ssize_t err; ++ int wkq_err; ++ struct xino_fread_args args = { ++ .errp = &err, ++ .file = file, ++ .buf = buf, ++ .size = size, ++ .pos = pos ++ }; ++ ++ wkq_err = au_wkq_wait(call_xino_fread, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ ++ return err; ++} ++ ++static ssize_t xino_fwrite_wkq(struct file *file, void *buf, size_t size, ++ loff_t *pos); ++ ++static ssize_t do_xino_fwrite(struct file *file, void *kbuf, size_t size, ++ loff_t *pos) ++{ ++ ssize_t err; ++ int i; ++ const int prevent_endless = 10; ++ ++ i = 0; ++ do { ++ err = vfsub_write_k(file, kbuf, size, pos); ++ if (err == -EINTR ++ && !au_wkq_test() ++ && fatal_signal_pending(current)) { ++ err = xino_fwrite_wkq(file, kbuf, size, pos); ++ BUG_ON(err == -EINTR); ++ } ++ } while (i++ < prevent_endless ++ && (err == -EAGAIN || err == -EINTR)); ++ ++#if 0 /* reserved for future use */ ++ if (err > 0) ++ fsnotify_modify(file->f_path.dentry); ++#endif ++ ++ return err; ++} ++ ++struct do_xino_fwrite_args { ++ ssize_t *errp; ++ struct file *file; ++ void *buf; ++ size_t size; ++ loff_t *pos; ++}; ++ ++static void call_do_xino_fwrite(void *args) ++{ ++ struct do_xino_fwrite_args *a = args; ++ *a->errp = do_xino_fwrite(a->file, a->buf, a->size, a->pos); ++} ++ ++static ssize_t xino_fwrite_wkq(struct file *file, void *buf, size_t size, ++ loff_t *pos) ++{ ++ ssize_t err; ++ int wkq_err; ++ struct do_xino_fwrite_args args = { ++ .errp = &err, ++ .file = file, ++ .buf = buf, ++ .size = size, ++ .pos = pos ++ }; ++ ++ /* ++ * it breaks RLIMIT_FSIZE and normal user's limit, ++ * users should care about quota and real 'filesystem full.' ++ */ ++ wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); ++ if (unlikely(wkq_err)) ++ err = wkq_err; ++ ++ return err; ++} ++ ++ssize_t xino_fwrite(struct file *file, void *buf, size_t size, loff_t *pos) ++{ ++ ssize_t err; ++ ++ if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { ++ lockdep_off(); ++ err = do_xino_fwrite(file, buf, size, pos); ++ lockdep_on(); ++ } else { ++ lockdep_off(); ++ err = xino_fwrite_wkq(file, buf, size, pos); ++ lockdep_on(); ++ } ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * inode number bitmap ++ */ ++static const int page_bits = (int)PAGE_SIZE * BITS_PER_BYTE; ++static ino_t xib_calc_ino(unsigned long pindex, int bit) ++{ ++ ino_t ino; ++ ++ AuDebugOn(bit < 0 || page_bits <= bit); ++ ino = AUFS_FIRST_INO + pindex * page_bits + bit; ++ return ino; ++} ++ ++static void xib_calc_bit(ino_t ino, unsigned long *pindex, int *bit) ++{ ++ AuDebugOn(ino < AUFS_FIRST_INO); ++ ino -= AUFS_FIRST_INO; ++ *pindex = ino / page_bits; ++ *bit = ino % page_bits; ++} ++ ++static int xib_pindex(struct super_block *sb, unsigned long pindex) ++{ ++ int err; ++ loff_t pos; ++ ssize_t sz; ++ struct au_sbinfo *sbinfo; ++ struct file *xib; ++ unsigned long *p; ++ ++ sbinfo = au_sbi(sb); ++ MtxMustLock(&sbinfo->si_xib_mtx); ++ AuDebugOn(pindex > ULONG_MAX / PAGE_SIZE ++ || !au_opt_test(sbinfo->si_mntflags, XINO)); ++ ++ if (pindex == sbinfo->si_xib_last_pindex) ++ return 0; ++ ++ xib = sbinfo->si_xib; ++ p = sbinfo->si_xib_buf; ++ pos = sbinfo->si_xib_last_pindex; ++ pos *= PAGE_SIZE; ++ sz = xino_fwrite(xib, p, PAGE_SIZE, &pos); ++ if (unlikely(sz != PAGE_SIZE)) ++ goto out; ++ ++ pos = pindex; ++ pos *= PAGE_SIZE; ++ if (vfsub_f_size_read(xib) >= pos + PAGE_SIZE) ++ sz = xino_fread(xib, p, PAGE_SIZE, &pos); ++ else { ++ memset(p, 0, PAGE_SIZE); ++ sz = xino_fwrite(xib, p, PAGE_SIZE, &pos); ++ } ++ if (sz == PAGE_SIZE) { ++ sbinfo->si_xib_last_pindex = pindex; ++ return 0; /* success */ ++ } ++ ++out: ++ AuIOErr1("write failed (%zd)\n", sz); ++ err = sz; ++ if (sz >= 0) ++ err = -EIO; ++ return err; ++} ++ ++static void au_xib_clear_bit(struct inode *inode) ++{ ++ int err, bit; ++ unsigned long pindex; ++ struct super_block *sb; ++ struct au_sbinfo *sbinfo; ++ ++ AuDebugOn(inode->i_nlink); ++ ++ sb = inode->i_sb; ++ xib_calc_bit(inode->i_ino, &pindex, &bit); ++ AuDebugOn(page_bits <= bit); ++ sbinfo = au_sbi(sb); ++ mutex_lock(&sbinfo->si_xib_mtx); ++ err = xib_pindex(sb, pindex); ++ if (!err) { ++ clear_bit(bit, sbinfo->si_xib_buf); ++ sbinfo->si_xib_next_bit = bit; ++ } ++ mutex_unlock(&sbinfo->si_xib_mtx); ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * truncate a xino bitmap file ++ */ ++ ++/* todo: slow */ ++static int do_xib_restore(struct super_block *sb, struct file *file, void *page) ++{ ++ int err, bit; ++ ssize_t sz; ++ unsigned long pindex; ++ loff_t pos, pend; ++ struct au_sbinfo *sbinfo; ++ ino_t *ino; ++ unsigned long *p; ++ ++ err = 0; ++ sbinfo = au_sbi(sb); ++ MtxMustLock(&sbinfo->si_xib_mtx); ++ p = sbinfo->si_xib_buf; ++ pend = vfsub_f_size_read(file); ++ pos = 0; ++ while (pos < pend) { ++ sz = xino_fread(file, page, PAGE_SIZE, &pos); ++ err = sz; ++ if (unlikely(sz <= 0)) ++ goto out; ++ ++ err = 0; ++ for (ino = page; sz > 0; ino++, sz -= sizeof(ino)) { ++ if (unlikely(*ino < AUFS_FIRST_INO)) ++ continue; ++ ++ xib_calc_bit(*ino, &pindex, &bit); ++ AuDebugOn(page_bits <= bit); ++ err = xib_pindex(sb, pindex); ++ if (!err) ++ set_bit(bit, p); ++ else ++ goto out; ++ } ++ } ++ ++out: ++ return err; ++} ++ ++static int xib_restore(struct super_block *sb) ++{ ++ int err, i; ++ unsigned int nfile; ++ aufs_bindex_t bindex, bbot; ++ void *page; ++ struct au_branch *br; ++ struct au_xino *xi; ++ struct file *file; ++ ++ err = -ENOMEM; ++ page = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!page)) ++ goto out; ++ ++ err = 0; ++ bbot = au_sbbot(sb); ++ for (bindex = 0; !err && bindex <= bbot; bindex++) ++ if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) { ++ br = au_sbr(sb, bindex); ++ xi = br->br_xino; ++ nfile = xi->xi_nfile; ++ for (i = 0; i < nfile; i++) { ++ file = au_xino_file(xi, i); ++ if (file) ++ err = do_xib_restore(sb, file, page); ++ } ++ } else ++ AuDbg("skip shared b%d\n", bindex); ++ free_page((unsigned long)page); ++ ++out: ++ return err; ++} ++ ++int au_xib_trunc(struct super_block *sb) ++{ ++ int err; ++ ssize_t sz; ++ loff_t pos; ++ struct au_sbinfo *sbinfo; ++ unsigned long *p; ++ struct file *file; ++ ++ SiMustWriteLock(sb); ++ ++ err = 0; ++ sbinfo = au_sbi(sb); ++ if (!au_opt_test(sbinfo->si_mntflags, XINO)) ++ goto out; ++ ++ file = sbinfo->si_xib; ++ if (vfsub_f_size_read(file) <= PAGE_SIZE) ++ goto out; ++ ++ file = au_xino_create2(sb, &sbinfo->si_xib->f_path, NULL); ++ err = PTR_ERR(file); ++ if (IS_ERR(file)) ++ goto out; ++ fput(sbinfo->si_xib); ++ sbinfo->si_xib = file; ++ ++ p = sbinfo->si_xib_buf; ++ memset(p, 0, PAGE_SIZE); ++ pos = 0; ++ sz = xino_fwrite(sbinfo->si_xib, p, PAGE_SIZE, &pos); ++ if (unlikely(sz != PAGE_SIZE)) { ++ err = sz; ++ AuIOErr("err %d\n", err); ++ if (sz >= 0) ++ err = -EIO; ++ goto out; ++ } ++ ++ mutex_lock(&sbinfo->si_xib_mtx); ++ /* mnt_want_write() is unnecessary here */ ++ err = xib_restore(sb); ++ mutex_unlock(&sbinfo->si_xib_mtx); ++ ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct au_xino *au_xino_alloc(unsigned int nfile) ++{ ++ struct au_xino *xi; ++ ++ xi = kzalloc(sizeof(*xi), GFP_NOFS); ++ if (unlikely(!xi)) ++ goto out; ++ xi->xi_nfile = nfile; ++ xi->xi_file = kcalloc(nfile, sizeof(*xi->xi_file), GFP_NOFS); ++ if (unlikely(!xi->xi_file)) ++ goto out_free; ++ ++ xi->xi_nondir.total = 8; /* initial size */ ++ xi->xi_nondir.array = kcalloc(xi->xi_nondir.total, sizeof(ino_t), ++ GFP_NOFS); ++ if (unlikely(!xi->xi_nondir.array)) ++ goto out_file; ++ ++ spin_lock_init(&xi->xi_nondir.spin); ++ init_waitqueue_head(&xi->xi_nondir.wqh); ++ mutex_init(&xi->xi_mtx); ++ INIT_HLIST_BL_HEAD(&xi->xi_writing); ++ atomic_set(&xi->xi_truncating, 0); ++ kref_init(&xi->xi_kref); ++ goto out; /* success */ ++ ++out_file: ++ au_kfree_try_rcu(xi->xi_file); ++out_free: ++ au_kfree_rcu(xi); ++ xi = NULL; ++out: ++ return xi; ++} ++ ++static int au_xino_init(struct au_branch *br, int idx, struct file *file) ++{ ++ int err; ++ struct au_xino *xi; ++ ++ err = 0; ++ xi = au_xino_alloc(idx + 1); ++ if (unlikely(!xi)) { ++ err = -ENOMEM; ++ goto out; ++ } ++ ++ if (file) ++ get_file(file); ++ xi->xi_file[idx] = file; ++ AuDebugOn(br->br_xino); ++ br->br_xino = xi; ++ ++out: ++ return err; ++} ++ ++static void au_xino_release(struct kref *kref) ++{ ++ struct au_xino *xi; ++ int i; ++ unsigned long ul; ++ struct hlist_bl_head *hbl; ++ struct hlist_bl_node *pos, *n; ++ struct au_xi_writing *p; ++ ++ xi = container_of(kref, struct au_xino, xi_kref); ++ for (i = 0; i < xi->xi_nfile; i++) ++ if (xi->xi_file[i]) ++ fput(xi->xi_file[i]); ++ for (i = xi->xi_nondir.total - 1; i >= 0; i--) ++ AuDebugOn(xi->xi_nondir.array[i]); ++ mutex_destroy(&xi->xi_mtx); ++ hbl = &xi->xi_writing; ++ ul = au_hbl_count(hbl); ++ if (unlikely(ul)) { ++ pr_warn("xi_writing %lu\n", ul); ++ hlist_bl_lock(hbl); ++ hlist_bl_for_each_entry_safe(p, pos, n, hbl, node) { ++ hlist_bl_del(&p->node); ++ /* kmemleak reported au_kfree_rcu() doesn't free it */ ++ kfree(p); ++ } ++ hlist_bl_unlock(hbl); ++ } ++ au_kfree_try_rcu(xi->xi_file); ++ au_kfree_try_rcu(xi->xi_nondir.array); ++ au_kfree_rcu(xi); ++} ++ ++int au_xino_put(struct au_branch *br) ++{ ++ int ret; ++ struct au_xino *xi; ++ ++ ret = 0; ++ xi = br->br_xino; ++ if (xi) { ++ br->br_xino = NULL; ++ ret = kref_put(&xi->xi_kref, au_xino_release); ++ } ++ ++ return ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * xino mount option handlers ++ */ ++ ++/* xino bitmap */ ++static void xino_clear_xib(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ if (sbinfo->si_xib) ++ fput(sbinfo->si_xib); ++ sbinfo->si_xib = NULL; ++ if (sbinfo->si_xib_buf) ++ free_page((unsigned long)sbinfo->si_xib_buf); ++ sbinfo->si_xib_buf = NULL; ++} ++ ++static int au_xino_set_xib(struct super_block *sb, struct path *path) ++{ ++ int err; ++ loff_t pos; ++ struct au_sbinfo *sbinfo; ++ struct file *file; ++ struct super_block *xi_sb; ++ ++ SiMustWriteLock(sb); ++ ++ sbinfo = au_sbi(sb); ++ file = au_xino_create2(sb, path, sbinfo->si_xib); ++ err = PTR_ERR(file); ++ if (IS_ERR(file)) ++ goto out; ++ if (sbinfo->si_xib) ++ fput(sbinfo->si_xib); ++ sbinfo->si_xib = file; ++ xi_sb = file_inode(file)->i_sb; ++ sbinfo->si_ximaxent = xi_sb->s_maxbytes; ++ if (unlikely(sbinfo->si_ximaxent < PAGE_SIZE)) { ++ err = -EIO; ++ pr_err("s_maxbytes(%llu) on %s is too small\n", ++ (u64)sbinfo->si_ximaxent, au_sbtype(xi_sb)); ++ goto out_unset; ++ } ++ sbinfo->si_ximaxent /= sizeof(ino_t); ++ ++ err = -ENOMEM; ++ if (!sbinfo->si_xib_buf) ++ sbinfo->si_xib_buf = (void *)get_zeroed_page(GFP_NOFS); ++ if (unlikely(!sbinfo->si_xib_buf)) ++ goto out_unset; ++ ++ sbinfo->si_xib_last_pindex = 0; ++ sbinfo->si_xib_next_bit = 0; ++ if (vfsub_f_size_read(file) < PAGE_SIZE) { ++ pos = 0; ++ err = xino_fwrite(file, sbinfo->si_xib_buf, PAGE_SIZE, &pos); ++ if (unlikely(err != PAGE_SIZE)) ++ goto out_free; ++ } ++ err = 0; ++ goto out; /* success */ ++ ++out_free: ++ if (sbinfo->si_xib_buf) ++ free_page((unsigned long)sbinfo->si_xib_buf); ++ sbinfo->si_xib_buf = NULL; ++ if (err >= 0) ++ err = -EIO; ++out_unset: ++ fput(sbinfo->si_xib); ++ sbinfo->si_xib = NULL; ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++/* xino for each branch */ ++static void xino_clear_br(struct super_block *sb) ++{ ++ aufs_bindex_t bindex, bbot; ++ struct au_branch *br; ++ ++ bbot = au_sbbot(sb); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ AuDebugOn(!br); ++ au_xino_put(br); ++ } ++} ++ ++static void au_xino_set_br_shared(struct super_block *sb, struct au_branch *br, ++ aufs_bindex_t bshared) ++{ ++ struct au_branch *brshared; ++ ++ brshared = au_sbr(sb, bshared); ++ AuDebugOn(!brshared->br_xino); ++ AuDebugOn(!brshared->br_xino->xi_file); ++ if (br->br_xino != brshared->br_xino) { ++ au_xino_get(brshared); ++ au_xino_put(br); ++ br->br_xino = brshared->br_xino; ++ } ++} ++ ++struct au_xino_do_set_br { ++ struct au_branch *br; ++ ino_t h_ino; ++ aufs_bindex_t bshared; ++}; ++ ++static int au_xino_do_set_br(struct super_block *sb, struct path *path, ++ struct au_xino_do_set_br *args) ++{ ++ int err; ++ struct au_xi_calc calc; ++ struct file *file; ++ struct au_branch *br; ++ struct au_xi_new xinew = { ++ .base = path ++ }; ++ ++ br = args->br; ++ xinew.xi = br->br_xino; ++ au_xi_calc(sb, args->h_ino, &calc); ++ xinew.copy_src = au_xino_file(xinew.xi, calc.idx); ++ if (args->bshared >= 0) ++ /* shared xino */ ++ au_xino_set_br_shared(sb, br, args->bshared); ++ else if (!xinew.xi) { ++ /* new xino */ ++ err = au_xino_init(br, calc.idx, xinew.copy_src); ++ if (unlikely(err)) ++ goto out; ++ } ++ ++ /* force re-creating */ ++ xinew.xi = br->br_xino; ++ xinew.idx = calc.idx; ++ mutex_lock(&xinew.xi->xi_mtx); ++ file = au_xi_new(sb, &xinew); ++ mutex_unlock(&xinew.xi->xi_mtx); ++ err = PTR_ERR(file); ++ if (IS_ERR(file)) ++ goto out; ++ AuDebugOn(!file); ++ ++ err = au_xino_do_write(file, &calc, AUFS_ROOT_INO); ++ if (unlikely(err)) ++ au_xino_put(br); ++ ++out: ++ AuTraceErr(err); ++ return err; ++} ++ ++static int au_xino_set_br(struct super_block *sb, struct path *path) ++{ ++ int err; ++ aufs_bindex_t bindex, bbot; ++ struct au_xino_do_set_br args; ++ struct inode *inode; ++ ++ SiMustWriteLock(sb); ++ ++ bbot = au_sbbot(sb); ++ inode = d_inode(sb->s_root); ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ args.h_ino = au_h_iptr(inode, bindex)->i_ino; ++ args.br = au_sbr(sb, bindex); ++ args.bshared = is_sb_shared(sb, bindex, bindex - 1); ++ err = au_xino_do_set_br(sb, path, &args); ++ if (unlikely(err)) ++ break; ++ } ++ ++ AuTraceErr(err); ++ return err; ++} ++ ++void au_xino_clr(struct super_block *sb) ++{ ++ struct au_sbinfo *sbinfo; ++ ++ au_xigen_clr(sb); ++ xino_clear_xib(sb); ++ xino_clear_br(sb); ++ dbgaufs_brs_del(sb, 0); ++ sbinfo = au_sbi(sb); ++ /* lvalue, do not call au_mntflags() */ ++ au_opt_clr(sbinfo->si_mntflags, XINO); ++} ++ ++int au_xino_set(struct super_block *sb, struct au_opt_xino *xiopt, int remount) ++{ ++ int err, skip; ++ struct dentry *dentry, *parent, *cur_dentry, *cur_parent; ++ struct qstr *dname, *cur_name; ++ struct file *cur_xino; ++ struct au_sbinfo *sbinfo; ++ struct path *path, *cur_path; ++ ++ SiMustWriteLock(sb); ++ ++ err = 0; ++ sbinfo = au_sbi(sb); ++ path = &xiopt->file->f_path; ++ dentry = path->dentry; ++ parent = dget_parent(dentry); ++ if (remount) { ++ skip = 0; ++ cur_xino = sbinfo->si_xib; ++ if (cur_xino) { ++ cur_path = &cur_xino->f_path; ++ cur_dentry = cur_path->dentry; ++ cur_parent = dget_parent(cur_dentry); ++ cur_name = &cur_dentry->d_name; ++ dname = &dentry->d_name; ++ skip = (cur_parent == parent ++ && au_qstreq(dname, cur_name)); ++ dput(cur_parent); ++ } ++ if (skip) ++ goto out; ++ } ++ ++ au_opt_set(sbinfo->si_mntflags, XINO); ++ err = au_xino_set_xib(sb, path); ++ /* si_x{read,write} are set */ ++ if (!err) ++ err = au_xigen_set(sb, path); ++ if (!err) ++ err = au_xino_set_br(sb, path); ++ if (!err) { ++ dbgaufs_brs_add(sb, 0, /*topdown*/1); ++ goto out; /* success */ ++ } ++ ++ /* reset all */ ++ AuIOErr("failed setting xino(%d).\n", err); ++ au_xino_clr(sb); ++ ++out: ++ dput(parent); ++ return err; ++} ++ ++/* ++ * create a xinofile at the default place/path. ++ */ ++struct file *au_xino_def(struct super_block *sb) ++{ ++ struct file *file; ++ char *page, *p; ++ struct au_branch *br; ++ struct super_block *h_sb; ++ struct path path; ++ aufs_bindex_t bbot, bindex, bwr; ++ ++ br = NULL; ++ bbot = au_sbbot(sb); ++ bwr = -1; ++ for (bindex = 0; bindex <= bbot; bindex++) { ++ br = au_sbr(sb, bindex); ++ if (au_br_writable(br->br_perm) ++ && !au_test_fs_bad_xino(au_br_sb(br))) { ++ bwr = bindex; ++ break; ++ } ++ } ++ ++ if (bwr >= 0) { ++ file = ERR_PTR(-ENOMEM); ++ page = (void *)__get_free_page(GFP_NOFS); ++ if (unlikely(!page)) ++ goto out; ++ path.mnt = au_br_mnt(br); ++ path.dentry = au_h_dptr(sb->s_root, bwr); ++ p = d_path(&path, page, PATH_MAX - sizeof(AUFS_XINO_FNAME)); ++ file = (void *)p; ++ if (!IS_ERR(p)) { ++ strcat(p, "/" AUFS_XINO_FNAME); ++ AuDbg("%s\n", p); ++ file = au_xino_create(sb, p, /*silent*/0, /*wbrtop*/1); ++ } ++ free_page((unsigned long)page); ++ } else { ++ file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0, ++ /*wbrtop*/0); ++ if (IS_ERR(file)) ++ goto out; ++ h_sb = file->f_path.dentry->d_sb; ++ if (unlikely(au_test_fs_bad_xino(h_sb))) { ++ pr_err("xino doesn't support %s(%s)\n", ++ AUFS_XINO_DEFPATH, au_sbtype(h_sb)); ++ fput(file); ++ file = ERR_PTR(-EINVAL); ++ } ++ } ++ ++out: ++ return file; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * initialize the xinofile for the specified branch @br ++ * at the place/path where @base_file indicates. ++ * test whether another branch is on the same filesystem or not, ++ * if found then share the xinofile with another branch. ++ */ ++int au_xino_init_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, ++ struct path *base) ++{ ++ int err; ++ struct au_xino_do_set_br args = { ++ .h_ino = h_ino, ++ .br = br ++ }; ++ ++ args.bshared = sbr_find_shared(sb, /*btop*/0, au_sbbot(sb), ++ au_br_sb(br)); ++ err = au_xino_do_set_br(sb, base, &args); ++ if (unlikely(err)) ++ au_xino_put(br); ++ ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ++ * get an unused inode number from bitmap ++ */ ++ino_t au_xino_new_ino(struct super_block *sb) ++{ ++ ino_t ino; ++ unsigned long *p, pindex, ul, pend; ++ struct au_sbinfo *sbinfo; ++ struct file *file; ++ int free_bit, err; ++ ++ if (!au_opt_test(au_mntflags(sb), XINO)) ++ return iunique(sb, AUFS_FIRST_INO); ++ ++ sbinfo = au_sbi(sb); ++ mutex_lock(&sbinfo->si_xib_mtx); ++ p = sbinfo->si_xib_buf; ++ free_bit = sbinfo->si_xib_next_bit; ++ if (free_bit < page_bits && !test_bit(free_bit, p)) ++ goto out; /* success */ ++ free_bit = find_first_zero_bit(p, page_bits); ++ if (free_bit < page_bits) ++ goto out; /* success */ ++ ++ pindex = sbinfo->si_xib_last_pindex; ++ for (ul = pindex - 1; ul < ULONG_MAX; ul--) { ++ err = xib_pindex(sb, ul); ++ if (unlikely(err)) ++ goto out_err; ++ free_bit = find_first_zero_bit(p, page_bits); ++ if (free_bit < page_bits) ++ goto out; /* success */ ++ } ++ ++ file = sbinfo->si_xib; ++ pend = vfsub_f_size_read(file) / PAGE_SIZE; ++ for (ul = pindex + 1; ul <= pend; ul++) { ++ err = xib_pindex(sb, ul); ++ if (unlikely(err)) ++ goto out_err; ++ free_bit = find_first_zero_bit(p, page_bits); ++ if (free_bit < page_bits) ++ goto out; /* success */ ++ } ++ BUG(); ++ ++out: ++ set_bit(free_bit, p); ++ sbinfo->si_xib_next_bit = free_bit + 1; ++ pindex = sbinfo->si_xib_last_pindex; ++ mutex_unlock(&sbinfo->si_xib_mtx); ++ ino = xib_calc_ino(pindex, free_bit); ++ AuDbg("i%lu\n", (unsigned long)ino); ++ return ino; ++out_err: ++ mutex_unlock(&sbinfo->si_xib_mtx); ++ AuDbg("i0\n"); ++ return 0; ++} ++ ++/* for s_op->delete_inode() */ ++void au_xino_delete_inode(struct inode *inode, const int unlinked) ++{ ++ int err; ++ unsigned int mnt_flags; ++ aufs_bindex_t bindex, bbot, bi; ++ unsigned char try_trunc; ++ struct au_iinfo *iinfo; ++ struct super_block *sb; ++ struct au_hinode *hi; ++ struct inode *h_inode; ++ struct au_branch *br; ++ struct au_xi_calc calc; ++ struct file *file; ++ ++ AuDebugOn(au_is_bad_inode(inode)); ++ ++ sb = inode->i_sb; ++ mnt_flags = au_mntflags(sb); ++ if (!au_opt_test(mnt_flags, XINO) ++ || inode->i_ino == AUFS_ROOT_INO) ++ return; ++ ++ if (unlinked) { ++ au_xigen_inc(inode); ++ au_xib_clear_bit(inode); ++ } ++ ++ iinfo = au_ii(inode); ++ bindex = iinfo->ii_btop; ++ if (bindex < 0) ++ return; ++ ++ try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); ++ hi = au_hinode(iinfo, bindex); ++ bbot = iinfo->ii_bbot; ++ for (; bindex <= bbot; bindex++, hi++) { ++ h_inode = hi->hi_inode; ++ if (!h_inode ++ || (!unlinked && h_inode->i_nlink)) ++ continue; ++ ++ /* inode may not be revalidated */ ++ bi = au_br_index(sb, hi->hi_id); ++ if (bi < 0) ++ continue; ++ ++ br = au_sbr(sb, bi); ++ au_xi_calc(sb, h_inode->i_ino, &calc); ++ file = au_xino_file(br->br_xino, calc.idx); ++ if (IS_ERR_OR_NULL(file)) ++ continue; ++ ++ err = au_xino_do_write(file, &calc, /*ino*/0); ++ if (!err && try_trunc ++ && au_test_fs_trunc_xino(au_br_sb(br))) ++ xino_try_trunc(sb, br); ++ } ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int au_xinondir_find(struct au_xino *xi, ino_t h_ino) ++{ ++ int found, total, i; ++ ++ found = -1; ++ total = xi->xi_nondir.total; ++ for (i = 0; i < total; i++) { ++ if (xi->xi_nondir.array[i] != h_ino) ++ continue; ++ found = i; ++ break; ++ } ++ ++ return found; ++} ++ ++static int au_xinondir_expand(struct au_xino *xi) ++{ ++ int err, sz; ++ ino_t *p; ++ ++ BUILD_BUG_ON(KMALLOC_MAX_SIZE > INT_MAX); ++ ++ err = -ENOMEM; ++ sz = xi->xi_nondir.total * sizeof(ino_t); ++ if (unlikely(sz > KMALLOC_MAX_SIZE / 2)) ++ goto out; ++ p = au_kzrealloc(xi->xi_nondir.array, sz, sz << 1, GFP_ATOMIC, ++ /*may_shrink*/0); ++ if (p) { ++ xi->xi_nondir.array = p; ++ xi->xi_nondir.total <<= 1; ++ AuDbg("xi_nondir.total %d\n", xi->xi_nondir.total); ++ err = 0; ++ } ++ ++out: ++ return err; ++} ++ ++void au_xinondir_leave(struct super_block *sb, aufs_bindex_t bindex, ++ ino_t h_ino, int idx) ++{ ++ struct au_xino *xi; ++ ++ AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); ++ xi = au_sbr(sb, bindex)->br_xino; ++ AuDebugOn(idx < 0 || xi->xi_nondir.total <= idx); ++ ++ spin_lock(&xi->xi_nondir.spin); ++ AuDebugOn(xi->xi_nondir.array[idx] != h_ino); ++ xi->xi_nondir.array[idx] = 0; ++ spin_unlock(&xi->xi_nondir.spin); ++ wake_up_all(&xi->xi_nondir.wqh); ++} ++ ++int au_xinondir_enter(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, ++ int *idx) ++{ ++ int err, found, empty; ++ struct au_xino *xi; ++ ++ err = 0; ++ *idx = -1; ++ if (!au_opt_test(au_mntflags(sb), XINO)) ++ goto out; /* no xino */ ++ ++ xi = au_sbr(sb, bindex)->br_xino; ++ ++again: ++ spin_lock(&xi->xi_nondir.spin); ++ found = au_xinondir_find(xi, h_ino); ++ if (found == -1) { ++ empty = au_xinondir_find(xi, /*h_ino*/0); ++ if (empty == -1) { ++ empty = xi->xi_nondir.total; ++ err = au_xinondir_expand(xi); ++ if (unlikely(err)) ++ goto out_unlock; ++ } ++ xi->xi_nondir.array[empty] = h_ino; ++ *idx = empty; ++ } else { ++ spin_unlock(&xi->xi_nondir.spin); ++ wait_event(xi->xi_nondir.wqh, ++ xi->xi_nondir.array[found] != h_ino); ++ goto again; ++ } ++ ++out_unlock: ++ spin_unlock(&xi->xi_nondir.spin); ++out: ++ return err; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++int au_xino_path(struct seq_file *seq, struct file *file) ++{ ++ int err; ++ ++ err = au_seq_path(seq, &file->f_path); ++ if (unlikely(err)) ++ goto out; ++ ++#define Deleted "\\040(deleted)" ++ seq->count -= sizeof(Deleted) - 1; ++ AuDebugOn(memcmp(seq->buf + seq->count, Deleted, ++ sizeof(Deleted) - 1)); ++#undef Deleted ++ ++out: ++ return err; ++} +diff -Naur null/include/uapi/linux/aufs_type.h linux-5.15.36/include/uapi/linux/aufs_type.h +--- /dev/null ++++ linux-5.15.36/include/uapi/linux/aufs_type.h 2022-05-10 16:51:39.879744219 +0300 +@@ -0,0 +1,452 @@ ++/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ ++/* ++ * Copyright (C) 2005-2021 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ */ ++ ++#ifndef __AUFS_TYPE_H__ ++#define __AUFS_TYPE_H__ ++ ++#define AUFS_NAME "aufs" ++ ++#ifdef __KERNEL__ ++/* ++ * define it before including all other headers. ++ * sched.h may use pr_* macros before defining "current", so define the ++ * no-current version first, and re-define later. ++ */ ++#define pr_fmt(fmt) AUFS_NAME " %s:%d: " fmt, __func__, __LINE__ ++#include ++#undef pr_fmt ++#define pr_fmt(fmt) \ ++ AUFS_NAME " %s:%d:%.*s[%d]: " fmt, __func__, __LINE__, \ ++ (int)sizeof(current->comm), current->comm, current->pid ++#include ++#else ++#include ++#include ++#include ++#endif /* __KERNEL__ */ ++ ++#define AUFS_VERSION "5.15.36-20220509" ++ ++/* todo? move this to linux-2.6.19/include/magic.h */ ++#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef __KERNEL__ ++#ifdef CONFIG_AUFS_BRANCH_MAX_127 ++typedef int8_t aufs_bindex_t; ++#define AUFS_BRANCH_MAX 127 ++#else ++typedef int16_t aufs_bindex_t; ++#ifdef CONFIG_AUFS_BRANCH_MAX_511 ++#define AUFS_BRANCH_MAX 511 ++#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) ++#define AUFS_BRANCH_MAX 1023 ++#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) ++#define AUFS_BRANCH_MAX 32767 ++#endif ++#endif ++ ++#ifndef AUFS_BRANCH_MAX ++#error unknown CONFIG_AUFS_BRANCH_MAX value ++#endif ++#endif /* __KERNEL__ */ ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define AUFS_FSTYPE AUFS_NAME ++ ++#define AUFS_ROOT_INO 2 ++#define AUFS_FIRST_INO 11 ++ ++#define AUFS_WH_PFX ".wh." ++#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) ++#define AUFS_WH_TMP_LEN 4 ++/* a limit for rmdir/rename a dir and copyup */ ++#define AUFS_MAX_NAMELEN (NAME_MAX \ ++ - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ ++ - 1 /* dot */\ ++ - AUFS_WH_TMP_LEN) /* hex */ ++#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" ++#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME ++#define AUFS_XINO_DEF_SEC 30 /* seconds */ ++#define AUFS_XINO_DEF_TRUNC 45 /* percentage */ ++#define AUFS_DIRWH_DEF 3 ++#define AUFS_RDCACHE_DEF 10 /* seconds */ ++#define AUFS_RDCACHE_MAX 3600 /* seconds */ ++#define AUFS_RDBLK_DEF 512 /* bytes */ ++#define AUFS_RDHASH_DEF 32 ++#define AUFS_WKQ_NAME AUFS_NAME "d" ++#define AUFS_MFS_DEF_SEC 30 /* seconds */ ++#define AUFS_MFS_MAX_SEC 3600 /* seconds */ ++#define AUFS_FHSM_CACHE_DEF_SEC 30 /* seconds */ ++#define AUFS_PLINK_WARN 50 /* number of plinks in a single bucket */ ++ ++/* pseudo-link maintenace under /proc */ ++#define AUFS_PLINK_MAINT_NAME "plink_maint" ++#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME ++#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME ++ ++/* dirren, renamed dir */ ++#define AUFS_DR_INFO_PFX AUFS_WH_PFX ".dr." ++#define AUFS_DR_BRHINO_NAME AUFS_WH_PFX "hino" ++/* whiteouted doubly */ ++#define AUFS_WH_DR_INFO_PFX AUFS_WH_PFX AUFS_DR_INFO_PFX ++#define AUFS_WH_DR_BRHINO AUFS_WH_PFX AUFS_DR_BRHINO_NAME ++ ++#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ ++#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME ++ ++#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME ++#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" ++#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" ++ ++/* doubly whiteouted */ ++#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME ++#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME ++#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME ++ ++/* branch permissions and attributes */ ++#define AUFS_BRPERM_RW "rw" ++#define AUFS_BRPERM_RO "ro" ++#define AUFS_BRPERM_RR "rr" ++#define AUFS_BRATTR_COO_REG "coo_reg" ++#define AUFS_BRATTR_COO_ALL "coo_all" ++#define AUFS_BRATTR_FHSM "fhsm" ++#define AUFS_BRATTR_UNPIN "unpin" ++#define AUFS_BRATTR_ICEX "icex" ++#define AUFS_BRATTR_ICEX_SEC "icexsec" ++#define AUFS_BRATTR_ICEX_SYS "icexsys" ++#define AUFS_BRATTR_ICEX_TR "icextr" ++#define AUFS_BRATTR_ICEX_USR "icexusr" ++#define AUFS_BRATTR_ICEX_OTH "icexoth" ++#define AUFS_BRRATTR_WH "wh" ++#define AUFS_BRWATTR_NLWH "nolwh" ++#define AUFS_BRWATTR_MOO "moo" ++ ++#define AuBrPerm_RW 1 /* writable, hardlinkable wh */ ++#define AuBrPerm_RO (1 << 1) /* readonly */ ++#define AuBrPerm_RR (1 << 2) /* natively readonly */ ++#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR) ++ ++#define AuBrAttr_COO_REG (1 << 3) /* copy-up on open */ ++#define AuBrAttr_COO_ALL (1 << 4) ++#define AuBrAttr_COO_Mask (AuBrAttr_COO_REG | AuBrAttr_COO_ALL) ++ ++#define AuBrAttr_FHSM (1 << 5) /* file-based hsm */ ++#define AuBrAttr_UNPIN (1 << 6) /* rename-able top dir of ++ branch. meaningless since ++ linux-3.18-rc1 */ ++ ++/* ignore error in copying XATTR */ ++#define AuBrAttr_ICEX_SEC (1 << 7) ++#define AuBrAttr_ICEX_SYS (1 << 8) ++#define AuBrAttr_ICEX_TR (1 << 9) ++#define AuBrAttr_ICEX_USR (1 << 10) ++#define AuBrAttr_ICEX_OTH (1 << 11) ++#define AuBrAttr_ICEX (AuBrAttr_ICEX_SEC \ ++ | AuBrAttr_ICEX_SYS \ ++ | AuBrAttr_ICEX_TR \ ++ | AuBrAttr_ICEX_USR \ ++ | AuBrAttr_ICEX_OTH) ++ ++#define AuBrRAttr_WH (1 << 12) /* whiteout-able */ ++#define AuBrRAttr_Mask AuBrRAttr_WH ++ ++#define AuBrWAttr_NoLinkWH (1 << 13) /* un-hardlinkable whiteouts */ ++#define AuBrWAttr_MOO (1 << 14) /* move-up on open */ ++#define AuBrWAttr_Mask (AuBrWAttr_NoLinkWH | AuBrWAttr_MOO) ++ ++#define AuBrAttr_CMOO_Mask (AuBrAttr_COO_Mask | AuBrWAttr_MOO) ++ ++/* #warning test userspace */ ++#ifdef __KERNEL__ ++#ifndef CONFIG_AUFS_FHSM ++#undef AuBrAttr_FHSM ++#define AuBrAttr_FHSM 0 ++#endif ++#ifndef CONFIG_AUFS_XATTR ++#undef AuBrAttr_ICEX ++#define AuBrAttr_ICEX 0 ++#undef AuBrAttr_ICEX_SEC ++#define AuBrAttr_ICEX_SEC 0 ++#undef AuBrAttr_ICEX_SYS ++#define AuBrAttr_ICEX_SYS 0 ++#undef AuBrAttr_ICEX_TR ++#define AuBrAttr_ICEX_TR 0 ++#undef AuBrAttr_ICEX_USR ++#define AuBrAttr_ICEX_USR 0 ++#undef AuBrAttr_ICEX_OTH ++#define AuBrAttr_ICEX_OTH 0 ++#endif ++#endif ++ ++/* the longest combination */ ++/* AUFS_BRATTR_ICEX and AUFS_BRATTR_ICEX_TR don't affect here */ ++#define AuBrPermStrSz sizeof(AUFS_BRPERM_RW \ ++ "+" AUFS_BRATTR_COO_REG \ ++ "+" AUFS_BRATTR_FHSM \ ++ "+" AUFS_BRATTR_UNPIN \ ++ "+" AUFS_BRATTR_ICEX_SEC \ ++ "+" AUFS_BRATTR_ICEX_SYS \ ++ "+" AUFS_BRATTR_ICEX_USR \ ++ "+" AUFS_BRATTR_ICEX_OTH \ ++ "+" AUFS_BRWATTR_NLWH) ++ ++typedef struct { ++ char a[AuBrPermStrSz]; ++} au_br_perm_str_t; ++ ++static inline int au_br_writable(int brperm) ++{ ++ return brperm & AuBrPerm_RW; ++} ++ ++static inline int au_br_whable(int brperm) ++{ ++ return brperm & (AuBrPerm_RW | AuBrRAttr_WH); ++} ++ ++static inline int au_br_wh_linkable(int brperm) ++{ ++ return !(brperm & AuBrWAttr_NoLinkWH); ++} ++ ++static inline int au_br_cmoo(int brperm) ++{ ++ return brperm & AuBrAttr_CMOO_Mask; ++} ++ ++static inline int au_br_fhsm(int brperm) ++{ ++ return brperm & AuBrAttr_FHSM; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ioctl */ ++enum { ++ /* readdir in userspace */ ++ AuCtl_RDU, ++ AuCtl_RDU_INO, ++ ++ AuCtl_WBR_FD, /* pathconf wrapper */ ++ AuCtl_IBUSY, /* busy inode */ ++ AuCtl_MVDOWN, /* move-down */ ++ AuCtl_BR, /* info about branches */ ++ AuCtl_FHSM_FD /* connection for fhsm */ ++}; ++ ++/* borrowed from linux/include/linux/kernel.h */ ++#ifndef ALIGN ++#ifdef _GNU_SOURCE ++#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) ++#else ++#define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) ++#endif ++#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) ++#endif ++ ++/* borrowed from linux/include/linux/compiler-gcc3.h */ ++#ifndef __aligned ++#define __aligned(x) __attribute__((aligned(x))) ++#endif ++ ++#ifdef __KERNEL__ ++#ifndef __packed ++#define __packed __attribute__((packed)) ++#endif ++#endif ++ ++struct au_rdu_cookie { ++ uint64_t h_pos; ++ int16_t bindex; ++ uint8_t flags; ++ uint8_t pad; ++ uint32_t generation; ++} __aligned(8); ++ ++struct au_rdu_ent { ++ uint64_t ino; ++ int16_t bindex; ++ uint8_t type; ++ uint8_t nlen; ++ uint8_t wh; ++ char name[]; ++} __aligned(8); ++ ++static inline int au_rdu_len(int nlen) ++{ ++ /* include the terminating NULL */ ++ return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, ++ sizeof(uint64_t)); ++} ++ ++union au_rdu_ent_ul { ++ struct au_rdu_ent __user *e; ++ uint64_t ul; ++}; ++ ++enum { ++ AufsCtlRduV_SZ, ++ AufsCtlRduV_End ++}; ++ ++struct aufs_rdu { ++ /* input */ ++ union { ++ uint64_t sz; /* AuCtl_RDU */ ++ uint64_t nent; /* AuCtl_RDU_INO */ ++ }; ++ union au_rdu_ent_ul ent; ++ uint16_t verify[AufsCtlRduV_End]; ++ ++ /* input/output */ ++ uint32_t blk; ++ ++ /* output */ ++ union au_rdu_ent_ul tail; ++ /* number of entries which were added in a single call */ ++ uint64_t rent; ++ uint8_t full; ++ uint8_t shwh; ++ ++ struct au_rdu_cookie cookie; ++} __aligned(8); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* dirren. the branch is identified by the filename who contains this */ ++struct au_drinfo { ++ uint64_t ino; ++ union { ++ uint8_t oldnamelen; ++ uint64_t _padding; ++ }; ++ uint8_t oldname[]; ++} __aligned(8); ++ ++struct au_drinfo_fdata { ++ uint32_t magic; ++ struct au_drinfo drinfo; ++} __aligned(8); ++ ++#define AUFS_DRINFO_MAGIC_V1 ('a' << 24 | 'd' << 16 | 'r' << 8 | 0x01) ++/* future */ ++#define AUFS_DRINFO_MAGIC_V2 ('a' << 24 | 'd' << 16 | 'r' << 8 | 0x02) ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct aufs_wbr_fd { ++ uint32_t oflags; ++ int16_t brid; ++} __aligned(8); ++ ++/* ---------------------------------------------------------------------- */ ++ ++struct aufs_ibusy { ++ uint64_t ino, h_ino; ++ int16_t bindex; ++} __aligned(8); ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* error code for move-down */ ++/* the actual message strings are implemented in aufs-util.git */ ++enum { ++ EAU_MVDOWN_OPAQUE = 1, ++ EAU_MVDOWN_WHITEOUT, ++ EAU_MVDOWN_UPPER, ++ EAU_MVDOWN_BOTTOM, ++ EAU_MVDOWN_NOUPPER, ++ EAU_MVDOWN_NOLOWERBR, ++ EAU_Last ++}; ++ ++/* flags for move-down */ ++#define AUFS_MVDOWN_DMSG 1 ++#define AUFS_MVDOWN_OWLOWER (1 << 1) /* overwrite lower */ ++#define AUFS_MVDOWN_KUPPER (1 << 2) /* keep upper */ ++#define AUFS_MVDOWN_ROLOWER (1 << 3) /* do even if lower is RO */ ++#define AUFS_MVDOWN_ROLOWER_R (1 << 4) /* did on lower RO */ ++#define AUFS_MVDOWN_ROUPPER (1 << 5) /* do even if upper is RO */ ++#define AUFS_MVDOWN_ROUPPER_R (1 << 6) /* did on upper RO */ ++#define AUFS_MVDOWN_BRID_UPPER (1 << 7) /* upper brid */ ++#define AUFS_MVDOWN_BRID_LOWER (1 << 8) /* lower brid */ ++#define AUFS_MVDOWN_FHSM_LOWER (1 << 9) /* find fhsm attr for lower */ ++#define AUFS_MVDOWN_STFS (1 << 10) /* req. stfs */ ++#define AUFS_MVDOWN_STFS_FAILED (1 << 11) /* output: stfs is unusable */ ++#define AUFS_MVDOWN_BOTTOM (1 << 12) /* output: no more lowers */ ++ ++/* index for move-down */ ++enum { ++ AUFS_MVDOWN_UPPER, ++ AUFS_MVDOWN_LOWER, ++ AUFS_MVDOWN_NARRAY ++}; ++ ++/* ++ * additional info of move-down ++ * number of free blocks and inodes. ++ * subset of struct kstatfs, but smaller and always 64bit. ++ */ ++struct aufs_stfs { ++ uint64_t f_blocks; ++ uint64_t f_bavail; ++ uint64_t f_files; ++ uint64_t f_ffree; ++}; ++ ++struct aufs_stbr { ++ int16_t brid; /* optional input */ ++ int16_t bindex; /* output */ ++ struct aufs_stfs stfs; /* output when AUFS_MVDOWN_STFS set */ ++} __aligned(8); ++ ++struct aufs_mvdown { ++ uint32_t flags; /* input/output */ ++ struct aufs_stbr stbr[AUFS_MVDOWN_NARRAY]; /* input/output */ ++ int8_t au_errno; /* output */ ++} __aligned(8); ++ ++/* ---------------------------------------------------------------------- */ ++ ++union aufs_brinfo { ++ /* PATH_MAX may differ between kernel-space and user-space */ ++ char _spacer[4096]; ++ struct { ++ int16_t id; ++ int perm; ++ char path[]; ++ }; ++} __aligned(8); ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define AuCtlType 'A' ++#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) ++#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) ++#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ ++ struct aufs_wbr_fd) ++#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) ++#define AUFS_CTL_MVDOWN _IOWR(AuCtlType, AuCtl_MVDOWN, \ ++ struct aufs_mvdown) ++#define AUFS_CTL_BRINFO _IOW(AuCtlType, AuCtl_BR, union aufs_brinfo) ++#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) ++ ++#endif /* __AUFS_TYPE_H__ */ diff --git a/kernel/tools/perf/files/patches/aufs5/tmpfs-idr.patch b/kernel/tools/perf/files/patches/aufs5/tmpfs-idr.patch new file mode 100644 index 0000000000..be89bbeeaa --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/tmpfs-idr.patch @@ -0,0 +1,221 @@ +SPDX-License-Identifier: GPL-2.0 + +diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h +index 166158b6e917..0e9606171432 100644 +--- a/include/linux/shmem_fs.h ++++ b/include/linux/shmem_fs.h +@@ -28,10 +28,13 @@ struct shmem_inode_info { + }; + + struct shmem_sb_info { ++ struct mutex idr_lock; ++ bool idr_nouse; ++ struct idr idr; /* manages inode-number */ + unsigned long max_blocks; /* How many blocks are allowed */ + struct percpu_counter used_blocks; /* How many are allocated */ +- unsigned long max_inodes; /* How many inodes are allowed */ +- unsigned long free_inodes; /* How many are left for allocation */ ++ int max_inodes; /* How many inodes are allowed */ ++ int free_inodes; /* How many are left for allocation */ + raw_spinlock_t stat_lock; /* Serialize shmem_sb_info changes */ + umode_t mode; /* Mount mode for root directory */ + unsigned char huge; /* Whether to try for hugepages */ +diff --git a/mm/shmem.c b/mm/shmem.c +index 1609a8daba26..b3e5f52a5aa2 100644 +--- a/mm/shmem.c ++++ b/mm/shmem.c +@@ -108,7 +108,7 @@ struct shmem_falloc { + + struct shmem_options { + unsigned long long blocks; +- unsigned long long inodes; ++ int inodes; + struct mempolicy *mpol; + kuid_t uid; + kgid_t gid; +@@ -128,11 +128,14 @@ static unsigned long shmem_default_max_blocks(void) + return totalram_pages() / 2; + } + +-static unsigned long shmem_default_max_inodes(void) ++static int shmem_default_max_inodes(void) + { + unsigned long nr_pages = totalram_pages(); ++ unsigned long ul; + +- return min(nr_pages - totalhigh_pages(), nr_pages / 2); ++ ul = INT_MAX; ++ ul = min3(ul, nr_pages - totalhigh_pages(), nr_pages / 2); ++ return ul; + } + #endif + +@@ -1165,6 +1168,11 @@ static void shmem_evict_inode(struct inode *inode) + + simple_xattrs_free(&info->xattrs); + WARN_ON(inode->i_blocks); ++ if (!sbinfo->idr_nouse && inode->i_ino) { ++ mutex_lock(&sbinfo->idr_lock); ++ idr_remove(&sbinfo->idr, inode->i_ino); ++ mutex_unlock(&sbinfo->idr_lock); ++ } + shmem_free_inode(inode->i_sb); + clear_inode(inode); + } +@@ -2336,6 +2344,25 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode + break; + } + ++ if (!sbinfo->idr_nouse) { ++ /* inum 0 and 1 are unused */ ++ mutex_lock(&sbinfo->idr_lock); ++ ino = idr_alloc(&sbinfo->idr, inode, 2, INT_MAX, ++ GFP_NOFS); ++ if (ino > 0) { ++ inode->i_ino = ino; ++ mutex_unlock(&sbinfo->idr_lock); ++ __insert_inode_hash(inode, inode->i_ino); ++ } else { ++ inode->i_ino = 0; ++ mutex_unlock(&sbinfo->idr_lock); ++ iput(inode); ++ /* shmem_free_inode() will be called */ ++ inode = NULL; ++ } ++ } else ++ inode->i_ino = ino; ++ + lockdep_annotate_inode_mutex_key(inode); + } else + shmem_free_inode(sb); +@@ -3250,8 +3277,7 @@ static struct dentry *shmem_get_parent(struct dentry *child) + static int shmem_match(struct inode *ino, void *vfh) + { + __u32 *fh = vfh; +- __u64 inum = fh[2]; +- inum = (inum << 32) | fh[1]; ++ __u64 inum = fh[1]; + return ino->i_ino == inum && fh[0] == ino->i_generation; + } + +@@ -3271,14 +3297,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, + struct dentry *dentry = NULL; + u64 inum; + +- if (fh_len < 3) ++ if (fh_len < 2) + return NULL; + +- inum = fid->raw[2]; +- inum = (inum << 32) | fid->raw[1]; +- +- inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), +- shmem_match, fid->raw); ++ inum = fid->raw[1]; ++ inode = ilookup5(sb, inum, shmem_match, fid->raw); + if (inode) { + dentry = shmem_find_alias(inode); + iput(inode); +@@ -3290,30 +3313,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, + static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len, + struct inode *parent) + { +- if (*len < 3) { +- *len = 3; ++ if (*len < 2) { ++ *len = 2; + return FILEID_INVALID; + } + +- if (inode_unhashed(inode)) { +- /* Unfortunately insert_inode_hash is not idempotent, +- * so as we hash inodes here rather than at creation +- * time, we need a lock to ensure we only try +- * to do it once +- */ +- static DEFINE_SPINLOCK(lock); +- spin_lock(&lock); +- if (inode_unhashed(inode)) +- __insert_inode_hash(inode, +- inode->i_ino + inode->i_generation); +- spin_unlock(&lock); +- } +- + fh[0] = inode->i_generation; + fh[1] = inode->i_ino; +- fh[2] = ((__u64)inode->i_ino) >> 32; + +- *len = 3; ++ *len = 2; + return 1; + } + +@@ -3392,7 +3400,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param) + break; + case Opt_nr_inodes: + ctx->inodes = memparse(param->string, &rest); +- if (*rest) ++ if (*rest || ctx->inodes < 2) + goto bad_value; + ctx->seen |= SHMEM_SEEN_INODES; + break; +@@ -3502,7 +3510,7 @@ static int shmem_reconfigure(struct fs_context *fc) + { + struct shmem_options *ctx = fc->fs_private; + struct shmem_sb_info *sbinfo = SHMEM_SB(fc->root->d_sb); +- unsigned long inodes; ++ int inodes; + struct mempolicy *mpol = NULL; + const char *err; + +@@ -3571,7 +3579,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root) + seq_printf(seq, ",size=%luk", + sbinfo->max_blocks << (PAGE_SHIFT - 10)); + if (sbinfo->max_inodes != shmem_default_max_inodes()) +- seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes); ++ seq_printf(seq, ",nr_inodes=%d", sbinfo->max_inodes); + if (sbinfo->mode != (0777 | S_ISVTX)) + seq_printf(seq, ",mode=%03ho", sbinfo->mode); + if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID)) +@@ -3618,6 +3626,8 @@ static void shmem_put_super(struct super_block *sb) + { + struct shmem_sb_info *sbinfo = SHMEM_SB(sb); + ++ if (!sbinfo->idr_nouse) ++ idr_destroy(&sbinfo->idr); + free_percpu(sbinfo->ino_batch); + percpu_counter_destroy(&sbinfo->used_blocks); + mpol_put(sbinfo->mpol); +@@ -3660,6 +3670,8 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) + #else + sb->s_flags |= SB_NOUSER; + #endif ++ mutex_init(&sbinfo->idr_lock); ++ idr_init(&sbinfo->idr); + sbinfo->max_blocks = ctx->blocks; + sbinfo->free_inodes = sbinfo->max_inodes = ctx->inodes; + if (sb->s_flags & SB_KERNMOUNT) { +@@ -3777,6 +3789,15 @@ static void shmem_destroy_inodecache(void) + kmem_cache_destroy(shmem_inode_cachep); + } + ++static __init void shmem_no_idr(struct super_block *sb) ++{ ++ struct shmem_sb_info *sbinfo; ++ ++ sbinfo = SHMEM_SB(sb); ++ sbinfo->idr_nouse = true; ++ idr_destroy(&sbinfo->idr); ++} ++ + const struct address_space_operations shmem_aops = { + .writepage = shmem_writepage, + .set_page_dirty = __set_page_dirty_no_writeback, +@@ -3918,6 +3939,7 @@ int __init shmem_init(void) + pr_err("Could not kern_mount tmpfs\n"); + goto out1; + } ++ shmem_no_idr(shm_mnt->mnt_sb); + + #ifdef CONFIG_TRANSPARENT_HUGEPAGE + if (has_transparent_hugepage() && shmem_huge > SHMEM_HUGE_DENY) diff --git a/kernel/tools/perf/files/patches/aufs5/vfs-ino.patch b/kernel/tools/perf/files/patches/aufs5/vfs-ino.patch new file mode 100644 index 0000000000..992d86c106 --- /dev/null +++ b/kernel/tools/perf/files/patches/aufs5/vfs-ino.patch @@ -0,0 +1,24 @@ +SPDX-License-Identifier: GPL-2.0 + +diff --git a/fs/inode.c b/fs/inode.c +index 9abc88d7959c..82b13641423c 100644 +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -904,6 +904,8 @@ unsigned int get_next_ino(void) + unsigned int *p = &get_cpu_var(last_ino); + unsigned int res = *p; + ++start: ++ + #ifdef CONFIG_SMP + if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) { + static atomic_t shared_last_ino; +@@ -916,7 +918,7 @@ unsigned int get_next_ino(void) + res++; + /* get_next_ino should not provide a 0 inode number */ + if (unlikely(!res)) +- res++; ++ goto start; + *p = res; + put_cpu_var(last_ino); + return res; diff --git a/kernel/tools/perf/files/patches/linux/patch-5.10.15.xz b/kernel/tools/perf/files/patches/linux/patch-5.10.15.xz deleted file mode 100644 index 42cda9d80206cef57bfc1c4addf747a20abaa615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486748 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
  • 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

    GBq%}QNe2?+IXy4d1-@1S$PwN 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

    ciH~J^w&F_hG8$%4 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

    %09;0-NNe(8n^e6*N? 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

    8;gn$FUnX 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

    5(0-77xn^RgkCt>rFO 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

    FFSIc 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

    pE*PrPoIXi8mxGYw%J3yov_R? z017kk?sk_UBURSID2at#LFZunNx&0Ng9M38R}*fW>}f98h>#tZTnLYv-N@_7d!ObY z91F$0h>~0}qUq}SY9H&p_$Dxe&G}|pK7Dzsogsnc2cT3$KtMP$9n=j-r50#WxcxSY zw~vWobEbFNyH9+<7%XgWr$A??_x;-Q{h90g@fz!RTFhou;4GJ9PD!q*WcZXidaQi$ z+Q*|J&I@WHHTR?}sE4vIB5@S#Nd*;te@Nvf6(K0qCRfu>%Dg7OXy&PsR@!e8iuFI$ z#m3(i_N+Z}@4q->&}m>sz2TiM&l^JvL)6!lXyeU4sj|5nDy#|lmJuI9uq5KO9w(#AystS- zL9dd>9eOAo?_T5eA=hzNhdL>pS$Fr5aivZt!Qa97jwY*#V0)2)8V#%MLg1%||D-Z- zihHR(Ol?V0DNMFqLSGvfn>}*<`tJeV0lsXQbIP*dBilBsvStl@aZMc}A z_AF9wCUOT?`K2Dn+8cg|2P`!J?%6?(6wS|wa3wUqA|Nl3^&u#=aHvSG5<6gYlp~>T zEM1IKD~Y%$pMkAC;cyvYw*MjmD}h=5D4Mr%5wnn{yii>Ej_ZSUYcZX2rp{&D=0a&^ zH#Tf9KOmPfD(K0rem4o+8LgNkVbVJ*%Yq2-G9CREe-iX&;dYn8L+E0*j1hU|BYY8l za{Tg}y;9r0|Ac%UhR10hE&(YT0YWmQ-@*EzO_b;f4gzH!M$y8P#aR$BX_PX8dFfJg zWR|-wbYFo&saECj2wzW~{j=oKGL8Zpkl7-QcRHJ0 z8SXi>ojLemJ2{h$*}ZM+0abX92QZ-<`wa>L=Lh991MJU0Id#EPkAUd1SgcX>+8h_K6MlA2rh4iP_w58{ry9Q%f zW2d3I@F=G#xNN9FZGrqmhziZT?9^GcyAt&n(3*we=0NF^FWm$X|Cy)LMhSU}qx28{ z8q11QAwmRc?+_Vuux;en+!zD_1>Gvcm6B0Y5N`*>5Hv8+)70Xq6K8D$pahvXV;1e2s?_w6^QIvA38oT86>~KkBl0?v01hCOL zK}MCGGDy;dAPIFQD@a@(LzUL`f15zlQt-NQEZ)1#0kzc~A?%}2MhwzR_Cl)LKTwg< zekDh*#tg~8)kwe3{x-GS>Rw7$k=DtIsVVU=E^2vy z-+mBRV#)Nzl3AmD#(Wb+oIs%Byg&82W@V4p0$p0-9Z4s!X)d|S;gKNMtMaE3D@jB(Etnt((UxFQzX>rjb3&4)zq!zfciIqLxLb3JKV zDa}m1Mk!{mi)5K)B@&=WLoye@p5f05isLCb zW&+yWAhl|leYY|P%-QRdz!i@w(E=bw0 zpPc)weWBVO=vlZei((x}+z&UmP2wZH3%C53k@gfM+D7CDcJ?GP7UL%UPx@aZ3HRL0p+ zipJtY{%3DI$ATwwOx&a%R-|S^=k^Sh9JXMw=He^;&^f3z<$_L)7c*x19 zUntyj_QJH{(}YY{t?YfTMRQypZ6Y{28yDHi4=00vh;qZhWXZpqUC-2ojJu)VN0#fQlKG4@lvji?mgVLIIrG5vokutQ3)Q{T{Z)e&C1bAC8z!VZIhfKLU@|*vX zM(njtOZyx*7Ofs%#h-(Q@M+`xWton?yBCu81~ACNEo$XvDLHQ zcPO<0buXCU8Q1bIeMFdO-a9jTWOvnq?Gkc&=3JUY71=kbnRLeMcPSk_eqh%Y zxWHD-^p!qDs+NzV|yOE#al%_Ih~c<=9lmwuqQSP1}}U*llovgI?D)Bl!+nl}h!LM)xe)CQykXY_gMn|gRX5EoSoIA#on^9-t{Jch*yb6ddDPf;5M@#3+rjR(^ zo_Qda?OZt@37Y;hhS7rLAaQOU^>(6E1r_bIplT8H5XjjOj&Y#uXdjI5-M=(@zWPiV z;QnMfTY#(uG2wmHJaA&kEG(HzIRxMN#>wZ6N zC-wamhnSS1k;211s8QxRs%>DAS@-@IlA zG*|*A{+54kSLX0SUs5r{RA_nbxMFW}3bm596y|mpM|=+U_+2e8%>WoApP2t~!gz~m zy3dC&g`@Z=xtl+l-G56!uClki-iQbXkf=U;Cz=NC?F=OtVq`>-p;+T34JU|ny8ezN z5{PtK#3I5i4@;+FPJ$;_=E5do7oKo!RjssL8LQ6#j?{;C8aD4v^cf?E_fMHNzSrwm z3{8PrCpy}Ip5gZ1+V(NecO2S;K?#J_*Apms`oo2?^^W{G4tF)Q$d*OV1#!t#;Wi{V zpy^Ral0lIU zh>2x9eVxgbZ@C9r%A+E!B%xfe=^An2&A`KRLh#0o6WxS-e{Po$n zJNf$W%3!siS`WfFC-g7NXH4DL#oQyff>V;$#I>(UzXBg0)<$V#ib0{INO=V8AN>{b zxPuN6w*B;x?EkHtuF30wN6NmqMZVLLArpSTgbTlu)DhV(Sbx`#q|k(Ps6aMq_)}l2 z8MO&R6kl2EM8zdXYF8$XZH!CzzKvt{-Oug#Lk>`pI%Qrr)|2~+xOZ5IxzL|RjF~=r zCbBBWg~H7y67h?Y{RygidrGydi_^Ag5?w{>SwJJa2&Od7t>^P1jHmC3oBeeQpA ztv{j55nEYwWrRg)R%4yJEN~@X~Ol?adsN!-BB-8 zfLSMGw0*4^LZLq#dEM@x_Gqmgl#w33NKlIsZdEjmXTJ@77 zIbx4zXA9(&K2ldh$8^-eJLBUySY<3AW0E*Vj<^iQ8;=sA-0oi(rrhGgcfHOqq%^D2 zdStu;P2ADHF9Zp-#6PZ+K zg5b}a&>M_bp0L%ugZ&G|==h)`L&MVe4%q3UU$#0Wqz0q12de4%@58WwvdpjRImNf= zN2ZzV=DU+ZvL~HEqabjPIM3}b#A<1;Yuz@{k7g9-%S8@ft`i_j(LOx@3Z>OmBz+Yb z@muNmY%2vG)&2UaONgxuD8#_Q?99T-@3hl<#|roPy=nJl&5SjJ$dJ0c=0+R&vYKyInv%cFe-Z~i(3mjiYoias@nzQET|y&Zw01Px6( zS}J1k2?f@*9Rv4>gWIS|n|qv?DBH{m{UWd<;Uz!7 zlKj2NFpSDzRg{)ak>!0C;ui?>FJPzt-2dl=UIr1qr$B+`fS{A@P7?fxp8McNHf$jJ zj_~&=ycaez6EA<)d;g%!-Skuq5KAzwned$cEF_;k=y3Opm!?p?-4_$CtyF%8{_pgJ zg1nlM1&ppEPmNU8C}z5z!7$9G>=V<*p(v|w>OQnwY@@r0BGUySuu2{jCYHvr(i~S4 z<7Qfem)sb;?zcfG2)R7yj(mjeNbA_N1}nCr zwSr)nCwRF>&4)u@N%l<7?jK>+W!t0|vi#p&)iHIWGI(c5KXOg89Aw5%P_3yEcT#OB zTi%6W{8o4L88MlEd(v=~-FCSrM{p*2zr%%+gv#%F3I)MrPih%@xR_{PQH*(`d_0 z$G~p|WI#j{zcEOa94;yZ zRXU~o!1_~o-zgb zSUBhs;a$#Z{cmC_u}V*7$7_o!#Ig}af$UP>>PzfA>-ld#^xgC$Jd@?H3PkyR&(K!{ zGOa%zXU*0Z)9r=`0-~LXfvG&E(Ijv1f@zQR^gij%{n3SM4Pxd!yzDt+J>cV&7+jLu0<;&=1ji5f%q;_P6IGUf8J2PDO8LBtb%O){f`2P3XEtk3`<*g z9#fT^!}j5$0(X}~>Fousg)dZfcK|+YZeE(5mV|nhD=tyVNR-}`fj0VyX7U&z$3X^l*?uZ^{f?$CWlzgAUVjj}%HSVFbYoV)`T~f7@GWST zat0Jmvd7++OJVJsw9*zS-qx7*d1j$=Wzt4}kwQRzZ#J=?a>c1Y(?RCReei`^X5j=I zwr@P94kWW{l5@7Pmq6S4)sjYAfCcqMBNw~kj9RQMRE>g(EMP*wCxX+kU;36khJVMp zmh-JjKGq}kIQMAT!|l{qwGRvu3(|Ftm(`Wst9S6s-CMj7I`n!3pE3tn&fdQ!M?RfW zPHuL2L{bPggF9?{=l^@XT6;+Dkog$nNEW3&Uka5lW9S5O!vaq%&-K(lb-*UVEx^&O+^3`yyHFWgM z>03#}z9-lM-RGZ$UvPepBjcHhElGDgquH-F7dAlIp@3$MXwQ$Ml5m3m36cb%sl*WR z+6pL@sC_P>OBK;g+<2HiWjG95#F0{&K{BEh`bYN!yHpT|r?F+?H?okm)a#dhV_f@z ze-BYTwKGUj^PZZmAVSoSkCVmxAK1Tg)AaC@wLfFwQoVb2%6Y6{*o0pYl6Z^GvAr{$ zRYxM$T2#QrI^vYwCy))e4)NiVzU$?_21h%2o5X388n;QzidEo`#68xibN)7HjBTP3 ze++7M!jWw)qphIHlMU8DYn9)A6uN*Wkz34(@ZA5Xd>(m;^sBf#=B?BzJy{rw82U^N zkn?u+<1mif2F@i9dmM$`mD=JTU`rDFla74~f#0pY$~+OqRWM+DTH0&rSF^%1>E#+a zJ-%-}V4CvXHIwU!py&egeLR9-8-Zca2APXV|G$Hj{SRI!{V|*WO9TsEXIC)c@4E78 zo}wY9mX?9-tkU2ime!A|)0gAv$JsTa$Lx2@&UTC)0R-21_kmL+wr6X(IUslmcm^0O z8LFDo?CPf;xe(#-Pn@Y8qwU@Urg5wiyaM2mOpuHV?uEYTty?W*4fv{?Q6n5Yiz^x( z=_k{I-g)*c@#9(}Ypwy3MPLP7o@@gR32j1D7E`mr`;P^SYj2TYl$!Or;70 z!`n;`e!?WoEPq9XeVsN7UGv7Lv~~_pssy8RBL%GS&2>^#7X(kN$bh@lSt0j8Yq62D zEIpVpys1_We#SHRj5(l};0mXFANLs@kg4tU(-^#v7-e|NR4tWzwY}>fW}xQSW1+I;g-=D^X!xSt*uZrkmLW0H10d%QyAnu zZGY(5h;d4?G*;`d?Uh3$$E)mJ@jU@rILqB8a0{faI}NHXXzssydP9dI2+%d_C^d%> zRu-ukf+m*Av(aO}xqZ>ef36g$+p)}sW__fW*vlw8LZ5l)lDMI?pHOLD z=-EHg5>zexhELsoWp>>BR#{Bdu_j2Cs9$&w$?!G|m}Z=kPecec{L}0q|B~9M0vSPJ zx*K#X9*Z4N_;6>wvWFPEX}rC+hrN`Q3@g#eQw50sJj2DM=*|akrR;9h&n{3B zq8$x+SJ-nvBJ*kW!1Q!W%^0UTJL60VqqMz|*&9XR>IOvb#yG&hxb;lFm@v1v%BMh~ zcBHw!JJ`kZ5Y~q{Jr`>c*Gcui-tU}v7ye;JRKitZDrK1&5klfMdzwZ1>I!8uuVV^P z(9YKb_M_fh9SEq{YkEM2_oi}6)&Z0F&bG?9U`~`|Nd_?mP5BgYD&3^ABZLqR=EELb z-O~)lf1mgvCx z>K_p)jDDL`d`F)`#JbPLVY-Bd5tN=F;7KGRrhNGHD1gCTS%njRxr0{!M=A%9n@xaf zTBaQjM_pEGN*nuB1TV2OBgmzV;F(683IixaQj`#=%eTS)`805~^G_FA7hzRRTeU8H ze}TV^ZuD(S1#%tj_PzBSh!)84$T^!Tj4wd*M5rYk+NRTSmW&0&es3zKZ%ygB&6x5%ZdoCT&Gl|KxT>DX2)cf`Fk{C_j3c#U2k z(=Myr>VM^nQLCB-(@4Z}$-bEyiA@83NWJc&Etz_)-2f%XWnqC7y!qUCMBj=qgksAL za;*6S_NB87rS7+nQmgxo3H-P&2G9+U9qAWb9HWrUk+Wzl)KP5a21(dtvPAYaD^gv; zLzXXUV++8Ad&UB2K}m)uG5}4{j-;srsEHe90mhYLT0Auu-mU+ISw9X@8xmP{6c@}H zU~Ma6t+htCTP*Ka#`OsMn|xvq0T&^YuC-0n4>6*Jo%!p>_%^>n=4W$&I-&%lf|uT^ zL_K)$vi`rj#RUwwWD(j$;`16d?(o070}I~|fu0jxZIClpaN&*}b;5dSu9v8Syt0To z!qrvYN@!YnQ-E;H!TW6dWbZi^=R(O5YyGpLW17GzRpgh`rl+#j>dYB>^${KCUw|R^ zb>~=~3n|KCnZ997(P7AZbkEgtyE!(%PpN(osLbe!$3+NOEl-8!TgN^j6EJUa!o@Yi z;e6eiFq_QuKJvGUL9}@#ie?j`HVXQX$PqE8lYqjpxOM4!r7G;|Bb^xi(xuJAJ9=!j^K2eq^Frz9YcRIY;zN*S z021bIZeZtAzutuKS-V>_qM4VZXuy-v9=zdBR5SFO3Z>?UQ+7P(Rj@%YdVE-yVg5 z!RGlfp=#j(a&gRJGuhVFyAvA>M19fplHgXw@f~&nTvfCIe(n=tP_)Ik4&xLE1eO@L zSRH!?@^R99p(^~yp<@4@?`Xwz6f||V4Rv#Ai?O_|1gFU8_sWS%;6Bo?bD9yh_UzEV zHN3ChE{Jtw50nb#!iAlE9R+RyFfe)vgv}K!lns~evHB>51$~CP({-HO zONvW#^cy|1?-*U&BYephw zDF1-^kgy03E|K(d_w>~61HGzpONxMrTre=stBs~V)(?g8AgNeqaWiKipS52?5$fpS ziH`NMkIG~{fBn|A9fjrYX%Jh;@{ND+1j3KDrbjUcd^Z>IKL`y!ZxJz#ZW|!O3fZKt z?6K~HDxv;W;vVm1KwG{+cY$$q1|S3;OKXu8e85I)L))H5cJ1LO_D`A;!(9=(Ndomb zBACqE;wXZ51P_6JD|3Ps=`m%)ViGwLPH&^3-hv3oL*OX_l2|x%ucjDbVf^#NIWKS7 z5{f&dl8O5B8s}KkvHo&Hlhab=U(oG)_Y+5%0R&(!%HeuU*P>Cm=aqE&syu_No)dGa z_jxoovI-A`5)DmrgQM~Ku*D22YEDe@)c7WW85j`Z|eH4 zUkcH>k&**KVW$DPD;#E#zV?Jg>0pxNuh9`QRhoI`>l6 zC1RUT-m73~=PUfL-^$5EQG=LJqEPLYkQny;jJ=}ub1jJ5wEC_J(q%t9?eOWkh4~Sb)puAZg8jQ`GwF2 zUsL~z!>cNg2$00kRQrK-R`EwAG zmUe&P&;0M7S2Ns2!T=<>| z^9zGYRKkY;I{eYUD@M7%y2qOe&pSYXGogis@~ch2d*%*|&b8bdp#0DH?n%nY)}b82 z7OEUZF9=*cRSVO_Big^O{jn>=GDxWnoKTCn7#Ar;AT?+pb7vjO5nb-5nW-|D7EZ18 zvzG?5cB9^9{&~_r!<0?3IzN+YR(=4lH}S9>=~3^l*=M4AQ*#GAZ81ZgbSfv%-(s1} z?Z&vwm?^nInnq{)2dZV1tAhGRGJGMFnD2n?ouj2ZBCJ zcBVPWYEeOS0eL(x;TGbt5V(M{q!GDY$evd^mCEzKz?qcj!6qiW+*2hyc zCPZk7g~Pj~>gN1hULJ?JZ3Xe-7j}yG^{2zC*^%h1QR3h8f5T9!nuKcccu!=1e&{+@Jn_39F7Za}IZ=9wfvL%U=uhS;_Qsg4F-z^_ax z(^;NHKC!I1H%g$HUPn&d42{Rp`d2Og@QZx%!jqAw7myLAzHBTk`|d%HKKjDC zW0YecE2$5$P8+F4oW));>OET)5+g87l2+j1Z|EqMj*JWD6L>)f)<2Sjn!f>upb&1u#uo&Wmhkvg z{mcaI2I+L-^JR#RQInvQ?$Y$3T+JG8W)|5Lkb$;uLqNzy;*U#JJ8rDz@w*3kh*GX9 zr2a&Q9jHA{mw^ zQ)v+ijuEP@nlry$8E*+I3ecF`*psfcVJ-DP#h*=$0caekMAkODD^qFtIjJtWlO3yB zew?S_XwSPz+J>B}gs1H%D_OYige(T!I5<@rYrca;(Mk5LY2ky_E?XguV6W0kp#)ud z08S#${{8&A3B9a*@q+P6tl~rNmh_HXcp2CdkYf}W;VQrvO#c4rD#9t(Vt_juC>g~- zRGT;J;aB@J6>=Cyb))ivUsZ35ap;WITAEmv*bL+qF&GD4K9GqTp5Bbv4wLYmN=l{V z@Po`xaA={Lvd3m{y1H`@{F+9|GEA?fj*}xeilpf?ksTDcuJFGFLesIwdh3?k`2NrK zDf;GX1R-YPVkvW9@Ogt^Man$t=>xLg;+7oP5R}Yz)b9g$`dAMdzqG7(<8v3>P^s4e zYDYA1YG_PLj`u9*-msJ*(jXe0W2P4jQ_R^d6kRuwx=f5))vfRE|Qgi zN4Y&8)IGqrxyzZMIc8)oVvw_3I199cs^v%Lkkuu6AbX%W2B9^+1aVh|fe zQ;lb0=?L$eIP5$LbO`NW(!&M}01->F^~ltQ=n#83%po4kD`b*2wcHUp30R`uBq2h3 z61$qw;3Ay*WXTm2W5pa<&(f`F8bwHCr*?7fUo!AFxTia>0;BHY@G~MM=n#}l`S$m1N?F~8(yIL(_QA8v#MRNzY z?)=!2r>m6+Vp;KGIkP21IFug^F9$3=>kT8%?{%^BuMOT^An)+Z(?-G=5 z5w5CU5T9m+=ArORE|+|MF_N={g{( zPI8pR;yk%3VG+Z+a=fb5Omy-J(1XM(=35nhQ@$~&)#M*9id#>>`82yv+GyB_t#vsO zy+Le@or5#U7O0JjY`-+QaU$v5Ql3wS@ihz3j-&^z zqtLuIy?l>Ca|C@V26Aypa@1~i!W`;|S)b8sV{fi2mU9}mEC5cd zJp2m9gPV$AEau4)7TsL9TR%o0GqGY)bXQXo#>V#AReW&eAwjb&d-YBI6Mq0fK)%1G zZ$qk}Mzbeb*ola(o-UJF?TvlJ*W4Y2<-)I|39ik>7tq9jPXLr4Ka2CQ|JJjreQ>Uf zqV|HV0CgUdO&-l)NMGe-52rJySkF3<3YeP+m>-JvyJctzDsnh`!UZ|ynY9Te(L!~% zfKceCYU5^cBpYe;MTR63sc8u*?jNHvvUaBpkUa`vI(l-Md34W`an=$ztnf4T_C7-& z`!B9x6pMcnV0;C4H;V3~9recI7|lgx&aS44PahjCk@1Y#lpSeYt@k0|`U3J-;RIz9 z_7jd#Y0@5%oMU}_v@g6LOU|sGHC*y&0WD|qM#c_Db~`D|VHE8hA?G|lZveT6qax?f z{7?%=Di?Ybo!z?eIAlApn#D_Yh9JPnY^{I0ia>!0I%OYO-5zFdURRwr!^2a7b$%N- z%ld-wIUi(&9?~v&yuN9QH!=|)-bb%`L-bOo)^kVBl?o9tfDC0~`l{C@cvNWtr_vT; z5#=fXD|#hQYUjHKfxw_qK9)(0)1!nYqWB`IAx}0n81ndB$fN+RBW?DK6RKo*AZ&t7 zSwI_4L>JEGGf;w*W2#YDFKJ>UKqL*+Fi+cFSfYDhIjlH4WluiPYgi2YKE1|$4`kb> z5#TX}z;;sIug@P_mFhsohA=vNcd*J3&6cQ-Ut}D_RG{|3oK1E^9Z;FO!+7wrp! zgxnD1Q8}*Bmyy_*TpD?4jsj7V^l$l9t(}m4b!dXbz@n(tdA`C7roLry? zKT^Q$eX!*~X-t7?wW?|8w|5eNjPo|d%GM^Q7zuwn-W^|Q)sYj$Vu$XWZ3YMabI{AC1168i(0*c?C0fAdt|S6 z_QWx01Pg`wg@|@&A3IATn0ViA2f(c47R@XLg!5sH0KE__`K!7NfrBx3BBLJbkJC4V znkPs&jLZUovRd+M!TRz|HLs#J)oRJUPx=C23~3nR2Fg7%=mGGzc;3LBt68_dH_Dy0 zT0|T(Tj=nB9$$bHfJFc=Oy3gtw4!C7OYcBRPHbNLB{(BYCzXX|hSSef_zMorj`FYT zD#!p)O8S~K?YWRY?ZV6G>e*@@F=`_BNX2og;29%PDjtoHX+M{1@s)`JSxX=v*6f(r z;ezMC6|%X&g8Wkz{8cC>S9_lB$QI9l1#pL01=2m(CYdD)woN32wK70*@+(_Ow4#@6|=Q3c^#fIn6oZ21u($y^d zBMoiv3#w!&cw6VSfq(NcKtpY;^*T<7q=~;c#`BUR7Yn77*@<{J%Wg^9LO(*kQ(Kse z&In4gZs~71Y-Nin9HM2@<)5ft@6FGt_DyYQ32A;LHwco9ngM_&m&BP77bQIy`1lA= zJP(};B~}CP&20p%rF+>JKNHH)EvE8KZL?0Jb&iaTG*ztJ0lUm+ks4dO@t|9V;c@=W zGglU_^y&Js+PKw^F-chIPc<_t?a?b)V>!!w=e!%j%U8U5xbDq{fDYMk##J1}@X^ zs|w5s_fqJ~NbmQK{LP*T68}~C(vV_%F)wbG8iV|UkooK#dy)M0-MWl&L1Sm1)Ook>-2Uv8|9c`2g zZG-GhdZ*e9ByQf6X89va*vdr5U< zXMZ>==1L)q$9HEm#x3ZBD5!5xVAv1EVsYsc0YE6>{=jovJ4}Gj(3*L4*Ou4BrKiX3 z;AkWoUeWB}VKn{7R#yG_4j1237ZnJ)`RYEmJvba-I1P+*TZ_enwUW<~Ri5sa*+ERc z?_4Cx%Kv@A6mz89EwlB0^$RiSP}?OU;k(OvfaE{md!3wOs+zLy~-cC#CYR$<{$A zn>6-j-<35F|NDOkeXd8&lGF7%-R}U>loCY?x&*VF`F1)9PEc0`zWRgiHZEctE!AV|>*9_`@!_NtkndY)S8Y?>^P-0f2 zfjaA_N9lMP9?T+XUQAbEi1a}1Hvq}W7Q+|M95ND}nwB0P5#GhyMbyQLaX|fWuZ%M7{?5FkEUUHirrAI`(fngC|pdaI@#Wk9({) z1x&>^{@3BjC3j#xCI(9Rf7C#dNh20Z%M^GhM7OGmM+8FUf84;KIQCMG4L2fST9AOi zof1KT0L&IkkN85ZEwF@l!u6elfFr&B0o>=sy2k(bIy~s`9`5>449StFb#e2Zp`XAB z*%xgT-7Heqay7IK20(vSa%UEj zIMDq1oE!6aXwF3q=i>~SeFOxgTwlyp-zJ)xdjYge88^>ln~mhB1F6RTmXP)kHC(TW z_KTe~LRBTS;4M&{?vrs&2v2vC{bUn|C`D$njitmr9&8-`at>=M&L9g7UqtmH*(HGR zE(r8uR_;O(=X03*xAK|wMJHSdvzp%-XQWW{hj9qE8|dW$3svq{-5d%nGS~$$BN2X_ zw6S=Fx*7ipu|lQQU%e2x_w6o^#NY#maEfzP)xg{et?86_GmTy@%JaiYZ2LZYL~*;9w}h3w0% z<}yg-w2#YBq{sr-Uz`;n?=$-gswbM0#M8ke9gxPjWDME@EHyRb`Oy?nWG>xSqvgM~ zF%E~y%=VtPid+kRwQ67V-zGi}w{{>^{P(wB>QG2Js-rJ{*oo75s?8+b0P;8Bx!^Tk zp7nGNC8McS${|{rr2D}IoXDte1ttP-Z|3w$NoCZ@)~ZK1lkAy}Z<8w0VSt$M!Hk^$ z%sgb{=eC^(95hWc10On2S3~5@Vqy3SaUVt~!ZTb4f}RurZsX?ALr@>F23!LI~?H9u##E z)X(9%30}TH{r5Mh2j0Q!a+eABDgK%s)6oA;A@fOjeF5@_!&SoAxt_(xkGFn zQGh=_F#&e=mEd*@&vKP2h|YV|PQ*)e4c%7Kg?K@mAff5<{0`+d;d<#n6qcFb$gLZl z%s7`+EL#Q6`(dKVWkQ!5u0b}tBzi*flM#hfO?V#YK;MmuiIZvLDetIy*%#{=QH~+v zL{-SyJr8QCJAu1DUmzKnFeYw92mN_FgDaJ9VO*wSRS;3?PZ+Y~I1Wntm&{){)1kWS zpW>T(T*55$UQ?f2bRhc+5MZFU{Exz2o`goWM;9_zPf=hN3;iEzOJ2*f<^F5x*+M5? zSdI1Gvl}60q)dvS*k1%t78qK118uyEd&RYBVwfNH<+pmDr#*qRO&-aRQYhezYV;EV zZOb>wL)6A|VtPh>S!PS2JIL@t@(dmlF?jb8!5#??%%k=xMLd-<;Odf2PwNuniGqS# zQA)viCNMLLpHv#CI$f|#P+W(a+v%_A4ec~2j`dKStY<#p9fK~|{h0@C4Oi9i`FU=i zL2_Q)hkA?!a4&a8@!a2)fl|BQiSK0!%{fgXA&8=F2qkDz$+jpAZ730*2HW*iS(_B) znrYA7NGwDaE6r$DYzJ3_!Wk~x+aZ|cp`)T%hM8Nf;0d`q7E}d zsA?chiCL(36ae-Md{c9ILR5=F3eXMNl`1KXx-!L9DmylaOGur0+amlvh%E8NE$8^9 z;nF}+^d(#bBavPoj5pj^GE4M*WX9JJGZP58e;2Sef05-8KXo(8Sfn1O(&l)QC1#X# z{qp7V=~x`?47Bd`TtKUbd=Ld;rL8j*~iC^!7;Pj+E|3ze^k48N)qza&8YiqN)LKE$gXBv&5QMK&)nT9hRr{4rD!Zs(1lT}teWa8~0t7}B-I!0m-_>HVckw=qF@u|+7K|@2vTldiQFV9#e$9>!MgZFn25CVAAO@a|L!G}S zAKGg1$(6mflSnekYwXNG6xx9jtrkg!YE+QyQ}TR4cD_r%YqgW7nQdy-i}bin8tgai zxyMpVrdt(OHJAwLo^s2JG-82dx--@c=S4&Ll7= zi$nae8iNXi;=PfPy{fmPQ%m}?BEwYI2)%qzKCdC07c9;Npe3xnRRL?;%mh+F&y^!( zBoDj_J|U3X%79*NVnSn7p*ekVFvS@Qm=z907T;EFQ0 zlBS4a!f?8H@{+Swj$Wj>$Vhb&5Lb*DP(L?pZ20&$z6w(mS6!v1CIUMMi2NM6(5sTi z3i2EdwzWkVOx_dxdWyO0vS%#iA}-KhO{181E2BfCVBDLXpd)%pBvH@Gw!M&XWlL1n zWb&P8t=F$swtb4)vNfoCjwi`j8fD~Pj1oN_z-5@eK^z*7lUd)dM0HRWVK&&xYjPXP z3k|aC5>`m@?mkjz_A$5GW)wCmRhLQgQs+RAZ!*y{YeQ?5nLdHK`99V1C!M{+$+9RP z-q0K?PF(c$ajtU5sriH-=`0?y8nN^1vQaw z(JNcvaLWkgzPiz+8gO{b>J-7W?Oc1mNzX+y)22k59B3mN^_RM;4O^1HspoX5Nl#^N z)N4NoG0zYR3`F2taabCBZR5kI(TQNlubc+^lEtA+YjA7p{R74xG`grh*_U5G!6N@V zF+_Sq=oWEv41B#sO~_1Ec5y?8h=&YnSF_jB7#vFK;jBAzOfj8P@E*Hh-tc+g;1n{`7{zHL#6?vG{$e1ntO;w& z8J~7Gv)(B3(>QYZknGs{6#aFS!|R>aRL7)Z9d~|SSQi)}q`Z(Dfu5(CJc@T~8QMj^ zN~8+V^RK;@D2&7f07T}~*Z7^F$l>_aeSC@^?81%_8wFw*ta6ir{6O56(n=7TDndW| zeVancA1Z+bdcLx6*{hLN85-JfpH*03{*#Ktq-96*#_!Zm+~ckf8MhO%l&E`wSL1vm zPQ=#Lg2=%XAv&n6=kP6@92@2yAt!FY$u?2aO}3**-&8+otYYYeYo4M(#4xaD<~l-rt9; z_H{buK;ubijsoetUP3a|!Ij}^5Z;69{K;CY%-2Z4h(9iOGe}X%zm;gs=u0IEQlLv_1 zi(h?9h;3HTUy$`g+TCjJ(Lo#&J_q)kZ_0m>owh4%XFhD)b`QZQCqWN`)EhO=$s|K& zfHq6Xt`?eGD{N=EI%CE4_U48>}e5EKK|Z=3-oY)sNBn|rc$CP`fc zq%VxDGb>=>K9I+8T$R15Un=b$(1CL*gX+@4MeSfeJqDnrBqIK2W_0(w6KgOUM66CH zH-!#7gaJFt33N0Cfnah;py03v!DpmD*5$nl1bY**c|{ivE+}@H9k{pYZYvRyYGC!Z zn?L>^4~(tx5O4(BFnT|&38I6u5AeCQHD?|#G`=sOMp@YFo>o@w(t#y~aYs=N=iZ?7 zf3qMav1UFipyF>B#M8latSzX}`mIL%Qk7M)0b6bAk0)`)fB?WRhM4Kr^qA1pd@8{V zKh;p-1CrwxCC41wvWU-*bM&Uy06Q|DT`@xCJx+8l--J_SbtiQRqu!sL8w5mssG?fA z?k0BPdHn7i%A_v~j0G&BpKm)%qY3i-i45KHV@cb8W8jO3NLC`0k!a-YB8p^jnqGTv z^R(RW35CorB+2@Dbgzz1=;q=r4M<({m|s~MwJ-`qxs&EcL4XCglu22ME2YN%R#L1r zj8D7t_~)WDR#7Y$16P zL(hA&`pDu<^F-p1y$(s978mQ73 zw%})(0>veD*QQSE`1hTtUR^yD62M6hQY8=*Sq(nyUS{km7)bsl8V2Kv|8U*)YUitU zPbhlQZ|-)>_H(JL1QmmEPo|84xk2A2N|GcMIs%2Bg9b0J;o}JoDPr>CQB>aP;e=Hv z-%Iu7@F(rF7IC}nM3e)X%iFfkP?h(->|2AMJHo#@_!ml8k#BeL3U?&m3PJS+qwU>3 z`#U?Mb@HVJnhi^jB@FbzGR1px>&OK}NzYUm1zOfElruSZK}Ty!PAZ%7o~J9NOrhbk zyD2H)A^f2Czd-U9yc`!VCN8P$@)~DR>u3r+=8;r8=EVH@GLx+0go)}h!DebEz!^v* zl<)f)B+D#(ae0l~b4$_j(WWhWPQUVx9j;fcb8K(7>5%B|E;tWSf_<$ImJU`;|7$gk zOz2;NEGAXh1E3e0gh8}v1#A^t=^9?y3=GQD3#+v+WSSB=^8vl>!o_l#KIT5ihRsdk z+QmfEvjQMj+4M3ocGCM9LS4L{b~0#GV!davh_f~Ss$>St;lu{@-EO`xKpn_K?N7Uj z?j5q3mQfXeK*89N?x@NVxmlN{u9*TVy-!XPR^G^^?2}iu-o6|UY_~2%vx^+T{c3z( zliI$tXLdRxC}@~k2_w^VRir=At^5;w?0mLDhVG3n8}sLdWlP*f2Zc=eZUlq%8J;F~ zx%V(eD!@h|nlE*p4p3lojZ!#uewid@v&3&1o!?PfBwjJ{3yv{7(KIhLv*4V^{)4D_ zbbz!AMk}b7<uc@U^1Y8J;9SeNz zn<+$Nv)?Ucz|6lm%f)Pxx?R7Z>0&(soDWC}>G}wNu6boV>s8&(xb!6Wa|R6RG*t2i zGgY0Gb1m|~BW$(W0>zxY=9}bmI36P!uZ{{fF`r8KXvgajS)#(xoh*jW>H9=G=7$M} z#eSW<)aA4v66hRzKBtIGK>fGvx?dTQ{>u&mlMBJ_7i#PwuIMO)oWdeBegcGQS4rJ0 zk}VfxH&TM3Jhy0u9E7;<*0=RF6QU7tKFjlsY`zcG(yb$nl$Vx-l^#(k>*(f&m#3(| zyu}icnBg)Udm_sx_~+Ti!JP$;&DJMHd|j_V6xV)x;5gG9HQ7089Hze>GBxxzC-?XOZMw!V`{OU&;FP{2I1)+aY zt}zjeaa)j8NUGd_;E;3E;U9UN7e0nzr zf57;8ksi@*H2Wz5Sr<4=KBA?rv!b_P^!0im1;p_$+46xw(?Rbd28CwkEBn_rd-vUY zS?Y=bwq%GwT+a)@;wvw*3>62PoCHY;s4(>iz_V4L$D;*`i76=YgE~@b&Cl7(6WYDz z`v)=Eqv|1F7tz*1wva&xPfS|ma7r^|FqhaUobHwndw5G4^vqqS>2)9$W1t{C)+k82 zl$}v*gLHDvvj!qfrPiQaR+ejfJBfw#(RW;&I zaS0JaJ15&%Ih*oqOy!6jNzu-h+r)O(20Dc zf-t^Qxji3$LjbQdk?#~M1m^pUr+AduQJ(`6woh(|#I$?};koWqo;9J&RM)KFC-J3~ zl_}nT*p`L=?f=vDs_x#I&?E{@L8K6s)?orf(rrMVJ?8!)k}aiZJdqMxo2zD!txh1N zUf1rmWisuuclOUJ%MDn}^|ICUp!LqjCg{skXNiduGCXt$|3h?We&a_C3kCh{ADO{S zadkVB2K3^K$Zf2X_D0Pelz3tCrCG+aA%k-e$S+oj#?acpZ{Y9C8iF?aFvPC1Gs!Vk z;Z9$WR3k>D`wAxhb8yP@fsA~4^4LsFsm(nB06Uggzh8ICA&=1ipiwo?38hoVobgUATAnG5fH3g#K+ukNrtusJ1xx?^GoL?)0? zTv5an&VPiu#j>i52k&k)(710?^UeY$pMbOQr>sbUl73 zF}=`Fg=kl0We$2a1C9LXzdB$YfIhLTDDUo%g4Mtdg|forUXn>}Zq516uov>ha1~=5 z;2m;u*rTDf7Pxk5<`(@htPc>?JVodTmhHcV4cP)Q3p#8PW8ZU#(qa+VdO8}m&ui7p z%{YE&BjS3n)O-!QJ@#vu&`q05m3cDp9CC2)Gw>xni+O@3iHO7z^d*ym&6H2sHl{N4 z>C>T9=nk=%04VW-rUh7Cjm8LM^1?mod1yWxfnx`HIgsS=Uw*zS$%rHhe z23W;)qzJPn7+nt+ZFLtLflZ#}qeE={x=N~yKo@%$e5|^b_Ft!Gv)!KtqoZm>)u+CT!ht?-$4pyDJywJIlJ-ERN2jq?SG_ z^g^&Ag4NB4F2vFO80Ao6xZK@ISp0nJ18kz8!7L$CgF&f+P`TrQOpw0}?t>y=3-gwq z9kcK`9%BT8-4Po*9xa+_)nyaXFCR~PT4X)Mo9}jm#QV{HNlnL0ITvkRp8m${jN!yy zEXnIV?J;<2m)g06MJD4}-|$o(`}khq6DZQA|Kzf&9I}5SutT`ZPGdSgTEb{SbHyIq zAyo)HY3XcD1AU4b?Hq?^IYxbS7iO2)_s^AsibX?M@!9N^qY2@aX&SrjyV+a!amwsJlHK{&a%PHyYrq!s ztv1~)343&ttwnlg7fZJnwD&^!&zyr8K+6W3TA@RZNz{1eaT)`N@PE+But)icjXw>b20ZEPfX0HMmbR ze7{{$zSwG+&SN|7L;hw%pz*)qhseShmct4J`#5-au+RnUS2oc4lr9(isFbg<=9HfW zs1Bwa@4le-heVE=tO5^Fnh`YL$1HHx3Uh;Gk2XNPdFRvbZKlN{#3674sY#b^5;;{e zYiKsc7nzjNREC6<*3jTrGn+@_ei?h~C}9zIE9iV3ADXY$)|vem{-&3Lx@eEk}R3`v?UEDb(3=e+0=;Jic6csID&q< z9C49N_khV&2YfHsS#GZT8cuptuYT6p~vmiqJDv)YUTLJ|j$m=&J zKiTG<=&8)pK_LVo+3-%K_-JW<%iCO>AOD&S*J>)BagaS+C=^q`ktm0f%w{zUHe#`8 zm93-J^h{G(Bpx7JIdB<4R+<^`)lQ$8elTlj*)-$(p?a3QNgfypq;D@wRwGU{07W)374U| z<(%j$Txz=gmjvP;bC;!I8MR*NnHw|J%D@gLpbseNkjz9`JMU9|fI3M>EL)pq>t(rS z=OVv{Fko|lN5sJW^J>!4G)pGwa+^Mi%o|$~(J~|Aqj_v7oYE0qS}x&Q!|m-}DQA6v zKO#f4z1s?8sd!d6Z7jmY;MnMv7?F#U&OnoL6&y~0I=4FK4`<~nteBB^bjI6Vuo6WL zb*$zKPeOX4p-?v99!^PkYt<%YwC#ErX@gdklZ z{8}bD>kJn%6%xpS`m{xz7%5Z=k6FHOcbxVg} zj5mOd6_Ij~RnDKB3RH*Xmi%VuurqiWjlqYccp?Jj+*&2r_P14W)L^)4Fr=+*ubgSt zeiKSXi^8V~{HJ3r$&Y)YIeJWTWA%?epgy-1D>wtsB~|V(IR*T@C>RBkTEjQEOc+!ROCP^T*IGM60<(SvA zmkJU64S@U}!VGUe8QAjHym%cQ2f9pyT-WE4>SVmtMdJB|;YBn(qf$t?p84}JR+pCL zQ(^%#GeSahGEN#q$5mlBHUr7i4W*ylc7Tl$BIxjCr6Zu|yEe}+NFuqHu)fG?sP=N5 zeY#5f9d8A2n&)^CI(otrYTgA{kg&XrW2 zoXGb4qnbz_?fvFRCUK)bAe}q8+8F2*@!L|zQ@Xu=op+)9m7k1Uuf!41OXr&jyW|cF zTrNPe%f&~f+L_$@kUaX5Z>)=*3;`(&N`!mlUmHOMovsA@+F zJ9{ug8|^T8;9{M32nSPt)vvhUmaO_GG%<&8ILOvMj>8)Hgc|L6Rd1?V9zv0x90}8= zc8l^Yi07RGq$O15EQ`*q$8M18(=I)N8#DUP!_>&o*)$LwJPs}_p)!hr7f+aJP{ABG z?ln=ST|*mrhjhAv*4pQDx%UrKKc z^hK3N$up>?6cX%305%tcvKc7M&i3yG1UH9nbj~))zQgkR%FMIOs4r1DsR&v$?ka0~QPq;n@KCjJ(R)1`^pRgJXn(vR!utNX1%k|(=9{WASAySSXZ znwUoSBLuO~yD;rfDcE5ulSnj~P2&6t+bj;QYj8Gz$tEs;D2@zY>emJUtpHo=!*M}t z|9Qf`YjbJ1KXJ%K7Pfids8%oWeGkL0$C?Py*b29TmQ$TZi_KPwF3HHXU#nfAW}S$) zqa8E-plY|V&>V`PbfMxWG~4b|v;$J?H3T@HJ5Cd}Mo9vCOV*eH1^{q7P}2+o4d#>O z{EwZ=)xo1hfck09#nab;ZVjOs;z=npWXM6$tzz;z9bYj`6MY7lzZfvyqMC#LVA5ZjYuE4ge9xmCrc(ZN|$+1@6i2zSPM*kwYdI+usYitJop0fdE$4YesIyUFK-EwVQRx`+Xu&wheDZ-$iN3W$xLTVm)^^ZC9FKA z+-rj0T`P}`2zq|K;YSvX#+c3Mculr?wZ8Lmv zAn#6J;9eK2@v%^9O zM3k!g#N8HPI!s2RRTy=SAnXXAXT*B-r60kbZFHjjvANwJHMgU1#ProPaCoX?J;w*} z6guYvkDe70Wgv|w*WO_v=%9frb~7|g1s;me_PDaW60V1=Mg*wf`$GJO$q_a}QoRLn zJ$sU9qK5quUhztDSVy5Li*&v)MDZbt19Yp2n5!v4ZaPIAq*;Af$9BMwHT}0hDy-(4 z`XBIg<`#~F>h+);O@muxtB4}`zJAAHGDxXNvF|a8KtVJ5aq-uMlSy)R5jkR1r7E2? zOrKYUY82%_N?0KbxC)%N+k^B9iu{MK>4XDXU*IZCZQ85*-}`Y3J%A37HmRf-guZi` zyAD^6oRUhl7c!oAFn#FD3dGh?PP`%giC`L(j1P-ZG$fq0sLkf%B0SmaV3=Be5K%Z7 z;3Yh}N^uQH*|VIAS961CBOv8PDB@a)N!>ahQI0Lj(Vm@$rGLLd$ggYk3k{s1WbrM`}yn*VI|>RZJP-9om> zIwTO$Ckw1)gS9WT`R3~|i&3-Io)C5F$H#)W$^FaNb}bwp#QYVkoNOw3#>zX{PS~H$ zfSrCbNBiBcn}xjFs--4s-#|I;mPv|iaI>#$tBa2BctdEb}BEKF)NF(;N!5jqiXiRX!KQ4 z31mTuE{ zucpVrd5fCSuw%!ADZspQOJvlfcvGN%VOkY3PirjPK}`FqT+i0hIIQU zfft}9KK$6b-xX%`D4hEn7EHe}!RcQ$f$x|>8g|M3L8y_*A?GY$S5{oC+ z+yZu4YFbfXyJ~SbE|4cH@bQlSjT{z^XYk@Q8%{6GJCk#EWct7iTGk2BefxD4h*XE?PVB=)a&xf+VD)%*eFVN0v@{8&Z?a*yQ$669^#z z@^k?n?B|Z56$1@*l0QOK8xb@n)n+=*Co~A#;su?2wu><-`3&O;T@*%F9CsV(`H%k^ z;dVz5&A?E1HnL|gS4EgTmAE?m_=954vAo{;(Xz5@=H7y4|EF(pnws_C5Xi39%J*t( zcLWi4G_|OhVQfI_llMw(0NT{}?we2E_voHveM@S>icdEazv%G zoIFK?3|&}j&9Q{++oY|s78h{DNsl*2j~t=r`9~!`lNyTPDY=k}&H*aNp{5|LZi^$* zNl!7XKj*usSi1mYp?bI8S#haB*|BgcK}-vcrN4KB`!RBN4Dq&>51)9d&bHRJRuRYl z8x-{Kz(F!vcbv%d+Jf|QZhzL2c98RmCrnACrLFPb(ZqjK?#xTMAT1 zHZr7|Pq^$)jgsegsiFRjzLI!E2(?FOBe;Q0V!r71o;_3yY2vXW$^sR?+l>A8g)}_E zTCOpnG|R0wPb(Y!S0+G{!2f&qS~h1YqQWNE1_B4nib&1A)R!sY#P0%z&(z5NGo&!N zk|~LQ>FOkjcgdeG*Dio2f@9N(0r^Vt;+1R&y*MpZ#}+5 zDRE-U{p8<6@#H-{u+Kx*N$|INy{{ATq%{9+#Bwj5DeF=EY&#k=OTDJJ+_=kttIweM znJNwtvDSSU>6e9K!~*eLeaD>KIup=ZsckW9Xa!dY`t88Jxb#~p_W|(vcqfTREe61K ze6}5>WR)gf4$NH(00fNR!XLV&N51r#y}{a#kC2K@wNFyY^F$!6O`I*GalWkRyqOD| zXG?U29Gg`*>2fhtjNIWVIQi#j;;W)b31e@<4{s1E8%x&YBp8cc^Y%i*3?aBfShYmd&6?yKc(`j z((}^}I}iG`Oh=s5_#f{Ltj*xQO*knoH2@0BMsqDAWu&=KmST4L0+uepYBF4Gx1B*- z3$_TVjc8M``5kEVg!eO%6~w6K4x#uX@n4OfmT@+fyLb~#*+vQ<*fUaR8$RMJj9{)8 zll}&Cwe_+gL|;`gWwlG`EM`0KaU^Hq8nca^Fla~2Vgu-k=Qpi+{-f6SRD#wpI9cG3 z!wJ-A*elh_AzjS5(LNMxF27B-bSEW2A~vdGH&yFgum(7|EmC%UXTWh~^iIR+pgjz) z0&jl4mBS@^s|eXbStYiL(k+r8>9Juw?Uu_-82q&V7$c0H6(iN>La~XIEAGYYTllL; z&y@E^Ef>3o9tQ7=WwxvKX}wCeTd7z8$$fG#V= z$7Z_SqY6AXphr?cz%LE9%j9o?$MVJ!_C(3*$7WpPlMCu@NOo>VPuhpaJf6nC23V|L zQ2Ig2+rggLU)Ib(S51RB7{-3o$uu^CaLbH*{4~}`V!QE>ZCYK-h0Hgucl`z9|f@UTz=wGo;kMX!C7zyq7%2Eui zB5+1S+y?>(OKP-X>(UVV;h-jy8#;!IFKc-U?m=Ki{Ji~b1ZIE^pR#$c0-Sn&^Ut1) za$YmAsg2$+DTPJ{ppO58-s~vb$Z9W1{*QJvL(W)@f02517XqJP-9MQ}czLley~^AQD&LOTxF$-vwa&v5OOpZ(f89Q%1e2UuvR-JY5DvKc3ga|Xj46ii&wfZ_>t}nV;=FqpVim`d zZ#F*yf!RB#n$;t$+O$+`+H0~VOf4jmg)$h;olv%cX8aNnf?Xf*`ovUi~C?BR^hw?za zwAg|GY#F#dY}ti2*wl7qgx&TlqaYV;BW)VPM5I;1n!{<~)%I`BT3=ZE%qQiL16hM% z=WdNp<+OV<2G=<$TVkM8#?skPMW%XRy;^QGS(hh%UNBmEQA zy_md`Wcj&$o2DzJsOq?Vep%IdZo~1+8vpn)F*MGvFRN#`h;{vgclu(rgj2mFn9dRt zj!AIvNOiRvO~^(GRn>Qrc}T_qe=T|qAF{Kw`j`l=5RQDzsOL%~Ei#4c;uwxRO?GU` z)x4|5u5|PTw1aR;gBjo5e;xy3Gx%Ig5E?>HSmk+z>5dd!b*h4^oQ7a1m-RAyeRv)`@|Ax<%GH3T*pM%~vj0LCK%z7Z+a4@!huQEliWKBD#y({pA~*Eaaw$M$Y(3MdmT5k{9S+<_^-+_TY8?)W!6Y(J_+MUFoAaGBd+k0~_`{rVri>w0E+dEtE zun==SAU3xj0ke5%5ik9`j1o9hcw0`E11q+p*Nf6-a?9v{tH?uyj`^}bnnXlLUl`iTv+ z%1b9Z`i8b-~vy!1-7njFs5G~E*C#z1F!5Ze4+}DdjVA9H~dS6XvQVg z*ddU8XB-u+qY~)zVN)Ydw26YjgKn9tZdMB{B-iHDxNZ4{YjO`LeTn%}r2*Y~r5qlo zQvwde4gGzTksRIXZglR{=C$$zf6s40M9vcdug)#?0x_J&xH19-8 zsG-b!cDK1GC7&1}9}{t}3qjNwL%Gt3XENlL_1Kid!d_vzJg)5eT0fi$ftnGH(cww4 zE?49Mx~jXZlrcs$-L5U!lYTApMe}DTc0m`BB%k>7IXw#Vll#{Jp4%_hqV9yuqZPHMWqVdSWGYJ}MGS5-?*f=wG9B3KmU!X$a;3y1Kqt z9kkQ9y_K8ay$ad`D!Wp6pp$)mhP0PTQj5}bZ)ty;hXr;w(U`A(j~x;DIVExd&Ex|iJ!M-=e%#FD|CS-H?GgiXShoz31Eq^N_M8=LsRaSLf{ipK25=eI^U%pM zBxg$fkt7f&QS+CRpsB3<63|eBkBBn$8+gdhP3%4&#pe{lOKT&zGj%p~zik?_@O;c4#>6`V=yYFCrBLUZsZ)90Cp zxGJd_)B(tTemoGkEiFdbi@ExSn>Kw%lE(y7NC1PT2ia!OkAwgoRTGqfY2U=3zEd6x zGD<%~imQG|#ZO>eakB>m^WSOy6gY@Zz^}gi1HUCnrc4v#wnJG44>;!fzv2I%dZdAb z_7)#vyDPQ?6>nHpp~!3AoW$+!u#$6NoCg=A*AiA?MR^p$9^KI5^{%Xh?MVlT=9ngy zK9>_|+Z;m2yJq5aTU9_FbWtdj&7+FwxNY&*uX0z@e;DhF;m05x#0Bi={-`&Mxdh*A z5&q2Bov9%tFkZ3eCvZ}Ijb;@=iMfQqAvr#~l&?_yGQC9RpAtpD#EdR^*k{~Y9v}8p zyA)z5jT(QE`)tf)AUb4Z09Qb$zmNS$@3@LVhT{}ntp0M5ms zFoP6f7tM*8O0x@avbLAud@I$LMH8z(MY2kq)Hqbn1j%w9a45En60%ra+ zK&C)ja0nL4kQZm8)zGiVsemnen?}Xj3h2a;g)f%~={Ho4sH6QzU|ku!hNT;Vde=6o zomR_*oYZ07ilQaubMv){EJDWKjiXCJs%Vc!(MRjTKeTN6C2*K*<~v+*u2vuU=caMeqarTh%;b`cGvQRat#_^-h?Hx5=5K>QyaN=JU`l-7PBqN z$<%l!a3*h_;w17L{a-gW7#uqH2M`syzZh@SFgii zogJUB_Td6fv6n4$>I-@A=27SeT?G6g&7)m}Tg+_eaH9si+g7Su4|Cc%;90cW6W4mG zphz%%9lEWlCB`HK579rW2gqOyExc68S10qo{4q9cvOJ(REK_8z##oodz`xW5Un(nb_BG4=2oa6?&vv zU@cV?P6;cbKGo{?J7L%Ckr6;nHuK+-=l&mwaySjnw(h?{)^k`Q{IvSy2i&HcNF2J! zjHh|UrdJ_7mMX_uZ}V+IQCgJ!zZlfsiyGXg6;v84ZGl$2m%UVn8m;oopZAs51kSwC zz4!Xs^}_jtaOe|9;PS_K-b%Ddknx2Xho1jHA5#gXlxp0(F0l|oi&cPB(VG}sUyRC3J{lg z$VN~f#k%->yb`Ww9CdVg$gD&qq3@R;JE6o4+naIEmE0qBTvhS!i!O+mMbVigefbO& z1OOme&#i^FtMXND z>2iP%-dUvc?77X?h-H5lrgqhpMVfCih+Z+uKyzZF!sl8rKIb^T{FpJ#5)e+FRJ0qB zyDGe=s&tmkxVa^+V84YWtkx#6CC7E#ZmLq(mP|UmI+DHC&=wy#I)kN}5jCQl!j>@M z)jGe0B^C3@~wYYII#X(pH^!_9|5cpPphOOt(%H8~YAVpr; zoJSK2-KcKx?{`i31YKri=J%`U&Y&IEDxlmUd-F@2`rs$^x;#%Zv&-k{>j^2VZ@L}m zn+AsQz0MOmOLP>cvM_3eEAb%FG{cgMB3Ji4Se4*75o`GZ$N`jMISu+mX}3GE*QKAv zYb6g{Z4PCU!IU-Pw4gE(Jt~O^@C9QON-JlK>e?Ea6%e|scLdSFvY0YbP&bP|+5T>2 zRbpI#`OtmNmv6^{105MX&%bj{PuV6q>s<5pV9Bdlzrl_dDVip}*|e?>!IQSKYV>&w z0w>xvvba9bjV5IKXpX% z66?4J$J}Zcgx04>VCZ~i_4Q$=#}HH)8EaK&C>~LZmH7Kkt4ND=f!F=Kw=K0WlxcH? zWbGK|qWvsG+b^8zTF?cYglsZgYkx!q;V@b^A#LmmxlYXGVbA_RU zL#Ex$WhS_?L>Q zDd%y7Hg3t5Ddl*NWX69)rUW7CR?-mL5x|@;3#Lo2!3O)Ain);*$1r2JEyFr7ihI3Q z1=|a}x6$1xmWK7q)A-K>5iN3Pj))vr=jj9VR>H4f!!q zc_S+!)&?CrmZ+xg>&Oma{w?AJ{{9QGI`47ZN5{lhfBDwmjdzgl-ZmZ`#fgFA=KTCjK%yO63NcbZ?p|21dWqq1Fn{r8={!1OG7N~vF6r_5`)v}! z2Z+3i{7+VSikJY+j~m(hEa+XYmmGrljV5#DpgV*?sKpE}-%ESQEe&B)1yonKbH0|( z!aBk#UH`?B>9cJP-I&=dO06+P%o8LPaV~x5tJgU4Dd%GTf)|o&qK#{|U>QT6^9Kj3 z01poH_f?l@I!`*J*VHWPJ^6i6{zPP^|uC*1kWzc*<8j*xT6NsYIGi{Gzh!oe2d zGJZq8->djuG~h9iqtO}=Ncidf{8Y)@+qUhNi4%HTs-We*=sZ5~!sJ*}=-oV;jDWT= zChVaewDwz*c%L07k`zV_q1^9!XNQY>i0V@^O2p8#OIIiMaXVCrA9!`}Eaea{mV@9N$WOfb zxJ2x~5eECawj^rU|4VAC_EV&G)ml5eJtxp>1O}7knH|&QD3c~W0r9Fq1WgX6ZmNk7 zQ-kIn$Hf)f_NCcCEcjMfxNDzOZIE4`BvV^N>cZGIT1!PT#(yUYrs(U z7}yf5m$jREwxrY7pzO0HXEh6xlQbe#542TZD=;jCFCqyLPuCL-h3ff}_xgvMkG>^S zLXw1kFY&xn*@=@5y^>XWyBY;wAr)SmBAP>ILqs+VKsVO^OwQD(PWS~1pT-h*TdO%^ zM!$UiCp+e%9m<2`YhB@vx$e`D3J-0@sZ|h)G6tTO-}3Xhq8iqm;qI|Tu?@Lhg5LS6 z@z{tfXK0q{9HmN=9m}o{y$;Gi@<^T4gpn&7>`4JH$F^D9V&3ldN%QhAxnmCxDFc;& ze)dE2S_l6RqPFPTb{MZd$e2gGlrQbNejX!?un=*qtKOWJI82+;;x{%gafAOD%|fHI z83hj!Rr_IQ_Sv6!rj;JqD72UoqrBk ztW>J_labZsPSu19__XJT`t?XJLY)2TVN0*Dg;k8;-adzRAWo=Dk!%kHMBj%2O!KGlav3jPEKd))%0px${nbsb61_49~p8@EwAKKM8f zs%73+&8-hP0XYneG^fk>p^LmtxG+&qAEPa|_&y}5DqJKVLp@T`?;2wMW1wMml3kSl z87a5eOR|TFzd{7I^|uS1-cv#`s_AG*uTgHM+zp!n)#YIx4?@YF6Ufe7EW~SO=y)>Z z%@JgBTl3y&E6z<$fkjr)#Dk=IIt10k9>x}BG<9$uz9dY~^nWBRAov)pt!gST!z#gH zEUJZL%T>NW5H0#ZBY|$zn|}4FO(KWcZvnom*2E>eqUQU z=`TBpw=MuZxiF6?b?FF&jQUOMK1WN9xHsX$wlm{#_~Oq!w&B=i$mJ?CbFWXn9Kqwy zYq}ykAvqo>m^p4KppiTRl#k`ePzAGVA1^d*Zqd_DG;!+%;RIsAfq=*gLX*}@47w0a z2uvjcqfpCNn$2%J96?>$njk1Uec(!e@qMa-I-(dnF*0&$)dD%dRb{z4RICRWHNqeu z{RS=9=#YKBFu&)kFDJ@Z5aW^}48xUcV$5M@z1ycHE+`JaY)83_F~fcqNnw?aaZhBJ#I9{RQe9Ll}J)js3`WZad{>O;jj z7O3w*BF~P4Oo$JIabH1@nW`f(XaxK?1d$NcH0kX{rmDaZFLcJMXHcTBFM8n4o-v=eZ#AERf!D~q zu!~f!hV)EHLtAs)TT7bB#|lS5*!PUj1@e6P&p|#*e{P6sxa?1K*0dh|(4Ncs@H=AD z!a|g-bDx0mc@@q@)#ach(M)(+;&PDfl|zxWC{WJmBFNTS$iuC&oF$Z|^&rtj+-ypT zxi5DhpcaH1NIf{erPD{q1Gf9j1Brm}HM$0#!P=VuK;@mwRS(&Ue`bS!W{XO=6;_+L zUl_b}jZkL}Q7)kY^fQ5r;3uzxFP7D+w{SU9^~%)iB$=}Yq{oXM0T>j5n;2B9TEq#D z@AzCu+(kLoV+E1m}2x@q{>=-3MbU91lQ#kQ8xl+~0DZOQ-I+>9Wjy9bX!D#28? z;pOJ9*U2!ct`Bf$AI=2uZC<4TpJY9*6bv+g*9<{35THSwg^wvN!Aft{|%O+U-UW$B3v=&Wasa_u3njjWF?3C z2fk4nD8Um_Qlz#OS%z|P1B0iL<3^0rk^$DgN_K!LTxQjV*XXT#c^O3ai;D17@6)rR z$jEZG_`y9{fJPLoRGKw^$7TI&*Gc06g!FwY5})nXoyfrFWtEU=zw`-#$TtMjVZE#n z1Y^?Ip11To&bFQ!26DD!DJ%~EEARvK#Z=kNyr-LP+FpC=sFY6Ru}@di69$L?)p0NTXwmPq>XoOtfTy=I_$Yt-i>#Rr$af>x_IBC-NOMB07Srep%@H2#(tlV8<26EIrkM|*IAI0?e)ky`gN;8x7W+@ z%A4{z$ILQe>=1LFX%M_|e2>D_Hx*8*Ge_1p{I%-0r%&o#+Zq0!cx;FyS z`+QWhWCp1)o~$cz(yKV`tSUarAF`$RYzC3&3cw?9$K=&#b*~<^Oi{RVRTGO*KYvD~ zLf5UM-Q|EsEOb$N*|)B1!a6KguFR~32pXZ+Zj>J7X0}x6xeSf$jE=}pb@rqIkBt`? zc`&HtPGL_e@c6S1E7wI`h{t!UWGoeMO( z!y)$fvMM#NMD)wW9euDrm~$Xtcz z-;eZ4c4J32U*!{^bPxhN^pUnE`1Xp_QgAFlQ-7P^%R&?-+=~)L#1mC&F%|N!AzERl zV^-f34$h4!-4E#R4~M{T7p$RW+_hz8=S76@rM|+Gr_1SCcTE$Ib;0?FoX1g#pnu|;X9ecCJ~&!S&u(+xr4>EUuI|VOL&tgl+J?1% zPdvB<&(2dksVDl?dG31-7LdPdT)a8i)xQQeV#qudBK67ZHXH@Bj=P$~u$P5Q)hU@p znJQWz6%^1gL{XAuy?I^7iPoCm$wl2eCi^q&r|k@RC}Y?41~*^|BkV&w$lcbhP<26I zUw6$@!o_F=NawhSCCEM_omQX?qlE5a0zT9YS8F@5u zA>|-oFWgMB8=-lhLz+=;65zBr!)aylwCA)xt)t7#Z6z(&b(UVgg12ZgMe+aa>rA<7 zk2}{f@dte!-EtKxh>v@mYd|$f^+5^#z5#)+ zV1J?nLjMvhS&?LcHhAcPajb??2b>f1^-Kvdpt^1ONY{6pA4H=^weRJFZ1OOxxvLcU zPL%dgyt_X-Nju;tdotvZKd#hRJ69@vTxTZ0I|`C^rrV(tUl+1gT^(t=Z$9UITHyaD z>SQuT8ffZU=2!a^ZrEjmHil95$!LrUn{m&O>_O=%N!y)GPJl@o{&Hk`=2WieV?+d% z3wZXH*SG~m{6NjDWJJ%v<>~I-5XszKL&i6G|T^QGJy`OhVSKb)d2XRdq#O6i|dh|83W^A|H%P z@q169QM{_nn@(r8ju5!>T9afJNJi-JeN&>u8@CLpSh)|6F{eto?RnTzMLqx={mI%D zdWtA{y8HLAt~L!)x$Yhs% zN#yediaccU>G(vGjhfi;V_~b>>f5sl(`i5a8Ap7rI^!&^tKTOO? z*E3e28y68pIX*U)Xu?aC$jN(cs^njCN(zPpJpF?!htS~-8C}nkGe|#By*^(7Z&B%%la}Uidbgiuf4X%f%0}2mw6&*@=qb zl;&(oZo*AB@>Okk?(+1(YS$j_Wqd%RW5~vU^enwMo4Kzjw@ALPOBGilx0TzhUw*@FtnNmPI5Z#zETHlei_VH^6WT zz8T)HXxe4Au~v-$Vww*p)9t`pm=-a;g`JbHNQ;3NPwq*!NR+ILK1dB^iKB*pZkB#y8 zonnutY8Yo3Ryl(w+E`ME2~I~o#wFxxaeD#TX_r)XbNiydzW=h{W;^)ul|u^}6!mgIB)W4xu|PvxzrM z&nxdXiPqHp*j_|;jT#8+Dh>nExEEo0W_j^IK+vz|cI>4%1zN#gjRLu!E|D}>7cErw zJ=sV*F>O|QB!HpOepCHKH^e1&%>EQ~^C-X0r>#b#->w#g=);&SJ}K5B(GSiW+4d;! zjbAz0d}k-0tyX@Xjv`5b>{z#JEkOr=iyyrWQLeDFoj4H9XmDe#-Aazo^vC+d<6GZU zd(N~ZatAIz*`1ZwQFXHcYS}jUe=a{}hfz@LF4+&^0&>dm*jS;xt>7X^ZU03@^VFq2 zQu2^+Hq;(M4g!2=jc1DE(QI2ul-J4ddzB+~cw^#UziQ;4QeS~tXIO4~4nhfnCrJw; zSZkaYw=VHlu3V=`TyO}yUYob{su3=Xu1eT+?>3#K{9bg_wI=r*x;d0Nu7kGV@|K!A zaf(yA_GyQ88=8b`M_S)wMc7_sZOOo+5D#}_J7nvU+=XAP0G%7AZ3#?5o%O(I8K@YQ z8-sfPVRVB1_*Y7mK>J-o#FmrGioRrmI@|7}aqlYZ&DHh0E+`XkDv~Jah*?*7ML-+? z1)`e%K;INQahu1W*SPH2vuDHM_hd0aP^VQ@-&rQDa+G^gFShe_hf==XO5mG7=fGSy z6zdCeVy1ZZZdy-n4Eof=2=hfbJ0y)5RAzOe<;f%y z!_|pBiZS}Ks#&|Urnb=9j9@vS4wydvr1!Svh^@a<+iE`wyVRO9$Ado=Cben=5%ZIB z`vu>z>i5U2CYzW10PMBj_{?HW9(2`R>u3L7T&uaWf)aRxWsiOVUKf>IFEW!XzFgM) zV#*bCee**^hWTv3s(PUmsxA8n7n9aM1v|kKHK9N7l$buufYAmWKJz&Id21?my4B(U z%$J>NQiTc?v7Gr6RKHI3BMVZ{K{R{Il1in&8;FxXghwJE4FA4hi!hbq z5EwCDm#{5t6Pq&ra^S34LQ(fGJKj6!4x)%<_u{?-l70S&?wathZ0o33Kup>xkbAc*obx9oI|Y>qNA}-kB_DX! zvJQR_qlPiqjG3DJnw>;r{>J46glCP_$(Pq$wPw40>&kxCaULq<+BuT)m*d0GLO-_S z@%KtMmw*P%vPd?5!2f)6CD`bQ^$b-HK_!FSNo3_(Y`>$=VSCv08P;A zp_-7dt53d>7(m>~7J0uo^c_KLD)?U~+dRmdBHI`qWiB_76*Wm;xU?@NW}(8q-X5Eq8%m9(^Vvc6Uq3znE7nWoEl|It*Y-cdsJ zD+Im}uV&TC#wt)d3xNv|Y+e)B<5Mj%)?h~N@8FW}jp~0HbG7g|Yj^Mqk@S)sDeXw! zR1H6B8gOtGOzq@JYq}#)=|d8%v%wZ}%qM1Xy>rl20*bCy(Kvj|k$9`3-T2SPgNkY{ zJ2K`F0z8_xPuA31ftTjR?pTMePLvFr5N(Fds=B$Lu6n!FTTh16vz}tfI?0U37wir% zrD8d^bVTU6oE^XSI{2c^gi(7}w6ca%B-^)stMRjrC?qy7?VO%8h->6*N&A~Ocv=l< zEzzyU#j|k!V2j=r+E4F$o`93Pz;u%=v!IHo+!Z~JIxDK|WHs1>DScM1)mAXT-KL;6 z0?KC{+VzX@C|Spdk)fXxJR~O!$zXQQ7-jo(Mh7R>iRu(p-Go~d7maIC<^`U=>u7{h zK|>I}aylOjR+go0_Rs{>eJ1^I20g|losV-O!){Wf@J5c55TKxmGrA?#c)ySExct48 z2JyGhLh1>_9E?e=yntyTzE}YWSJQ3Gs=m+jd~tcg{}K(44n8i3C400k{7APID|xvZC?XO~hw4Zdg#ud`vUIxz#2mn!B zRK4irlLhGEDbBizj~=R#PtT<-`elrt*F9i7G6m%4zw0sjU$=O~yAJsaY{QtKvRw&6 zN}DGVoVnz?e9OKU$AV^&pS=d&KvmZe+H}es$XID8d*syD0l8YL*Gni(W9ztYO_ z5VqKh^lWS}p|&jwg$-ae{5vHEJV}+cbf?diy8gSTzz(*q4U_3zdT8g+sddgx4wiuWR8kF=@P}GRE>Xg?P_7?;v7cvb7^8219F}Uhlo$h85{U| zHAyMutM1f#PM8t=uF+4|f|pmv`D6BNjr2G6vz2mz!f)QJRT35L5`HOHxCB`l_J9H& zb(@4n3Fo&Pe?ePl4-VXCMFYE$(g{2ZH<`YX>cbjaX}nq(OzxA6rwO!|#u?CQ{u8H$ zO26W6h#at1zc3i*{oTIl9F!MoA(wJ65&+)4r0TwaO1qE5-AU-wdS*D)A^`} z!;jT34fA%MwuKpKbnK2Hmex|L6UaB(Ulb2SJ7%u; zQ1DYQ;;vhIcbB5HVudtrS1lwgo*V}S8E5#{_;86B=Ktr10y-?}4_NbU+)=|v-)>>h zURb(eX1efyVBE`7WPYefE*G&UWy2MyFvP&Y24QKkOyiDDQ+TxZkiV1zDMYOIL4lM~ zR{dctrbQ*F#lH>F?x!(3Fs4>SEkE+IZnMKG&{SL}Giig3<4<&1?-AQCm z(dd|m6{(Eavsn_G(|U!n#Jn2v^);o~%-HD>PXv2^HS1jY;7^r*h&%o_U=G5OEYR0L zeH-5i+I$aE;=59fP*UMGTse_}zO7_3IyX9H%iF;rCq+QjN#r4sTR(oR2G-N(9{3Kx zwj06xFDQC+uo_nBNTBcpNdO32$4o`FQ&rX9e1@JhK*1O(j1~Siqtv=0g}JAzb+6#W z-U;!~81yUxbx(UGnK$}(XH8aHEK-$ct)MqG*o{H_mOxL}C>(xElHoFy*3Ps_JI-2- zsc*@%6b(20NPmuJD+i~>ck#NhuAq z0eiRlw9xmTAtA$;Oq}^hdeVS;MBRXPa+D>*V}sakbSgAL#$3;IHMLHTUMzr_l!lnM zMn5lwj1e%SeyzLg?a#^ypTXJBf_o;9AVHr>pcYz;u$qj z=$4LFrI*I4KFTy;ZuG|t^s)2IptaJ}Wggk|UifZMN6Kyj9An2cTU6NIZ3{9ZYhz(` zrJ3}DI$I2M{@qMc#*c?VdzTdOFNtUa!+3c~lnWpBK`{18qg+7(csm--o~8l~a6C}M zt~n29EQU^cVvbMIIBTL&IhzlA)-VE8(y8hdnqI#V-x=EpPq@2Aed#+KOa zb3(EQS52StG%;>8<>mvhnh7LGW{NSXlaHn?sr=@Xa6uCcP@bHrcR_nI(*5>>^S9Bk zAM^@PAH2QUByKwLc;Oks^qGJ0$wI?NK$FQD$n~(#N)0V3ld_5umHq6p(5$cU1COjz zW{apsnO!h-W?dIy`i03>Yz=oRA;EA-9R&7ox{NXu8l;2W+7U}F9fgP9bc?MYm_O^a z)osCJw;uV&=Q_;m{B+srk7>5DBAv(TAThRVJ&x*+haNtG z%GK2w|Lsd%P*JQx3_qeta>YSvLC7#6fuSEe2O;ojjrBX_z;CX8%Ebss zLk{-sJRsE_uLVaBjV7e(hiwkX1zBF#7`%sQ1_kq!_JVa zI1f5??Zcqr?J)Wq$aQ3(PoV9Vd{3mFI;5tPOnM2yAg#7o7W`2bS8T0kGdRL#E=c)H zk(oLXqri81ig|1ZaLEKlt$V(WMD(;}igr2k1Va@UrsD^Pdo|PyY{SN);UXemj~|C} zH%Uq$Z=`DGh(hiSabSJ9$6=#b84SM}_sw$d4|)r-gWWC7*) z2cuKssGUzX7wjN7zWo&SGe4JgyUbCN2KNAd3iO+P3EtEGs2{jjfNg(m>5a%ZVC_@^ zmW5O(5q|FBOX?DmCVUo}jUj`Ys+ELp2{>^#FBIn-2+pi$qEmTa`pr1%qW&l*Li+GD z9@3?Bf zNOAdxC4+Zu81uskjW*ilvB zJ@}>rPA!VT$uIBSi=2{d~8 z9D2^*`7)dG;789a5sYP5$tjkdieR7}05;Z;cH8Trkrik!PI^=iE>Go}TS4PL zyYeW>{a;VxWPfCD*K<%uzQ(rbS9MNbpm)(c!ny*N6ULltKPxC5un{=FMaM|1R}b?r zOP5iGKlilIRA+xR_%=~P8A=U~yyFs!BV3-eHM2N%uKlR|c)}Ll1NEY-vft>4h#8als;NP7@NA zd>E_v2t4Qpei%!Vt@CL^{p#!r60+h|Nh2p~k%m}`8-|JX%i%>Fd19_MuKV8kU=n;e zvSmHUKsYFUz_*QRnayoj@ryDuSG*==5jddux3JdyG`ai#6I3pq0{$c~GR2g43y;hlo{GuCO=rX-6p1mi!TN+T4cB2XgHwHw&1GaRoz^a9MsH@7ds-JzV zI1EI{hwWU-h6>SFl&p)>{!|65soHzNzTsYdLZi;DqB&2+rfA18oflqwcN%GHWQi zyIQfr7K>H`b)>k(ASOVR2fn?#lbo)@IO(=o6OSc~6uK;6HCW3gza<~c>7t2xd z)l=^ji54eS_8vchaBy4`gmIGRO1K;*dml<sX^AdzjMYHraXV9R_c08bxey!{Ir95KV>6W zUEq0o68)dRb_|RYGPLJFnLT@w0O0pK>?~TE4(IV$o7I47bb_C;9AhjuV~Q0)HRtP0 z*zSnnMe%!iiWTn(iaW4Q4K=WumXjeS`J7EtT%ww(MR5^y1aoo2KF*dIq!?s>BM8@w zu(}xRa5|-``rdYK6asjKX_VqbFZ4NY9@I{6MO^~f{?L&*ZLCjnG(_UANr_WH)1?zyvT5-dmkIM>l+o<^sT``Q(|9mmj{qv~ZA zMR{DwGER%RnI~5uX2D>{<;>HU_WQC4C&R zB;3x%kTw-5HhMg;XH;*vra|PdBOX)vbC}VSJ<0}mRY~54zV=?u_`2W;5JEeX$tVZ= z+q!^V$&Ok9L4;H>1)-p3Kb1?hR(yxKdV~eMqrildrsc(hW1BqIJg5?)tmx}`x{}Cs z7hv6Z>U~>w^vP4hfB?!7*dLjo`$(M*0nU;d zg?6QAxFUSYd!(fb8XNs~?zB^66hR$NB^oaIq*uAw!dKjmd>6cQ1FVSJTGh2*hJmvw z+mJ|K;tjfdW4)6Z;wox4{VBu8kjvWtXCe-*aQE;AQ)Eo-fp#2Z^Gynu1d_SbY^h5J z259m>v~MV%)||3E-_z&1RP>$On-2h2;Ad+&BS!VC+#Q9PR-LV#{{Bt&>~QD60se>; z(IP}9xx`y-Se@#1>-div-|%kKnKP!ZANo5)?cJnkKckV@H zYlj01>%MV*kl;>*)G#g?tC8KGT%3_k;eMHfa_XLoZE9k}pzPov+4TJ?$@s(IV>!}g z<`xov5~ER*gOi*MJXTnZ&!c1NB{b59gQI_SiDNU^cp0X~bL(mMNLH{xlS zoMnTl_VNPKJoIz^&~qoY875t9-H$Z)FcK@T0e9Rv!J`*07tn60tyw3{e`|}=GuXlp z1s)OBg5Bm6aq^8WplU7qB$)CGV9SwCx&yR6de;~N26YDZ@0<#Qh=}JZW||t>{@{ew z()yWN^WSkx$A4O@Xb^Pf*P=U zc)&Lf{&B637s~hq%$$k9hC#ES{1y`Y0S-~+HpT;MIbQxv@99bEunu$B5xst;++4uv z7fOMNMnANE^dQ~0UXU5cZ(yC1+;c~j+7%-rENdJKwE5uxeQEzQ=WxnIax>710J2F3acF}D1B(Zt^aO>Dg0P6wR_3%Lq~Q2#&q zNgZ$~`|B#Prnj^{K~Rrh^AK@iiVN67KDapg0QF#z+$o(o)pO2SS&V3nD}3eR`53ui z6b33)Z?@V9l0D)$HP1Y%$FS1{@>|4$8~1gpdTn82Sqj%nUs&~u;~}Kle7TV z;waK`kF*;j3Rl)?#whC3EfT@1dsiD~V)pe=I~De355r{KGJ{D*;7owt)IY1z|8d{~ zP1R_Hb&$0Z_qVrN*!_#u%&#Dw9Jh%1^#^Lv?c?y(zox+4x#bFHSNDYaX77r1w!}q9 zC^+*8ggVCh2h>!1{b!TiZ-u_*tiqZfkYe+SC!%{ka4@Vi{Ik}imo%IkoNYu7Y`Xr_ncXC@@ED2-z{JHr-%qd4A@bi_ zj?24S7Lf9?C9M~e`qICt22Fqre3PCGa8>Lud?@Z)JqNUVl;FPS;57QXqV7vVOHer= z+L6frlp9qJaaj*sHo(zoG};0a7bKIEYJ{{j97xHUqBEyf_NsnIlNR#HQ0EZ4?*$$g zB8-1JF|0!8Lfv9PO*ePlvV)#W?ZfqPGM7GCjw?k^QqS_DmR1Ya!YN}S=koYlxlp1S( zqmt*G)<}~zGCXSwri|mCy-qe*PWf(6dJ?(;a(h4JBHVA^4c-D*^i2Nggox{YvU#WL zt1Fl=uvol8{R|&`r7C@f&AvsEspu_r8lpCOsBsNbK9(WK=r*Pg)i)BLpB&Tuqah)3 zlqWVZS+I6=R4Y}&&&Y_%K z;<&>@Oion)Rt@3S!d``J2l_FzNlx}%6K8Cjr{irH6r;cdX?vU3m`)J<1L+NU>Rn78 zYMlp}Hr17Z=7CON>7NNerd271&hUsBT;_&jJq=kct45*&eu6HCh^`{feM!X3c1$t5 z!$o$v31B@h%3isoeF_0cL_MZ#27D)`&P8BMY61&5p(}$`( z|2{bd$7>Y}wwur4O}$)7-6h@p{jaUr{nV`AK)g5y1^Z@L9{;pARDt_qL3`k zP+0gaII>QErJ#jYx3SxTxa__2BdQ91Wg!-;EeFfZ8{kC8dDKdj5FfS+B-fDgDaCvg z&+SvUm>D(sQZzrn$7b+-6!UWubnSYs@v^60#eh;bw&QY*3Sk@fA>Qpc*Z#lFh0* z?EE)+UbfXwFbOJ9mL;9vJqv}mxKbV-#T3`I`83w!#)1i>p?v}DR8~MXak{%GyGf8+ zYkL^NfNDge!SWw$Wf+Y+H-c4YSLRB?M5h_QG|QPG`*>Kq1GKKMZF^J>Z&Q4&Z6~~8 z$2xtNyr;hn49*Bh|IM~sa1V+sAW7C_G342J%e?(NZ3(hj3eaw z!jE;JyvDKl^G;y{1%N8sC?U5^aMPQ3^CRkMJJwG0p0}GRwauENQHXyWV@3pVGQZx5 z-aPKmq^_8c{AlmObhH9>VGrJ|vt3lT>3UJc=2a9-a)gmSUt+GzUN4K)HhkAEG6YzgZidx^`!Vj%d9(H2_b|eG3_;4r z$lsa0@P!(~o<_qIx>}g0*aQtsPWva-fK*z*3F|O)5h-A*# zyv{Fp`iUi8-GO>Ct`Vk7=|IS9pHa&6`V|;6ElPrRwhs?e^f&{{Ga)Um-3&*>2i?A1 ziM>rN)nEN`SqJM6N6%{crLjvoT~O36!9Jp#OeXPioQ>->T`kZRv|fn!?Xx0vk$D0nPVl z$WY}1bY)56GHIV)w-Qc-NKgZ5!a{O=Fx?^j4S8nXX_qltH8A{3nW(SfRaR3GyQu** zp=N{w7;KX+Jql7iY|_pMS@C5ktr5M%U+c%rV~S&swdObVh%+5b-P0YGZT7@5RBx}+ zE|E)p8d(Lr!vT?WZ4gS>)l-IAvz_5YoD%5<8-w^zoi!vq&{~H!SLtRAx6p>J&Y_V%MuMv+YEhQa3DHs(Fh4> ztSwW(BLR3GtKnQ0fpN)X!Lp%Ux=O_YsVa;o>)T|crKPsgWM}g^m0a+ksnnNpkeU*v z-Oy6vQ3JgCdhE?({C2L=1L(V?C>yBTnqb#R??XV&eZ(lCd)CE6gsH2;mI^A&6k)wR z1DZ5-r#ThEykdxCiX5&G*X^=Sxs4k`(N4SHKBsxpD`E27i2cP<6BzBbxbh~wh zcsXD(`pPLZ}MV}GT+>z<|>@0DXV}8h#e)F-T zs#9~ysI6 +$-xV5n%LR3Rc+Q>@Ov^-YK5s6S)X)Dy=7p*BeWk1-JdSSs0BQLJRM z!1`Y~cb)4= zy1uh}$Bt@(_xM-!-0HZ}{R^|0-7P|#Q!k(%SLRSf8R@6<#yj0!pOh&CmYoA$B(|$| zUqTNwb`k+AfCV>Xu^^h5r8z`yA5ur-TVNITc4wC)NstjLNqn#BEy=69-8PLAi&3Du z5O*b;thC98kM5$6AqKdum*%+SBUHZtR&Vj0xon4hRs?f%GlzM-aV)ZQbZh)Z)7*qd z`IoiM%+is{#jgZYK>h5q8=_y>wZPrt==`E46K1x(XRD*` zFmyG7LXfRU$~-{oCX-7t9TwJEKcDFBRV&!1PrQe~J~60>ba~zs(=u#UaKAveL{um# z&pM`xPqM-GxlNuU+o2g-+#7OXay0IefWPMkO7|!DWCC$Z7Xrn&>*>&i?~{P-No|Ta z9N|eu@-Z*(l(R8Qr0X;pc1rpXjGxq9z+51hVU|8UM6enCdn=~93R_BpztAWxioH(T zP&Q_NCJk%Um_uGz+xEs-@(Bch=y5a?dJk&yh!x<#8QdOAAjA@Z`+eKvR_K$AE+RdX zStyc}(JZ*!&BFTt(MfOxf^_3?q5v1~>dEu?@$(};+RebzDvq3c^7=;hoIQP3aLB9k za3mWr+i}r+lNUjJd0M-VZt@qt(Ei!%(Q`3$76I%=#VH$2^#QTcohHT;wD6cK1+K%H zrYb0>SCwI@emi?w&7oI%vGacx^|vMD>)LkwA(1zOOaJT(ew)fITbtdUZAhH_U1aPsxlDfsqblvKZFl6O7Eeqbg z_fU3Er*W^_fYGD5<#K0uvg-e$jMxq%^=s-qh#6!5NhA`F=5~uQ9>h+fElpRDZTgAx ze!o`JA41r-i>|_EG~G67nab72Nd!N%)^LfV-58#9!sVxAC`oUC%hW$p2e3Cjy;dme zvMGKjn~bTB-U0O!>zB30>(_1RXY_&nRF;tW(&}ACPux&^NIjX9!yC!(=3TKa4iI=X zdDPX=+QlEKKNZi!mAOKmr`pegN-+@as9MyFANH?iH#Vyf)=??tlf5oaHU2jeewiOT ztzyaf{oyynqmwp1R?6?1WY#!EvmJ|F>8A4GGH#&#C1V>+Cyb~?XB%OhZMEQ@MGE~k z5`VS1C391TU{%N7OOfr=G1WN+6U}1O?N|nTs?)!g>)2BR8Q~Zq9ionOve;+v*VAOG zk;RDRNa%*t3Y}2%1ym%2IR{=w2PaN#W+H+cujCGU8IEsj?4hWrOIkOfV{3I0<+OkIsK4mrFT0(KR**H9e>W_O^%awft=*_2`^BQI=U6tkFSwvzlLKNQaw|D7ha#bk2Rnn?u{jRFU-zDID z8nMXP(`E%a5Tf6D7={GoDv8+t%_@|7t4n>!`DYzl`*Rf-0mi5U2uAg+$Eze0kx~Yj zUh%4K^BPUdpbj`mJD}qf9w?x4z($U>ei975b0Xa{#KTMfTYBN32ELLVH72EHBRODx z=oBl+0{bGc;OIG;*uPll@bP zG`B}u38|WQ!O6?w-v%Mbny_=NBKUMzw)p`0OO5~t5+=o4o39T-(F0er0>F0)5zWuZ zxfPVS8G)`Hzwo(~gh@1KIpxhYl3T;}d=5a_ROjN(56z>{_1$G4oj%48O%&BYHKi~F zrR{2utAV>dTVod2IV253mE2lAkv~f|zg&$5_Zx2+32&@OAt1Oz3q6@bLB+tJ37$jN z;Wb-*?pAMDaU7AvQwdaEZZefof`MkLg5stW;LVSdK%6^Wz0gv}664S#C5#hv z$bFx1M3zI*o}-0~OomeSjrvTHSMqAkH;{B|r@BUxSG(25SAN~Q!9wMLYm8A2?@p_n z3BgWT7ADSmGZN;3?}JF^8ODx4#cG>Cz*Wj8s9~xodG*%T(qnOu{~({D>??1@LeM{g zqT>^u_CK>!ht?B^@d>bpd&VioukKOLWWy7z3n`W0)E6-f|&A$!enA1>SkCaV7&E2y}6KHevI%y(~+jznacJCn1U^?>~EA~401>}ur zX&_a+>IfQJp+1Oai~pIJkLD=$9II-oX!#2(K)@f;=%<~X?Zkr4(n=wLZiDC(v3e5d zw^)ttO2>$Yb#F#4IYm}#mLcccOKJA8I46Z2N6oD5B%34drt?UFgFSHK%crU+=B9|s z;Df4?8Kb&Uz~|nnfLxiEq4q!FNFIGOAA-l&%!$>P^-8re7;xa~gx7A8P{torNU45c zm$H~Pzu@9?*buW7&$RAXmtC=P1Bem@HyT=e>!L7?E>+%8?#PpV=lxSAuxo~GHPt&w z64UWDaM^sY}>Z^_tl~t4qSan>G*~89}<*Xc4#jZda%6KMG2Sk74gma zV?2T|)8gdLVv8d@to2KOAda=j6eoGY&_;67myDz8`!mBzvjD2OIXkKb09jc#(TPLh zptA6}hAc{PHU))OmpfDEQI+Hmv;B>`OIQVdt25iTqt8wlmo-~p?hTu-4l5~+N25(= z-QwrL5Q0v`nqg27~OnY;%{K-?qb-?fZM6M$xOk=(Ru zwPkB@P4O9L<@f?_qAM|3Ge_kJcytH!{jL5Z{hlbF>n|96@ngFV-5smI?v?d^fT4g(em82~tC!n`jQ;63vv z<;s8y%)EuHvu(vbv`0O@;2%MGraFEcr(k4XwE4~9-%=h8>{KLIPi%6+hdTtI-rDk- z;Ip!LWVY%892M5`bxTZ>JG%W=`r~z&Qw~7t0XcD5@JPoaLE>DvyORoW0@#E~sI-QI z3pD+HOQ_I@kd!C7_Lm-YUt?%STHN6jym1+StG*8{!^o<+kl;eE5s zwl<~}0$(HHNLidJ;w(cXo#Ys?XB%DpJD*!{34WL>i3uA68*w zpDP96Y%(5wD&S*ocBUM&QKAu$L{|SQ{2>MWLef}6z?bF4lE@Dh<% z5#@1#V!N~WEhdlJ`&__N>LgH5#XSPic8J2bmh^)msD{AVjJvwH#O zz?^0D=+mKC+QN6&)Dte|&nl;Z($kF?u&!rZEd7NtalVtQ&lX2zNd}2oh-gSx?0>be zp^ard6Xs!cLWq>n=2_lcQ&K;nxC_xe0NHvatPgvPP7r47y|gf* zHICY42nXzup#G&7mKU}Ei=`?k)jq_yWOkv$z-65$J9x~n`=74}CJ7Hraw5S&s@|RQ z*_kmTF5MZ506ArngSWbq#aLlUL9~$>ImGFzH#(g8JzVsS2H1W|n~pXjmxpnb>U=EZ zeFnOTrME!~K2rcT3xCI;4k^fuVI&_J*4dOY3`?G;F61D;70b?Sk3*~O~wP$U@|Yz)F(a{7W=D}Shg zK=K+jFY+DSOv{N{=|3xU`29q&ty&*j48srkQJyYWycNX*07$W^JAtYF$OfXN9+MD# zQjo={mr|8)$l$FfS%g=7gy?A8R#xwk=sC*p9bu}Tpt+%|epMB&F(JUdu0MJwHTy-) zVCaCA9lLw4(LdOVc{$gHqFw{F4|~;J2mJp5NhxC3gSZDq6)3MOjFyT&H(s#WY%$VD zcuvr|YG7va_zCV_tW?3S8=ORv0h0;1|vE{|0ale$(U54T>W<%zAe5=|q~o4vQQh_3k<=(MAiziA^eivqm0}lJHvv4vHIn4~F)SEv&b%#7yWJdSY`= zdOekS|7rx_+E?bPZ0!eJ0E1lH-D^b zuzMY!7l`yLWtV@9I}h#6pFnlDJ;2UJQ+yPRu*K@|j|li^o3N5)?cCH1k7QZO%$wJc z#gyUhL8i>_aaG17P*~5ibCgF8<0yGS638WB0-!>JE6w+p(=E8YK|!NwbAnyP4?6O2 zPbgK!Pc3nkb88=1APEzbPfh^JN0bLK+b;v{eF{?3MMQ^Pp@}zmvjMcSO~@J<)ySpE zY*0vinK5TPY9C$lFu83oMdwtZPK}!y(GhDAN<5{iZ2$q4It7M%b2|~>GEC7@g+wc9^Flnuz`8a$H54iXyuZoUD8Xkm@a z+#V??fmB6W5JXIP0@1@qXW6q*iSyA9xYV1vq5*5s7bQW zqx7UBY*}}}b7#~N+~E?@V?Pu_R%{cBq~W3nz(nGDcBrN=N1{(K2J=^JqZ}^AXIJq~ z#7w$b42+mHFaan{-<sl8r7DVHD+z+^^#dBrvf zjlx0_(iGnOF6xfV;HR!sO})077SDr{ z4lhs7459#Ibe6ro9!C-gg9)^m#se}-)(=}&Gh$@?cY47L+n79_ z?USIs-ZgxYt>6_pulU`6XQsdRwixNrXvOuPw%-QFW+`a6k0HIOk*if;rj6}BRXvPN z1E3=WO$Va}xFR8pi(*NP3YR3*r;NN7_q~FU&yJj7FH+GuN1yA?qJwX`rIOE^LjgK4 zF(MSm`u$Y!KS8j_`|%k>mmGl*kCbQ8BI=|l3I?Es#3AdlvGBHqRSAl$dJ*=QF_=-R z?W|602X8jGNrZLXZtr<$a10n>=y2D&>T5;TL{PpWiXdaOU5G*NTm$={5VT#JAnAj_ zIpsHo=}3W1iah1an);904UUyOqqqPg(y5jP(V3su^@B(may=zrt-Zy_mmb>ZKzd3F z2$6>^rQpZfPXS7G&oXt!w=Qb#soF}jy#uKumCZ?<-WJz(Cplqv6?(43lRrQ;`K|3( zDw}PK0Oh1v81f=G6o0j0Si2j_WN=~0m*%+G7>R0|kV6M6+{>XaX{w+9T)oaeOY3EI zyX*QcCbYmyHY#Nu+AO=`(3gEm;xQ3%(hq+6Ng@A*7PCPa$Gzq|8v_I`vBQbqO%s+Z zkXzDvhG!p+#1Vjz7nBeQ*fxdXJMD+b0Bn%Vs$9$zOgHWbR*7g-v+KJJ6(aCefY;FX zZx$9<=G^}~RLE1Mi7|f2a65n(&}g$nGw@=X`mG2>#K9+gkBNJ zkkMJEs$q*3+kF;eP9EYjwhHb$j9HtjuSs6|V&rhu>#Yr%2$>+?dm*Vt zcX==Z+a2im;kCr1)l-PD!x-sqf1|R0{LphFu&hknOUm zUdV#xo1VWBrXxE1G_XD%=;HYX-Rm!9w~#$5bbsv4kdQ-jrKJnmvT?U-uaH%^-yz60 zRJ&pp7Q(<)rt2iqq?J1W19Pd>D8DWPdDjH)wT854K<0}v)=LPUa`xd*X=cNAB6yHL z!p4P~v0U&qA!6e%(ZYbrcZDfPhdpU_&px|1nT-{8Oh^_V;t^Sm{cY-6{e>)5n2YQ% z$Dj`PfL>!_>kSXmY&3gEq=~&XYg!S6y@q)*Mrw9fwuECEO7c zKMH8I?O>L7ZLf#!R>)mrQ9`c7)6A0%g(VF!><{WjIjJz}n(H`SveCV}??wp>VFJ(+ z8!lT6)TOVGoG++7@nyHc-#ZzQb!TKUyP80h{;*)dBjb!R7ve%E)-2GB>m{=3QkCF~ zw|;fuT*Lax()D!?VRjQkz<$xWHAGGc5z}E8t;P0(!ixXX248w?J&Hm5 z@GkOR@*|9|T=r$f%3Vt4BTREklD3ec^FOotUf{U`v^TMV9Wa|Z_5wecgCsv8H8#en ziJv8%!w4jqI;=wz4uU4&9%kNF06=tWCGV%IA@1TaUx|enOV;23Ma$b=l4DuEkd=q+ zf$1>kCFm2ae0tBiMxig?2kyZ`>O)2d;Xqzi?RTL1FpNOKr>{;B;p&h%+Hec@{q^s$ zoy0$X&5~j4^&5-db$$NBC4Y%SHBn;j%wIT<0uyD-0o+^QkM?5~obg8~(S?Sid(5wQ zpBEXuX{Qb6>QouPtt&==amK6KCagm!6KOQ>bN>tFR(Pr;p7~d1%~J0)VAKba$0+qf zn^raCP6Ku>3Sl}GkEIzI_8K%~*5);N07k0uF)fzQw4kAxcIN;Qa%x1ZTSFL&UBCR( zNarsBq0G+|>)KGbh{Dy(2H8?BBelbS^#AQ^o+}P?No=5O5WFfhYrjMw2=*mrds&M$ z-3Qur$g54jjFQ~CRVEcu1r9)bP&^r)kZvtZN)wnX=ZJp2F|@_vSv%Edd$K+@EIsK7 z{=?$jqn}0NjVNmcZ~L=iOEcx2{JQnqT3CQUeKqfmUWTLgW?xn?LHPTKM@pqW=ksqB z$%pTqY#sK6Np_S=EQh3x-6tgdqARICy(Ad?Z(%k}2r)qpK^n*Poyy7!A-?`NWv%0% z__|zEJLJaRP1ipn^{lLGdZ#LvynB1%_%}z+m6Q(>f4*V6pn~5@Vb#4AmY1RM8hZ}M zr~VAlK_o3^AzH2g5C`xzuUutuk)#A7?C(l>U1Z+}_R!8ZEUzF;eQ|mkPbZwc;vO9p zhF*!s<Pi$`W6lAVQVoVcRm|Lhyu?Ch9&z_MJg&9DQppB5$*S3LeNvtpsRs&$-;W zI(zg7UT&0?y!cB1am0x2TP3ikQ=r~%Q}|g`%Y0=xWUB)?#ZXH)uylh!?93Qzb~js( zcNdiEeE!Fcn6#PzIluz&eDBB1L~z6o72_PMRo=juETfC@$Qg9;txQC)3sYz8hXo%` ztxLQLIJJ7c>y9jXs#dWDPN!}R-an$xO7l%EZIK~iIOwzEh!7iW4Xm0I44JY9n@eOY z94jn4nlV!Lz*~rSry25NS!H&Q{RKNF|{ly z{%Gt@tp(q*)Sdg6O2h^-EJ5LYo|){Ig|gwtcc>>9{3w&qJD%hnnN~z56wSnv1U*Jv zOyTVZfmsg%BWAgw#M}ku;q|&RN`b%gy}^nJk{XdF(gts*4E5y@%NRF>K5{f6*#Vgs z-FXA$CM7^(>J{WK%S=db!keS>dnqKHKp*No)U?Q&)3}A}4|FVi#%XP|gyrB}Rlo9) z0mb%a{IZvL`**My*N1KU=V9iR*+!AfORO}fKde_H#02J8_9bE|2hN1&*TYK8fk9jh zXO;4k8VU)7S5p^)+u?h1M}aM=FlKe0sa2HgQc`J25|kV{Z8}HD@<~{qC|lC!JPv?v>-BN~ip|Jch8}Q*TCU?19ZuT9JuKapWz{>0qUBE=t$l?B7xfn#-aQ>+c zRWTs#Jt?FWUqQQz`0~?#Dec>~t7VN|@@>Kc(^qK8ZKF9_Mw_2kIreK!2*~! zuDa`$v{^Ap`{&*J3Cgqj)Oo5+Qd3-6X$p+2hVjVID#1%JfA{foNlouGA!MS1eM00r z4s)XfnO<1kTdBPGG!07@I~$qwaTSSCeR)KYt%@O5Tg*#5C1$Dxq{!R&_L#DhHuj#^ zOb&yfqpgJ#uCSiPla`FvdVVlutdxbtR0c^0T*Oo7-6kNRz!W%|){FS2jV$2$I;*Al|(li{Rpx|ec<)mPZ3(0nH{ z9bGw#>g*htPNQ*;lT#n7kf}Rz#VCX%6Zmn>gzPvW0TGI?)U zT*F%_#e9g#lQC|y?F8czJ$d7t#92YW_);|uOk%u@&qsz`@fQ9)J95_$XI9M1)0);Y*ca`3IGus71{wwoTD14?U4@c8;I1=WA{*gtmA);SyllAF`5NqhHwzWP#1A(6$pv|LdjuUU@{z5MTWuTRw&qG&x;<4p>4qf-C> zzj(f478k#M5-lGsDHtX=b#=5zriTG+vxJj3j^w4yfsav1fxH8O+j#iipcaKA6| z)>F}69GF1CC9s*=n_=N9q*nVu#CtD5O7D8~9R5w-rI$)Jmoy6bdXtpY8`1Oe=h;>Op9Jd{NQ!uG#>+~CqpaD#Yr@TtYY zujwzGE|XYW614}FM_=t(^*2;Dz6R=}Kxg=Yy6pQ3RESJ17Q+Iuv~Rzzy9gwX_di8o zp7QgY^23+0YHz+~vn~_3oaH?0mW6@s@qUX%F4Mx|_8_x`=<^!c!zPO|`~pVacDJ8Q z28YOSg|%Fwqh%glPTFrvaehx#Ah@s%jTd-LV*8O;gcoomApH}{$gIt7Qgo6T#+nq( zWWbG9hx^l`2sWUfySwdvoI*>>WMyEgx`~NOO=0yncKRDp654_N%dzN}9TnB8VnFe& zEnf#70cJk0+i8}lyo})ND8<4C-|evk2a3|_O#y@L8r@jTn<>-MR{)Z|($qvfO}hTP z!3HPS)zi!${?s9kuMHlD>)(CFryDdz;L2kQ9RLl=FZ3E;0n1Q3PN9$+i&i$DuljcZywrv`S&gy_AAgZA9c`nq=A>|IDQq@$J! zF3VtR-XnJvQI%z!FIaroIscqXIhydli3Nq%P(z|o$2WNBY!%hZq9^2l#Ga9CCy)!P zVU<6z~C4^?1Vc*{rMc;`ErNcCdLUmtw*W{M^7VOtkQz*}o&il>Phk7f`uPBaJIGx(lU? z|C2;5);o=#)#@X%kx6ROiL~j`M(vX=y=&gaw?X5xfcS2Z-jwLI8^z2@4{`B9(WxKB z0mZ(ofd@j0Vz*x=8`$!L2!@4hH?Y&~Vb*38LsdY0Tkxg9cz-rWDcXc$CXrzHA054y zB(4?<2et>NEg257#9vmSCnYJ8%&NGq!5Ndn(WOtEA=I-6bJRidLPvCT4uI-*($qv}L+ok<2cROIdO7_Q)NYNm69qbukLuHjHNotPR}v1^0Fb?|nMT_EMuk3s5(X<}aD$cBb86YvnW0BQ{z223MAFuQzEi z7ElQFfVTbF)qWz=erKOZn;I5zNi^9OoN#7=RsRFbsem*WgAz?W!`kk$QX#jb%B>i@ zyliCUUOVcx1}-R3aZ#exGeYK^_m6>wLwywG|C&3x+x}7-F?j-%*Xn~lQOHW~BgMxX zP22?1&Njc%MTMGN^RXTeSo{i+NyyCukW)KOdlT`8tQXq8_FE?({qYmDyEtEes^I3um++_3kj9= zoL!v8-&^3cApq#%!4=t!1AGdG+Sx(!Kr63OQA+Mfyn+{-GT|Z)kq_se*33pby58Ob_r7j+Zc{ClDM{4T%`dHxIW89SD| z4biHqm{y~0?s-4pfaL2%0TTQ{*amlsUyce`C?z6lu*Iki|w&Aue8J zVNY%h-xTB$FZ`Q;sQ<{UE$jHaA0JJCqQhWUXpa-~Ty^!&ynBIMLo4B~kuti=7>q_u zypz0pB({8l$%!_}J0&p!zGTH4jI-r1P$;ESyNuJ7nnnzPD;bn!z^gpuVD#9x@bf~%V$upYmzhB5n0A@sR zr9=PE^xQ3E8=;J?LtCu3&06vzVC;DrPS~Io`j^^7iCgqQ{ot4}2Kv(tzcOqHJ^Tci zXybfhG7n|KeNJ5#r3>KW##Dq#;Tc)yGRwjY5ADHgzEjfg<{2N^CZ?YJT}})LtbU3Y z$s~*u8nkc)sDjNqLbG|I#Gb*EG3{bE1c(e7+zAr03mmHFuoSlymGob3 z5LBfKQq9ex{Ai@bwfOwau#@CsJ9fxJb-rvk-%Dt7o1>AhK^Fn ze&#l>K zc6~B;Gd5Y9r=9l*qrNIRUZUWWEd2h=D#B>l`7-b6_xllfMgl}>ySE4o%!3|D!i6+` z(#HQC@>1Ip8UByrMU-}%Y@ASr7W;e~BR^HKcO;>*w0OPlsT8n*-KY6k}nPIlbE7cbm1UY)We~AO%f7Xti-qQ*6 zDN{=sh2J4tpFybjMwWT{9gzoms_*Q3lvPQG<6+aS`#^kjk=p@ErsBpAaJ+Hj_*#a= zDGdrX1)9?At>q%^VUn&rP_c$rNTi}2Xe*Samxn@r3Q8UWr{JEr zq^0lfA5yS+VLbbW{Owic9$Dvr6g9i;0na)3QK6)3cJY|19D%SK+-p-Lj>HmVXJ9yf zFP^2y2vJ@GS$Nu2+-{?=i^? zA0cF=HR@JbB_M^bk5C;D(sE;?wxIcijjk4zggrI8*R^RJOs$; z=sv(f7{(vvRu`xOq$zBP;9@Zqj&zSjt1-Frmht>@zH(w%7 zbSD|h<17A8E}KciH{+!PwlrQ|4-c^DENz=Z#)7`7>$W>XH2W{Hns(CHua^ zajWIv>+^lK`@c55($~(?^4X9$neeUO99<>`ikvzAvAe8}MdJg$S%!F@F#;~Yowv*0 zX{~xZ{tiDr^E|q?bnr?YnN0!e2=!XVkEXC<=u;Vq!8czc$9kZF5>H7oDv_3GhcckY zUza)>cpGBtC}f)vu`(&fOV`9_;XS{|6KI1Oq}7JyuVzz9Z*_QKFFKHu_a4Yg2kb{U zZ_HwQEh94fN4tW^7YxpIrTQ4%0Mp|vZ&RTrl4ykVcZ5CWW?IXIH}HBnb&S8!v7`uS?5n)%^BT2H zD4?i9rZ?qJUEQLP&7%5F6x1Kl70Rk_^0ttfFej>u%&;U(`*n!kKks793sEIWusE4c zQk~CL7UhiAp3uD3ffMGrZ#2HP8;kiIEUFbae$WyK`a16Sa|)UYHj?7 zp&L}#J?QaNNfdPvpBFu(6Lo95eRuOL-gY`1L-s7?pU&B$IUSfyQX)ry5vjF*wGKA3 zTYcJI^^D-1gTK%@u3&!F*c)w6^y{qWydFy`@7}0=aem$+1^9^+OXy;WSDt=lYuO~? zUA9%*X3RCvY9$^=o{l-Ox*<890F9*nbL_FPd;}s@HHJPpaAwj26$%0un*SVl6@}VH zPA9k}b{K!tYZzH$0V0yO~N3=Y-1@w)D0uBE0ZH!wdqp}DdJo=S}*1lhR{AO<{ zIw;7D+{t-NI%5Wya0v6Nt0k#SgFoxn+?IZ^VV01P4#zW}Q_%~JPl;*0 z19t%tLvz|^YNTQ70CT}qukyk-Or;#U1nWASEMvHn%qi%@o5* z8o*0-GEgvfflrIpy!5PK-nEmXwH!JDM|BV>N%d1x=@PW&Y4I-J@4gVRKWe)Ca_N6{ zn~JXJEiY{d97d&os@gA|1@>V>86$ghd==Hy6cT~>*LSSPLo)w{?)@Sw`+|Bf(BegjWe4Hq zz*^Sx@in_XDYjawlGHupn;sYPro2!o3coPjiu$A(H0}tx@^1!z+Hn zly&cnrA++)0J#c7^wUEN@cNr0X#|}NGSX5%Hkn@_Ftq?CDxq*QF>lA8hqhkEn%XT8 z;x}i#=fLde(T>dyTPTw>H>=#M!_RsTog2Ubv3(-hX`F!f*QOc&G+j<3D7G6c{!Mvf zOuc;N{gE{D_MSw_rI7ja1e$~f_u1F&CfrC04wmqa4frNm|PSIu*%|sqi)zUZ0wy`+0_+S?V z0Jz8HjU?$M_cy=Kvw|g#PQ?}$N#B-G97y*$2tzb3&uv<|nX19FIei-$+vb$L&9HiB z5l_kGP+M=BO`OB1i0?uk1|kBT#Yx+Q*Apen4BV7d2hXsHP@vMmn0m#BmwU+HW!~sN z^y-$bs8RoS<@Wh!L1EUSvLk*#S;&!E??zOGLx~f29H`UL7q7*oWogse=l!VQZUCin z-|&I$t8q43BwY?`BS-9OSVwVj>M${6xfS zfcj%g)X25uQs*OXh`cqu9$Z#{T(CAO?$U(Vz$GMp``!%0IN7B!9#}Mm$7wgG4wFLe zsQ_G?&wzYy9-c{Q&CLNW7r!(Q^gAoZkokHI%~<^ExtxavNQ*u*gXbC^=^nuL$TLy# zBERbM|5{hG}{gfUjqRVabDElZl&48>z0LoH!8zCiFMSQQ|}s3kPo{3 zrLRsBmVu|npOykdWXe0$zw}%qeMAA%fq?SAR-t^G))TiPEl|8vocS6wc;Qv7Z0ZGT zoj?}UDn2pa^d!KtoDH5p|0e`6t?-I}NS(zezA|S7p0#Z}Ew-U1kFgQf7T*A`uDKg8 z&UJnqwvoodx~)c=Ts~8;?;|o~u-AfHA2R>XzU%B7WEHBTTL&ksj27_o#8WLB8>h)V zpcYs>yxGxu!&4=itISI(&A5~{RKMCWM(-`YZhWJLdGQmHTq<2gbcU-h!$UMe-QST+ zmE~=V6e18hyP8qFOAt5*P?l;G^nFvAD**Va+?A+t;g^DNi_Y~6VL`v`tCtJ9y;~hD z5!fujz%oi|=$<;HQ&bylE z{8^dBH?Pw^y|XX!{WGcn#84_oiqRf|;=9g!io_~^3IhQ3{itFV_=Q|&RFB7pz$R6P zjksHTO}~M{d9*)uis~W!Bou+@DUgA-7bA*n1eoboJG)K3)79lSR_N=<+irV-6^D&H zInr}W>;5kd2Nux6cPBeuBdli0c5&m@V=@Wq0Mw2}Tnr9T8l@l%OwS&Mraxy-{2ANQ-?|Oh0AtGsjmAu&$2gw3o&Apc>t;x05-}j8kH~+JyXg=${ zo#<$#g|DFg;C-}x{uSvxEcS#`|pkR zylcjdK1%gt&^Gh46}B;yqCNZRG&v;1*ia@1U3kcW3}Vmt#VjMZZC1TZ!oba^a#$75 z41$^7(!8(FZs1P!|P#1hoYacRYw!31njnY+=MuJj0?6YTBC_A7{n4wdW**+NPrPr-rkhzABgt!T z)X#MC?y!k#)4~Q89;2G&V~^3+?Ydcx6ig7_H*bqGcA8r3d@K)j@V*2#3C^Rfxr7lu z7AZmF`Q(WN;RTe*9s``e1ZK0;2vK*$j1fdOQ?}-~3bO9blpjb)E(wJ&q(`ic;3W;` zMAwYn(0lplrdmA3kqPXm@)DGO~}$}4g+o; zt5dD5(c~ss2!kmT^z6r=vHm#i;~u;h_vYMB5{z&O-we_wf~L5s%0))~uC-#}o}H(g zKqvE?!)jq3`5e0Z6KEv%c>qbhv|9imDLloqFj5c|44!=@zvq$*m@*+2JAkx9?k*t* z6_(suDP6`|$e=Z1>tiCj+sud)8KhCQ{1qSBS~aCAwv7lODUzJ}bJS=~;Y@PC+~BG} z^CV=tK+{M;b53h3=t}Ofvm0503$%$zupWu+4GcBh{vIcOCa^P%*vg6&76#3 z?i&MRjZNffHChRZ74$N-0JoB z+ZT1BT9{(xG?R}rEu>i*jHORvfaj_=rwcpv46%lY0|ln@Wz+#N$%6dY{#tIe{FDLd zt7ddkxGjh4hozIc2j5|>lj`mpW`uwTp!n!W9!;RU!RZDn1U14L)he)&v>eO}^;l%5 z>4zEjNlQd}v>KhAXwjWysmeaa9Oqj%nj1TQWZDY~+!pv6YuKOHMIK5Rki$eaNWU@` zd*c8rxq1uy4age+$uP z0UAS$OoCu62_CQ(5dN5`hJoXJL&NaH$OIFaZFT2;Pcz5=Yc7Y&rV8ScIFMciXKGan zz(hAnoIU*&|C$z-ZI?!NOhfNM4v10{*S=*)6P9XjA|l&4a4f%^Rg=EYO}DtI!Gln* z9x>Gyx!xj$*E8zyOfj7w|FGULTmlpgCE?;O`{gEDr9=4raNxxU;I1uj8!#fGmW>jR5 zE?LiguVJe$m$ojk}nC*QN-b7YkN#*>I+q1$uSlESImlcvS)$fPX}U z#9-CpZSGG&p{lOWxJz)xB5gDkEqLfEN0dr%A2gE9}c~`9j5cw9|z$x=G1rDL&Z+=*=_wbX9RO-#FTL zQh-b=B&g|~rZ?}r-0Nbwh3bT`0IX_LD=T6~lrZ|C=!;vj$wZZ3Vf=TW_nb@p^s4DPPXCb8G<#16DnH-_fkh(Cm zURGg!w`4%xCGU4&IR|G-Dg3uKrNVEpCTqC&N6cYw$LyiG>~-5dOxKoNcGdZZXP8h2 z38LPBMWZ95qABI~f;op$@H&Vdm_Y>;Y)DezgHB0NqrAozjOye5CVw5VmJ?8Q8ff5p zBUlI@l%}Kb2q#bDaUe_*Im~!qhpA-C?yNA-RYpxPNY^+irCVk+wV2!3oge{}9 zJ|aE1Tt|!$5^(}iJ<~-MgOX!bud_7U?(JRf!%92TY}`%1o>=dqd80kVfYv`ANBvpY zUXTswL^XY)*>TRnjsYw~;QR?}!2Xsc^(Hq?`C-+nf?=EV?&CIjUg%W8vyZ`UAyM@!7Ik+X)x8^)*g(X%3s5Z_6bLy%?U{ZWWfqRY3_Q*PdpG@FHE<$4DDsHOc4=)>>B@IMSi*3 zi@krtNonOblH(jU5m2p{7W%lUR3qk-S$dhXg8lJ&zo}l%{fs_Yrjo@pZnn&6 zR|_PA)$vbsK4KsBgWp!+UyuB?$;8O{A7`jHc)7NUy`J-RL)SM$ly~_Wp*OK59Kku! zscocn_Gxc4hD%-5sCw0S0zr(^B5@Kn;U^P1W7|Pa>})}5NOrX=p5i-FtPZmC1{G=T zvI6qbj?8q*ur%Dny&^z^vC7Qwtxc;e1VmuIX?)B5b$;#?-JP+Ic;~D`p_Nx@A@i_5 z!@Gu0T=Aqd=V#t%{P47GKpur9+iFUC@v5##z38&Zdlo;3jZeU7@k#|lWD2(ZSJi}} z_iN6$({`1=8P|b=9D0MfsP=IA1nb=$Hj@F2KGWSRP(LZ0#@B{Nk_{2VEjOr&_%x@Mi10xO6OGz9O8K!E*n_&t!5`tl$ zJP}Ny4+#ehg2)_m+b?%LsqVpCcfbu?_OzbFGUn}|VDdylJQ;BZyOEh|B3SmXp5b*k z&nSwVn)h87-u+Vj{2nS=$YbY9U(P8Vh+sr0XoagJQ!3a&3mo;8#uzP;dO`L663bHB zR+L{0sah%uU+s6O38+P-E-SgR%;eb;FbI@a8{+c8fdv*GLtN{y3R*~IINZ&P0)CQ-sn6F>1I-%&iwH?_Hu5B2TN=qd<5ye=~pT@5%#CUO) zV)VNvwK5x!S2!pV)w1~dWe`#mk#QW+4Dh*ND*hBcJrPNy;2L$YtMw`kj%?sgy3|yN z;wpB!${Qf|(5FQVizg$ogQ`S<6Be-|rBV3l1hetudBUuT$o(jXjoGLsrRX_HfK~V_ zx9&gl0ANx;AK8X)4dEYqiVqX`h3mT8!-~m7LG86zh+2Nk7JMw(`!Wn1sA6(+fYSbU22j|7582-hwTF#+@;K5v=qGpWcMp6>uE0w)e!wu}%b;ltu zRhzQpoGsRts+QOwL7}#F2hR!clMg0^@q0OAZiuhG8CEJ_CY@$F#B+Bamx^L9z2L>xq7P^ zsv%|6c=6y(qT}C8BUkn-kOh49)^Nvx1%+gL|O}E+#@93 z^gz>Io2+}R$kR>#++kLl+iMk(_s`Sta#$y&Tc~pmnPHFr&? zYo>?+VzX_oX_k^``q9>@kV_hV#R1bYp}Fb(!)7Rj^aU0pFDtK=a^%oX=11vuIFF)Q zD4UB-)!^Xu#A_J0^;Sk#o^_vSMb=$50e&YKkV$CwZUAoCPds^{%|rsZ8o>@+mi~mh z>sX!U?Y|iXeF3*dz&!){Iu^GBndHFm;DTSIxY7ikJh}F9!G-P=WWj`P8%{+0!xTWd z`C9Hbz2Y}}JwL1M`1clRjgKc6%5Q2e+SVwI&Jds3rPy?q_2l>x9y*|v)5KI47y*&| z+3R;^jSoa49k5dqWuO112iTGxp>wqHFGt$5=AABC2ujT5>*ZtXIVtEc+bk7p?NhSTPn}h`s2Gw z@0eFnO{asrM}9OBgxd}5dDDV-6UOmRBlu9ARF|jw1i#doxMo-ylodd>fvM0>b98HSjhSE>dzhsjSe>x+Osy!j;kLqiM z0Rt%4!h#N^IqATs<#C^jrc{=3I!JTok|)$2WtAQ=sc|JGR*gY_)nNgEIr+ie9l_@w z+5lzIR%vRpfJnF8!w*u*hZ5emh04jZbO0cOCj+uG>5Mn^J|(@LCdNDJYf&BCf;oY} z+2^MGx6?zi9`^vqQbJvyM6Ub^P#OgQ53@1qr1uvBh$c<*Yx^kQr($1?vZhXQ|DbG) zbX)*t4*_GNDs3g}p-zAd#v%xZE#h#~KNyHxBFb$Q1Tsyidw6vRK*)vCz5GAMyF?y9Q{*VMAJ|S7?U3U}d z%KH*Mu79cX)w&rxL0ooX=}AJXyr*ObUK_Ha7E2)l(%=xA<=M~pp1x0ceAi7lm7!e4 zJ|S2mh<8vKX!I@>efmEgZqo2U^=SJEa z*`{d=7eM2^k!q7G7H84@ZqnH#VpcTiZ``0F`UXrK{QNZwRa#Xd(5kO`a8bS?O3y(J zx(YKDCm_P96dVZ2r1Vkq5$`EDyh>N14=8F%LH!Z--Zy%KF@maUkPBsQ)X}!GxFPPY zgALIt>q5aAEVGZaGU{Xb>n1g9AO^4LAU_Q9x>Qgun}5$nMkBCVwO-<1?MArEXV6>P zRTQG(r%4%Oi4;+CShu#ZzBuo@W7ERP>I?PxJ0y_=8BhDsYgMb){##O4~ww(l?xXzv_{X0ixeIjkqp~D zsV`^2vq9Q||F9_^XstezlROA3ZHWFRntprk1%wVN&*e7Zi{*|3w(dul=Q2sXa#6v1 z*C>i%d_ictl-&ew$}u>xuV!T?IK&Rx?ieQogW5$m^y(9poTV&B(~5icV#&3X-^vfq z$$w0dKaI_%b;_B9{kCC;KA}%+w8I;tmY5H)6%h4+sLv;+XHqM_Po)#>%3n-%@-lpu zuw#QXGBnUi{6%Q(Cp&u5_gqto@%hl0Hq`DCd(2S|qo%z)HyT-2o@dSjPFeAuU}|j& z2za<1x(hxPHQ=p;NMJGA$$FB4OyOqu0#;-9Jr64hx1Y2E%`hB{{lX|;Chg_cX=5$= zP)s4oU11@1Ct0b1s4Yp*Uf(Z*N8xU2KQ=*2&!=h|0v~Kj3;tQte0pLm`m$VK)5plf zyaS!_Ycsss8tsxdAt77o^NqT8NTde@AW-8dD?6^A#F0W9E+X9W3%n)Z$UuX=!hF4nF*3H0&4?n|Bs}g==V(w(EyG%+T@PFFhdp9DAkf0@n z`Q#lRUgq3syDc3wtyI;L=YiuBM|#KlmXAh#oB|#X(PEe3A3v0fP7@^dYv{JqBn|Dx zD)HtKitPw;*1|Wg+2(HTN8sb)|YTjQsFI1 zv}gsjEadcDULCn^ml|N%mFLeCI7#B4LPl{4pt~AKfg2up7VI$|lnAJU|g7r$jK1IhY57+tD5K45O z%J)JDW^i8Nu3_^YY@(^i;%7c$J6FQ3U2v{4N{{C164y{PHR%^>dajQj4}zb~3)`sQ z>W!Y3Tl|VCMrdw7iw0lBh&TG zI}o5lwQC5jo2K&t{yR3}z-T9=9%(V2E9wN6T1VS)v}-dCZkw|S4!$y5NUkgBI^Sqw zNnE^1?bdq{A?QYbOqgdi^ga1g!HVp_gfGSS{d@xK#@_QGcIX~U^7-2$Xfo4`)@q((&`lJ~UJqVRWW?h0e+ z11XGR*MRSIBy@hIkk$h-ILo%Fvp3eMgiR-(y*r1Uq=Nh%<5^w$$Ue<nTw!^qqG+ z?AIlr(w|u>CDS+c&h48e_~nc%5Xl6wY&buW>|up;0((9>=RwZ3lzubmyxJj1RjyHVT?_+rM1ETd%v+$N3F+DHqy+ll zgtCfWIzMZ2#rK}Vys>^-!L%Nzlb|HQ z$PQutN}m;@OBfTS<$~A(`&-VnzKl@E^tjPRt=o~BkRn_1d6VYHRTDo^U>KM3kkHz2 zAg6&Y0Kc})yd*D!QME+rU1O^%N9b4kwUx%IawHK;RKG88jFSI*Kl>roMsawfZ}V_a_8e(DWv%uE9(?KJ@;ZybXmz(Yco?;2}8nWJ8E zIjF)w3(P!D1j9k=$Q55x{w3t#f-W!zjx{|7IzG6f;w5>5fT=^_)Wou)a<)GwAP}-$ zwBkwqk$s}?uDoi9zin-$3`z0kR&21}rGA+RwTtyc+2ysjfN_Qw_D)5|WvuVS--C%a z1(ppyGwK$fh)g||C3=v#bcD%9bnx7JX7}g&Afj%}xT4TNFhwznek^EP`q3d~yV=u3 z$OSiBT#$b&tl6QgQzHa@dL_Z-=X!4wCyC0LRX{a|ipoMT{(_UHz@5U?swp^7QJ<23GxJzVB)JbtlJW0|+m2jaW4m{0U8%k3Z1C%O$rCf;Rhs=O2UsB?`V; z5To(E)6FvW*?$lT0xu$H36FrQPj89&yg}<;_hqQj!zWA``6epElI$pGhGIUJ-16a< zK2+S)c(<;j_q&XvoDZxAScn+z5w0g#Nc2a9XM)G4;w)weO;*VO^#Vp3v<$kV4VjMd<)^KAF7#r&RY+&XAKJ)i7h-ffWNL6h=XgO_GXIn z^=Yp%_C?tFySFwNk6;Y$goPKJF6QCs{>OKU_YHF#lBC0mp^*Fq`waS3z8JLt!lO59 zTs>R4^dSX89m8@7GGcRbw4)4XcJWaKTL7u$;v1k406>l3g$kr%#!;m?gn$ZqxK_T+ z3P!)o4{%<<4hMe;w6^n0%pHVuOozp(D?XZR3mY^tIb5qySZha+LRbTlp2oSg-LJsx z(dkb0R1O&>D-60gfjK~~FeRwFP#Z2G!lw5SYC{pofC{ys?eutyC8CRJq#dIrN*aJLoM_t!u}6SU zioJxh%mkG7dj?`kIa(~cAPdZ{N=%GYYnyw!@HZvYqXZ#`#Jo1*FlNxwJNu~~grtSz zJXYJ(KVA3h`VdWQc!4STf1*M2_Fu-)CLJPr2ds9Gd+>yV{hnzVXf?->gi22GzH`fG z6t^d6iXaf}Y2e#t^Ol!C0GHA@Kz?cG(FI>V<50dJf`V2iZ7?r=hQZFtbMt!Yg!Jt@5;I`|5(i>01CJg$J#-0a%<4ii-JcjNf<%l-;Fk-MOqCO|kN?x`3*n_Tw?jJfw zY0x~X+%#qKYBpxrd-#S%_U`@qp&2Qqu+hiQ?+_MN+0NKYPtK);YuWqL{M0z0d$K3X z-^CP5vGGN>m&3&zSO_pGhZerFqVBH3DaLo#Ft|Ue;Ig`aHXKHr#hs8CH<&S<~zG#OZlDpjV5+F3QGV9)jU(b#YEcBvQ<58r^D%5iSnyGgr z1b1`X9lT=sELm35m#6qU4>uGHD+2Ar48)?(o{chu#=6aD%#O?2`nKfZ1@_t&hG9LT zvXiLf3}s8dGbI%C4+v8*1hwHyjT6SBwl^It#Tz7sl< zsvGrKtQ>AqQFXz|ofMG|2{YOz3guWnQUq1T8D360fiJl*;eB%t7GgI{c{gbN8NQ24 z%B2E(#s4$T2auK>Usql?aFHvNySy?ye%*eYEvf!QH_&n$;lm?C>2tJc z(Km&|6?8ZZs!xO4c!2WuRaf2Z ztPEn@%+T$BH%X9@yPIz`(g<+=jI;Vhd}})}G{thH@BWGp7h# z?cERvp}kdEs+*EY7Y>rRMs6P zCd?np>=TY`ejw&&2CZrz>ZAWUVYB^wH2@SfG?_#`e9av%h(&$eW-jh~k3EVGcUAx< zxd&XGzLOE7XWU&Z5k(uq6f%zSN4$l z);U-Zkv7qxB(cNDlF30YZ}zn)e1v23^LM%CY@i-=I!81c4hMn_v4<7H9M>GWkUS|2 zw&n*a+9}0=`9*3@Q*zV}+#W);tI;9-|Sx_It zxydRdrqprSmcLxh)ISP`mI3*J(P~}I#coMaSB@{wm7i2{)r^yXklnYkT-Bo=peuQ9 zm;FvF8>60H7*^7=T)$aCbPEx((P zT>d7UEQwSbNU>0^edaEBSe9;|f#&7XPoHfA31SY@^RhE9&-hXg;buP<<4bY*ay;S>W z%a`VKzUX>zB~`$JB<}LN`mYba6n?{=GAd8-x2uPOir9{}PA$0NC$rb72z&LC;qP2} z^JCzF&@69?0L|OAP;18lXf4pa$tHw9@pQ-H!hN5sxsAW>4Q2vgr}U^NazoeeZ}k5#@UKuZ&=u7XX9=%%)4Xi&BfLNI!N1J|e5{&UnK?Khk3ER(x+n+5t-AwS;V zDZ99A?nsv-8K6V}mmJG(jAH3P5mGa%QUbVv@#02(MeA+lcMQHOyv7^TEv$?iZsOi? z?4@W9)5u~-Ru7Lt{skxTA`OTLW&#AW14D7Ch&b@cIgLX2YPlPPl*Upm`F7_!1)yq6 z0!l?DuNH@=;@YgrK+uf$+N0&LzAYqBOTdEKAE*2b*lQ7^;u=?;OFHgK<6~iI6Z%b{ zbbF#l9o=T-;X-dwEiY1xETc6_%ASA3O{L30qtI|u*_HjD) zW_4~8cJz*gT@#WgbH-D*WTbk~VL>nd3fNCDhOJL`=X#gJyF1jbTF?WIf9(mX*yi%( z^O<&LnDck7JI^wJIHjjWYATPWg*%a$QG)@dK1s*nbdxU9DE;K=fG&b9`veMzK+?XV zdS1|U;K$g<;Eqr?Mn*S8ylM3KL6z+%`WcAyv;bHpDAe!lt?|#h@`gpqXf;XdtKe2I zoj5BJr5K{Q0AiLxGA3(Ic^6}MzsX3f5_Dr)~JPxl+;r#W)Kd?get$?zzF>MV%JuJU$ z3(|a@{cUH}z9^!*NcV|JmT&*7gd+UALSB$kn4EiyBqMVjRq(>i86+bn-UArd$uc3IINGc!RwG@-&b$tXMa<83#%qWUldjnyJj0o z@1|J1_Utx={~G`VG%3J<{CynR*w)L-n($n_QDz?~k?|Et#Z{=vNDx^h{&2I2%Q8V*tT)02<1kiO-xcM9v&e4;DRt0aQG8slHXL}i>Yp&!3%V%R zx-HEtzQXj_bhXI9u!T5;4fB{EMLLj70x5!Qe@-_WQrlhRX~@;pEK^28yLxVq3U znV0M{W z*B_dfK@0DNuquCn_(XC9K>cr5?~-bq0smCA*$4W>wBnhFf!ld5oTZ^~qVP+E9dIp2 z@#P#1KQg1Jh|DxoxUVtTi=mmqUc0u8>S|}4(d|(HO6O>J%6_Bk9<=3nVUaUoYh9If z(*A|Vap24-T@8ozT zW}AontGF(CrReBe`R?9W?MPpi zy55q5Z761AQ<|XD;oFMT01Yn#VglrP|H# zq*C?kg(2rmf|x!CsaniyK9>}oLv);^a`&B1A@Y6)6TvZj6jA7DO*nv~hSi+_Tkqh& zv0?&V8KqEKNgBh2go(0P#TDWw@%9U1Yo@?eeb(qlWVl>4GtX5g)dqw3^T!X-A$D>a z$naYBZY%LDX{!lwi%p z-k(G1voLg4i3~+kk|=!8y1<9G>l&_ZIM9yRRc2U)9w0|y8Z_)3WMa4XFwo|E~{v*_2go1Ew9N0kkR)snp z@A|3eG+4GXGEu}F=>1{2AjE>Tokz~Z2&l->LIRq7KzK5@x2>(FPGUvm$CpEQKVHe7 zjEI2P2SSpoCzjq^JFkNy3lN`b?tXmAU6fpZy+k=(QNDlON^|FRLMqOD_KR@8gG^a% z;{S8KE;q^x{hT)Gv8>}@nhmxE#=0zdZs5{8gsb!1h!=D^0bq_0c~v{{vom@B@R0~Q z=!y29ai;&t%cigpqj#s;GTPyYSK8gf1h_Y2R?etsUoC=Gp_OuWNRri&BS0hQrmp^z zY8|~Vbo0G;*tMTcsAaw{b!Ro*TBsH-l51I0v#1ZU8i>5KqtM$JRM`V|lk2t~5iL6Q zg_4)d-Fs1TjI(H~<0!zEhT}1Ni2TD9+Mv9cK{Mc%kgI~bN%13!vK;mRNJ7T<+v7Z< zIn#YE6`hoz_7zo5trxu5PAhZ%l2aQOD|+IJwpDksqxA^%HfkniFouG55kZnr>=!e{ zLo=JmeK6;TPzP(f80u<2KG!GjP`Wogh@C93e5Tb%<9}-!e4YuYG3%7uMv@b3Nwn}N z#&B(jg-H?}G9L>!jGh7*E&|Y=cdx0~pX#eMmzen%_Vu_!9N7rJ+%8(J*ZQcRc0fKI zH~ONB){;itOuoE>iZ7*Dq^-n;>cq3xh|2TK{2`9?NHz|e`s|byj0_7J5YF5FYs*v3 z*L?DogCg7mz;8qmQ{uqmLq6j0C8G@Iy;>G2Xb-iZyZ_$iIrHUb_7!f(7Zk-4&xL(T z1uHdWb0)9z=6=lS+2uv#c6ac^f6$mDPVCn09W`H;*AX#?B!*4EVCA@>mqr+w0xD9| zXoBO{3N(Kd=t;xf&xI#fR=2vL;_cao>6sttI=NCf@RyL^P?kd_`r7+$F+m%4&*vg# zGw^CL@{^`p^-^4Yzg9@n`^8QBAN8zEt6HvK;HR`At;I@UafYK4fRXQ?wPt1$o-bcs1|G1 zi+Hbm4N~b#i`VE2224P?aetauUXY7uUh9ibt`dRh(26Vjgd*E6M`h&T4YP{UA5I4H zHc@@6U0YOGrb0wy8X&ipK61%tb1!zXX~_em6m36* zMF7Y!6=!g`stRcg^I%0^XjhuKG83BnZbyQ+;iV?Gr_P1WP? z>-R;O8GxUWxHVuC43tW*A7T?QK+IQrlXjDF2#|aqgb0g{%H~nNhHwsTOQ*?4rgLgJ zyFK42;LX?KhZ4Zk?WbYsl~iype-~nkrhlS2^O)jfEC2Ea+@{Y}y5SBSd_X2NZ?9Pi zNiTL9Y9rOOW-6ornrL_1m7itAl+CDepFrMLhiq#A#2mz;Ue}N-37<@3HWpw?ih&~F zS5ggN-f>yEi#|(ZFE@yotpHrbTq&j>eOXfH9j&z%kN$lH`l0_3r8mhR&Z;EEPpjh;f5%8N^v^xAon2h zht_!P2tdrENsxA=Ci4Egg9!;62KMAmSIAz}8ge>dPJCr2=XUq){_W4pkxgQm2Y(u@1#9(-t@%$|BCOBcumqIEaqKOjOHyF?Nmt}wHcsi1A01M!I(ke ze3gljoXN}ooiV%=vlatlap&yl*dqiaH@UYfV^9@%HY7^{HatLiW0savdo4rrD%{6g z^DF=)(A`!JbMXckz?qZunO*&-<~)bl-5qY(ptTbJ|mBdiwG8OfL4xBJv)kTT!PTzBC9_s1W8> z>WLNu+U;++ZG8w#r!8i>?9^qjW;YlU!gaa;G(tJB~RIEpk1O?hLivOUNGv-*6= z?(Q2w+=UU?11H~b{y_7=+O+JSd+I12#B{Q8&#y;ZpYu;b{@?2u7g*w%1O9psnF91e z_h{0;q>4K0UD@Wp11aDfeoY1coQ4 zOn+5U)&0x3)75?}inVXO<9wJ!KBN{}iQS|oO~837+Q!VO@wg*4mlk3cYtl#zGfsvx zR!R!Rn9I-$MvZYvw$;5`C&DmFy4N@j(zZS@=52)gc=%GZRkfE%r;`qfluMJ7#%Elm zMKV)-EX!uq6kj6m%SM_Ba3}K*Y5w9O$ZR4o55>Z$<#&Sr<_X4-XEmpst0zJZ=A1Fq zIMkq@Q=UnQX>nlxrG8D}klf)hj{Xi`w?3y_q%9iFB2(u0*#t070K>Z{qq~4Z>vE#{ zuwl-5f=y|8?~9P@!YZ$X)gnhw3=28okjz$4@|58~ytVg>v8Z}CjCxEQ$nx82~4BEYZx@*r7^cE7?}+;ms*uDi$b zl#gOanbbtX>G$^TVsp1NN(~I?6Dk9wJN?DME~h?w-IUyYXUr_ja@`xNubJH*YGt@i zfgqV(->i;lm`i4eC6-2U<9?^=s7JD`G6u^}T)s_PT8BkEL8WsW75Zgtoe?OnVNSuO zP!^+U98;Ol1n*6ex1qI|bbAoVn*%vS5Jx>~JRC+;0TPW0=6{SYCA85$oLCfWaN{E} zP6&Sa1Q%On&zSe8kP;OP)$7}RFJ($91r)V#Mhc}q91g?5{X@+^ z0jE=QFMJlwH51y#z*%>Y%11`JWcT7-gCpG6VxX2chU;rU6R*K$-)d@JegGTeUW8_~ zQZ=fQkWx#vI;wFKmaWppee}C5@%-#MDCIOaXYhcQLTuwFow8H#K#0L`swDb~a4# z$~>hf0`R#+xy-3(YOqoEwN^e@yZ?|xfn$<{r?}Ijq%Cz|hV`FtqxT3(Pp2y?KAED- z(i`zTa(ab+6Qa_A7(`yDBEIUvEfKsO6rIB12{#-?6;S=6#bj zdED!;{k#eLYx4#?hFo+}F4F4>cFDSwLOy;djf|xsB$302>1k?VJkazM46m*eerMZ! z2VFGF&09I{%Hb0=#u7BR@qfAV&?Ed)QS8!U(c|Y#$rH#_iG|?63>1RNvB#1)rpn8O zakA8VdrfmA?CCiCy~tsANh?)uFaw{Y>clY|VzHL+*r&f{ypqxP_`G8%h`s|V;_j+fYvwO}W?etQdZajE_S@zT;~^oY5C z@i%wZ{}68#12r?}H%$6p9=eBmBld!E#l4>UMx9(JjcR&Hy`rxm^RTDMEoVm|Ey4GZAt?tH`g|Ii%%Yo}Gg)GpNU$UG^&Vv@< zC{!^zsH2K0TqrWu8~LesLQM$X%t!gQMazonWZs;vPgThsfUKlA3$54@aVH>p`L@9) z&CedcUH9S5TsO#3d?l6}=Mk`Y6)1I4>Z#|{gY)YIriQc(x;U`7COHYt#o+CG3T7YB z!ZTaHc)1hX4*&=hna|t7XV6ovR6Uk)Pke{#_oN2HAH1vZe9?OEbJ-+N%Qm{lBr{sK zLhByRGC>d2s7||u(a)$vC=wf1n_HOKC7T?9J^g~R={P1NSzJcLt)f`ZBE zVD*=Nj|L~R8Clz1S24mS|64pJa{pF@hsQ)z@Nhy)-gc zH~wPc0!#?Od@t2%vMeD$y1A2XW1z0Jy-7Fz%m&#fr+lKzhDa->1}R{VTySw)kPTh- ziX^|{s6;2h?ynEB>7dzH?0{Bq&b|uWEnXwOCOf(XQj0DiK<+0&Nw)?pFyv3D$`Gw+!P2hb z_dsx{_{7i&ps7UNVA;X^nOY--bDQ>nNdd0aFA@9vYdWgpYFDR5J?YEfSo#@CB2d3* zwdFIM^<)Du0UFaF*wulgr71kKuNa9HsvGS+@AKwv)V7^qCqtf_Q3I3wioG>y#;vw>ivcz>?EefE!8o z2(x)>e4)`aQL6a`n~rYyniYc@z0w{377pB|V6d(+BZoXESvH5r-hgI)geS*|4`mg~Wr$~ePViY7{r8(|Fc%c$rEVtoq|?{ou2>a3la zUwTd0b}SQ4_KXH7g_HZjWr+|u-L~9D%&mA{)DD-D`>=*V;2UgClMLA8PT=uq1~XfBc$_oQVb^C=3S2xtV=ZbCUQ z?ezDW+rI^rHM$7>nZ;y`6L@@HVa7{HF&ol{^dR11Qn@35S6tICM6Gh0`q<1 zh>B;u2u`b3C{ifH(rL5%<}9}IGKC@ME1sG*khk!|Oe(^lwGUnnb#y!7$nv_>)&N7I z8$yS5p5ra$VICmJ+}kA8>_Scj9h509PF9+`P`teg?_*lg5ZA;5oRMo^=Zur5o?(t1 z;RcuLmn9x+=%sWNpu()#TUC)}g{D8&4vg(OhgQ}`0EnOFe#+9C9Sm1@J1qA1Ow3*Asg z+)F*LcW4|!@45M67wz6~h~{XTYAl~h+z(p;RbpKVcy`vwS)dT^8|HiSc})^*@V#>e zzsu=D--((ZgQdp}@B5JogI+s1DRnjyW~DyRNODMNC+!NoOgwknLO?wCfFozN@M0dd z?0OH*W2oG!uUK!Et`x(i05w3$zr=oSrCXZcOTGE}{BAV1_rEHiWU}BST%ecK1^bBO zjt2pLM;wI>{9^;dugq~h?6>zIN?j*^x`3xczHC)yG@&UhR7}Nl>2O+87u~@KNatHd z0~EN<0nAaFVoB0i$OKOe`Xu;(VtO(0cIp4z>a1}VjH)%rMjE=FQabxm3oB)`^d<3k z9im<)lkP|Hz;$VV=nvS%)ouqe%Q3*}kHu-Acne8oDX+d!=5Z+R)4^NqCR=1zy6N4iVi+(DUv%(qZKh zXh7mCtN#tK&O`RQ54$$Pq3}ki$kAXk7Od#c?NL zJk{TPTIaNN$VW%J+eBQGgdjft;9x zTU(xtPs4oROll@+v^O$#e8bE-EJ8$;-5>;og|U=U4t(R%h0LLao8TM zN0YmS(V1zx)#hyC+a>Fi(^^%hJ$-?EuY))rmWfem$7HFX&EwC<+<0<4w_6F9_7NOf_uGY@9KfBQI4UGz><@P+Pm|``W$k9 zz6Mu^>vJ9_ho-T%x;g>4n$HW>d^99s$t=v>j|Q#K?eniyiW?r4dgQh?#-H_jFcr0F zhst`oyrI`C>uJw(Z1fYrf`xk_*rA>poeW?%eh3)B(ndy{*dBAM57XO5einm9(qbTv zt8U3=nCvitxj3$ZEs1vW#i`p+Kqg7=gN6nCVC|^06ZAy5dJeG_e29r+iYcI0K%|Ds-Zofa z9KjxISl9MI)9&tHDSEi#-2HmhMf#p;c*9#5={5CG)`PVdb>-F`7-A%%_ zm<@M<(trS~!bVvOv7j51)fLrx#5`4e5~z!ANykYv+Eb`TBlC9KcpvM%CpI~z-$d@| z)1wcJ1MY8}30Q&48RFX2n`MAo`xh)QHC?suxogTZKqEqRl5(?PUI-5Uh$!z3<6wPu zrQon)xoSa5LY2lfm0-Id9?`x@qTd8mr}kMwiVu7b%o=z>)61aUN>^qV%94)*`W0C5 z>YJd*#G}XbGZ2N3isXdsAF}H(T?=l2cODns_+o6pDr#x%kgl-)_C_? zEwO#mR$s7E3mV;+MeeWe&X1nvnrgIHX&v18dUQv;697<@G~{IEd}3>!nEoDj%=M5e zr7dws=-YlMv>cq_S>6;A!#l2E_IhXBB>H(bE~}u1RjR=eDf6<%HLIvZ@p& z%CYWnu>cu!Hmc&b=Ewy9^w|?~@|*LDJUPw%xtoZ?W7R1z)z+XlhDf(@3N%RYXy{*= zCi8IHitrJdIm)kiWOa4OSA!dtMAq2w@NOymc(4F?4Uk&9|z7^N7!L3-~3H3 zZyr8pTWmM)f|9fS55l4~^+Gbi`Zv;UdPdgnE3G3|&?DJkT-Kje%M)T;?~ z=(rrC*zS`7@nA+rj1^TZN#=7GxR=+t0<>E2QW|pQznv&fNyM{6y=vF&X){LqG1DT( z#cg&=_OY$*1b2LySh%YvA*>d%UYWJ-F@zuB)oo#4mV)~os9}4PmjXOZPLLO-aLMBh zw9-0D^2jaB@iE|E1jgDoHzFrzVC9fa zo;M-1s1{L6T3U&(OFB*8yQdJ6PoQAlv;zEHJ?7%Xz5_3Awu+=U$~+0_l<+eAhX{!+ zRc4vc@7=hs*+}J67BrfxCudqRYX=W%ZELB_e+=#n2X3{Q%Kw%*tY*FDW!3r>%Inze z!8QZLOL&Gx)6LgyYbL&VvXYQcVI zB4}|0l0+;Lp-kxEleKqNKZsEj8v+h(b)=5RgYO{XYsy(^sN1OdugSsD-U1BH}|_1`MiGAzS41WY$gm?*2frkSv$+K z*z!2fAVO8Yu;H$@+0QIXIuAEXpyHxG;)n;`I-Z)BUx#hH3Aw>MPen#wQen+Btxfr4 z>$7Nu7wTH7qOVPp@)f5+Ls;L} zFI$Y~n}j}HrA2E-$`s*)lIq?7L`^J&cf7)g)KOoe}J6;vmRr+ z(7xHWVP?4glB+XwS8pb~9eXuENd2_$G?Ohqq7fJwhc&>9P9gl(MSA zNquPv1--~b7rR;h#EAN+-`??2U2bmPOT7(~NJV^y)nh*S(GG&wyoP{-z?l0rJXr!e zs!382nW*0!!w&JyzFf(rVA(XurT|fmxAVPNP`y8YyJc>ss*ncCN`#M+b$75qHdF^` zTPa#v`D2RQhOm1IYO`Diz0A?9hRxpQ^M)7RUO574#lDQI%pC6!N^KKyazNwmAwy@7 zGqG$#`=CFvP*sxhRDIIGGpY4wQvoU61iR%=qWheH-&K0r(cEoCMsJ}ukpkmpb!a)Z z@#TeZIjb0R-|>tgkOL&@8)~=v5mk!ObH5d&t&Ph}L>Ca`5B}A-vIq1^V0tGGK$|Uj z`bkYEBXd$~E~0@A>~o{UZU@apSp1}H7I2;*K!lB*Z4T7|2aAO`K^#Z5=ulPO;cDMS zC-HGf4`|W_Ae5SoGXsF`i3CH{;!!I@rcP&I+h8fBdDH3Mq(QUqhJqY&3J7)AW! zKu(^dL8>8x%z7boHmc!Dsu4VO^G8?wmDNyH-6u3Ax;p@uLcpv#<|xHl(G7^96X+l|`)UNsb_Drkm1~8Npg0|UDTAHDqTpT4gg)UmE^Vd{=@1sm zp{p_cM~MrrEgx|`DL@Z~p@)_C!${Fg@`=Z+b=XeIEDSG7fNCTBQmjY-NTTpn#gK@q zam=x2@ix>KAmWP;7 z@lS|!8V*~Ku;tN~90>2(F9~f;^Y9G*Bjasx>;^6l4Z7ffl}Y>^`_Lu^r6wN7j=U09 ziH3+z-xz=2#qE-sqVZKZGAy!HRp5ZH$M#1UNLEpL&MOP|bHA4>)9%bEk{;yAOS z#+T7+?4cWKVTpIeux#=qDvuAqy~IQ?dGtvZ{(MJTYFwYYXSYXQ`S!%A7__L`+Pb7u zgqA3}M+H~pTTHq0J=o!<_VoTimzIH}%8p37b7r)tL5Ms^Sivp|uPS9s8l+T3CY{=H5~Al7g8F zK%LF~FzS6tTjR@WJkuwwb;Ni^eyBM{)tyG3vumSNji_tuMy0z zA4(cwlw;ya`@chG|Id)oNGd|ZN%@|7M75-NnFVzN3B{QDw^6zjE#lzQH*Y^;G_hNX z$vhLp?LXLer7Wa6-YH`cI~$9O*QK8st#yK+gs9;6FpEAhy_EJrdEMCc#e`CKhLka`e&h#akY(n8)BV_y zu)mFm8$R(Zgv!5j@M*&MLsy^g>;_G&@QXyG&Xew-CKm_Ad*RvwfU0C}5HiY3CtLF4 zAvbMC>Q0jNYwmdI%?6WOae{3y7d$Br8A1rEG&6O_1L{_90wgOXK_eUIT}(4S?6Llb zS>NO~7g)OWS^RoB!=<&f4hv>DfK9X*f7*&oUGk&&aGi71qKn(8I&<05Ma)t8T&f3^ z>3p>t840^-*~Q9^!7XIT91tON+mYW{F(BpTyno;xiOiox*EY{>c+J<+T~aq~W4F~L z!pAKtU;;g201bB&$}qX`s-FwUFeBMw{KM;QX;`G~6Q8)G3%n0u<3t3rnJsxOBs7Hf zS}V8`WhcC zh2bMUR%J9D5q2tfYPveEaqmkO&)n&2)GGJgGPLLhCXG{m(x6ZoGnwsnc><{!7~|P1 zi_-U|$DrP54s`Qi(a+gdwX`#!-kgiCl2prRKQ5PiI6+ixSaGo$19;Xqa5?F*eO&SW#tikR#k~9ocod}A} zdV(_BXStKSYc=C@rKp`_O{%8(jl?T`cgbJ0_e`mII9kF10fGvEj8BDiZOgsnn$Z~+ z4v7&tbrAE2b1}`iz4e%9s%Cx&u2{vtFCl#Oh5^&E{A+zI>!@MaRA}3%7vOG|xbmKe zG)t#X5YTcn_K)wMON`l#j!ztN)LwF4v%WTehp1NweR%W=ZUl8*tLj2vEr$j{Pw@8;V_7P@PiKz^}#35n6iLEO=%8~%y>sEN>2ae z?STnxvc>gY?Rwf3%RhW=9ZpbcIZ2 z1|58OWq_%-4D925xSW!YSDu3U=ofhdz3$#62}@Zkl(s2t#E;{!rb z7tVi*HwvL*c6H=}$I70bi^S~k;!&*6GzlQ5__!>1f>ik^()l3X0NruU2rczI-Qp!fbyGNnJf5Q?A7mOtfuo zNYARY96x;1Ti`V+nY$qT|31t6ESs2fAw@k#}9`FVD)lVN)^hjA}NBs9%RwjE8 z3yEpKMVktR98_Z#r;Tk5qF8rXJ-L_VBc~lzvu^30pw&{eaB;f&(up!wXWFd;ybM&= z)f&C3A`-$TDRtV!P?HnR3cs#4_5L_zer`&+&K2a%(gZerGZ~6alHB8_mG&)PxmQd( zS_T0x>p|#Qjdo{-UrFfr@5M8=bbY5i!{LWuk!+N4aE7v>#u0Y^%w&xUF(SHNE*V9V z`|TXzp;0XRufT7JrPz(alngQHddP=|4dA1!z<`{DL#fBffWg_&`^W|stc{6~^QD=( z9X~h_hwx)Zf`@^OPh(}fDsr>YmQl>!Fop@H-+b^IjsowbfE1@$yY0K9PHAwSf@ddA zE-$|;{GY?;wbI2;h=6tf`O!pKa=1B(MWTrCyN7aUmyuTZAa8chIz7DQ{JflGMNlA+ ztn8F;Umq{?SVzKb3S~j!5FH}CWYBQnPaQsi06zrOedJ&5g0Zk;zQ?Lhs6*c4H)=o@_sIR*t?K770!xYhg9~UTl^2m*mIuF< zzX$_9u+GApoyYVr+CwY?H4o)_TdpYB=ih_({P29+U9}tq@_UrTGS9?GC%a~Wf48pW zFhNglAghb$;PPdz0}1Y(*?nR?)Vow(AtDol=E7lSrF?9x(SXV4XQG~%5IG$TxydN% z`s^%prXK1!<^DqxJkW!K}Nn8BB04%2*n~l>;f&P&jy{s8-l=do5Ho zQL)fhQAA>)=hubRgqz@(1A(R{G`uMH={{ zpI)3pk2M2oKqB^B*G98!6JMqG1?Kax;s>+D1v;7e}V(;nUBAt)I=Ov}C` zeTnfCLy?`KT;x3H21LiyPbBeMR2MO2$F>@TJ=_?_;UcfkB0tl92-8sQ{@xBipMdmS*Ocy z;@J95;!qXCrpMO}+(MrqjF}APU=!ZYH*F$jCFW6uPE4a~S?Tn5A7Nv>x9(O4zr#QF z$sk&^Q}IlOE)-8FtH}eAR~mUX-hh0fqFNw>#=HgGFemL8@bn!>ae(wOl>yxXmZS_)td}(}MV1_IHBqKxQhr!5bQLvC4d6aVa6og19(tkOwB|`3z_0(BkEvS)Cx3CKS}M zM@EcmW>r3!wDUji#dmlDrDL`ElG4?iKbRrJ_w^8La{JGm58x z+}5J@bO=kbcs9>R@MqGQfgY+^au+^6d$PlAkPeWOW)}Ee3abCK=b+%UyPbg&EJ+PB z{F%2A(S>=E|0lCzJSa(hbaFd4PBVL)sG9%7{aYsfHqPBwbD#2rwRkEp>G(1D%V{*X zm1zY?;r6Bpze=L26yZ3&l)`*@qNr(b~nVpIRMB?6ZT%Idc5s=$0=AhBp&|fz3T4?x>;t=` zEMQ1Nc%{wiF@iL47KDM<)(g+vGMVU<6!qRWoXE|#H|6cjdP!2q{Z+M~C6lX>&=|Cy zOPgAvhy#KJzD8wuuDq%Tdxwf3<44 z#)VULNu49^i5==5q;A;gAj$|N51OczMI}{xg(C!d%(Gxy*)ZyWgw{q679sPQHH&hq zGdy^();;Ww<(N3DPE_Nim*x3tCKp_PW3Q>2B%chD&?O_Ea?)5?r$b-^Vt@qm)VF=6 z#T#0+u_mVRsn}B=?uH7s?*%4`ahIWX*81$3?Lv&Pg>jgHojm=ibo4U$vpm&$R~Qlp zJ-qOyAcpXUQE%CZiIW)2K5reJHQ!+J9h_`2FdSg!}fvaMd zlNYa6{tZ13fx5G%ZOq&J*_dWJmWB)D`P>Zu>wL4W35V^PX>)z%kq0TWTRnp2tX)UX zddWe5&*3;OPaxDSiNG*SojT$59&wNhg0E(8(|1vRKLz$O2lZ zX*BaO<4uOQObiID7twVQY@*NW)D}6ZJ0DnYL!oAjAJk$C8uB3;JursIOgwq+nvkT3 zD>mCsgz_ev7s}+r5y~kptjYQK@)HAH15~}kpmBCp5C}rLDL1ne%?t;;qYR3Y^cP8l zW}5G2S!I>ybI6J76zG_py=d@^be!B6X>*bGFSjB$mcE7gw}68Q)}zhFM-g;?-bQ#O z76!{r1;iv%0jCAe-4?)dt|(0m&dL)7?b$ zOW+1No6v=Q+ADz@-XX?2k2lJThUY8vw@XZnHB}14C;EDC#v5Xqe_d%6zIa_R+i}hV zTz9bje$!-gh5lUNF%+9J%F0>4`GRx^ zX;(2uCIh*0k2q`5Oldt3G+lAnR0KLJV&tMgk9k&Ov)vR$(7FfXjM$ZkwXKBIe%ar; zsdoXcD?s$x+P|Q@r5tiDKqmWZp%D6 zDUGt4k9}$q$=|XUfkx3V$x?JA8_uG!zh;I1=AT;jjSB=#-o?4!@TqqM=v^! z2cp`1vn$!B_M-^!3fiZ!xaVW`Pq@IS4L0*jz{x_kRgQzjE=g4Ju@6}PY)D~gtNwI_ zJhLaSBJJN~W{%kmicsV0`ug4CTTS|Q+6iSCcjEF8XQ&6r04BWg0}qz~0kT>utuA^p zb|sDy6P-8y0UI7hR07WNzN`yi%NZFJ^`0q99z=(Nq*-&Aj-L9vy>R;s*Fps8+64UB zyMhX;DEPp)eRQtSF}N}LlDUXU@zM!YWCX#N_abFu09eD=mqF10SXait}j#pt%fbBKqQXYTWSg7q|HoR?5&wp&IhIeee00wJl$n^ zSh1&CuP?6Fi=A!*hp2*rj+$HZYsK$mHb@coErR?HLe~4k8$jfNI_Wf z>{9rz&E?-nuFdn$F0Zm!>(E`zrgnRhh287QJfc_jJ=-0S!j3USWFn4jH-@zIp{myP zKh_9&`t(hE@;UbK62WICO0_0^wT%v99sxHZg3M2T8CJP2O+ohT zBu6qC=%x`o{5&OR(b>=%SyL!22!?|N6dk|;Y~k;*6D8~U1Mr!+F(Ym9FYc|DAOMx^ z>UMkelu#9zMqXU5nKlRtfHEeqLqu^{07bEz@hrB%zn$(I1ZrB^0KDQZF~TM&IzOiV z{W;W{tAlqG0TpWEKG+<~U1NtU{&PQ0=OT{{_a2c_je(EqlQF?mR+~m;p&n&)rT#Zq znTY8@S`kcsiX45ft(VgHKcw%~L~}xVhtxWG7=>KZ+0WO6hFOGSV*1&SXM8YEPp&`2 zZv9rMKN=jB&wwMb3PnjVt7JDHl7l_t=b+CNC>d%SA(u25o0+iCSiMSpi{IrX=4^vD zGb>d2ZeHBd(J3zfSFb=_#7OJYbhn*9K- z{(n|Ek$^bHmbm`kKw+y@hYYxihE#suK

    &%rfX$*H+b?iwmcFEU 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 a)yAF!0000?FfoA?7dtQm000001X)^*5)r-t diff --git a/kernel/tools/perf/files/patches/linux/patch-5.10.45.xz b/kernel/tools/perf/files/patches/linux/patch-5.10.45.xz deleted file mode 100644 index 27c5dd0c67aee0cad3e27865c099381b19f737fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1500484 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

    t)|zA+>(P0szezfGI@PCy&&E-B8E!(qB7YqB((N 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

    NVXRWv=&z;Y+WU3yzZedZsQWi%%MmWqbR&{r5 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⁣|ylP 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 diff --git a/kernel/tools/perf/files/patches/linux/patch-5.10.19.xz b/kernel/tools/perf/files/patches/linux/patch-5.10.19.xz deleted file mode 100644 index 26b2fcba4b2bdb348aa5a14ebd3f1d5a1abd55db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535612 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 z 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 z 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%0A!sThUeK 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 $=%fg*Za60 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