From 7dc7bb040c7b9d8dc70e1d48f2b0aa747267f535 Mon Sep 17 00:00:00 2001 From: Rmys Date: Sat, 25 Jun 2022 19:57:55 +0300 Subject: [PATCH] kernel-5.15.50 --- .../kernel/files/configs/kernel-x86_64-config | 50 +- .../files/patches/aufs5/aufs5-base.patch | 2 +- .../files/patches/aufs5/aufs5-kbuild.patch | 2 +- .../files/patches/aufs5/aufs5-loopback.patch | 2 +- .../files/patches/aufs5/aufs5-mmap.patch | 6 +- .../patches/aufs5/aufs5-standalone.patch | 13 +- .../patches/aufs5/aufs5.15.41-20220530.patch | 38476 ++++++++++++++++ .../files/patches/aufs5/tmpfs-idr.patch | 22 +- .../files/patches/linux/patch-5.15.50.xz | Bin 0 -> 2066456 bytes kernel/kernel/pspec.xml | 15 +- 10 files changed, 38539 insertions(+), 49 deletions(-) create mode 100644 kernel/kernel/files/patches/aufs5/aufs5.15.41-20220530.patch create mode 100644 kernel/kernel/files/patches/linux/patch-5.15.50.xz diff --git a/kernel/kernel/files/configs/kernel-x86_64-config b/kernel/kernel/files/configs/kernel-x86_64-config index 3533498d..13e2edaa 100644 --- a/kernel/kernel/files/configs/kernel-x86_64-config +++ b/kernel/kernel/files/configs/kernel-x86_64-config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 5.15.41 Kernel Configuration +# Linux/x86_64 5.15.50 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (Pisi Linux) 10.3.0" CONFIG_CC_IS_GCC=y @@ -10110,29 +10110,6 @@ CONFIG_CRYPTO_USER_API_AEAD=m CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y # CONFIG_CRYPTO_STATS is not set CONFIG_CRYPTO_HASH_INFO=y - -# -# Crypto library routines -# -CONFIG_CRYPTO_LIB_AES=y -CONFIG_CRYPTO_LIB_ARC4=m -CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=m -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=m -CONFIG_CRYPTO_LIB_BLAKE2S=m -CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m -CONFIG_CRYPTO_LIB_CHACHA=m -CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=m -CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m -CONFIG_CRYPTO_LIB_CURVE25519=m -CONFIG_CRYPTO_LIB_DES=m -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 -CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m -CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m -CONFIG_CRYPTO_LIB_POLY1305=m -CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m -CONFIG_CRYPTO_LIB_SHA256=y -CONFIG_CRYPTO_LIB_SM4=m CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=m CONFIG_CRYPTO_DEV_PADLOCK_AES=m @@ -10203,6 +10180,31 @@ CONFIG_GENERIC_IOMAP=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m +CONFIG_CRYPTO_LIB_CHACHA=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m +CONFIG_CRYPTO_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m +CONFIG_CRYPTO_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_LIB_SM4=m +# end of Crypto library routines + +CONFIG_LIB_MEMNEQ=y CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_T10DIF=y diff --git a/kernel/kernel/files/patches/aufs5/aufs5-base.patch b/kernel/kernel/files/patches/aufs5/aufs5-base.patch index 42ebd271..b37e855f 100644 --- a/kernel/kernel/files/patches/aufs5/aufs5-base.patch +++ b/kernel/kernel/files/patches/aufs5/aufs5-base.patch @@ -1,5 +1,5 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.15.36 base patch +aufs5.15.41 base patch diff --git a/MAINTAINERS b/MAINTAINERS index c8103e57a70b..e1b9eaca78fd 100644 diff --git a/kernel/kernel/files/patches/aufs5/aufs5-kbuild.patch b/kernel/kernel/files/patches/aufs5/aufs5-kbuild.patch index 79c3f92c..aa8869f0 100644 --- a/kernel/kernel/files/patches/aufs5/aufs5-kbuild.patch +++ b/kernel/kernel/files/patches/aufs5/aufs5-kbuild.patch @@ -1,5 +1,5 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.15.36 kbuild patch +aufs5.15.41 kbuild patch diff --git a/fs/Kconfig b/fs/Kconfig index a6313a969bc5..aca4b89d41a1 100644 diff --git a/kernel/kernel/files/patches/aufs5/aufs5-loopback.patch b/kernel/kernel/files/patches/aufs5/aufs5-loopback.patch index 1011fb54..753437f3 100644 --- a/kernel/kernel/files/patches/aufs5/aufs5-loopback.patch +++ b/kernel/kernel/files/patches/aufs5/aufs5-loopback.patch @@ -1,5 +1,5 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.15.36 loopback patch +aufs5.15.41 loopback patch diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 7a9e40b97831..5ed06240cc9c 100644 diff --git a/kernel/kernel/files/patches/aufs5/aufs5-mmap.patch b/kernel/kernel/files/patches/aufs5/aufs5-mmap.patch index a8b2040c..05ee1b40 100644 --- a/kernel/kernel/files/patches/aufs5/aufs5-mmap.patch +++ b/kernel/kernel/files/patches/aufs5/aufs5-mmap.patch @@ -1,5 +1,5 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.15.36 mmap patch +aufs5.15.41 mmap patch diff --git a/fs/proc/base.c b/fs/proc/base.c index 1f394095eb88..93f2479ef319 100644 @@ -72,7 +72,7 @@ index a6d21fc0033c..02c2de31196e 100644 ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; diff --git a/include/linux/mm.h b/include/linux/mm.h -index 90c2d7f3c7a8..ab1b20fa5837 100644 +index 04345ff97f8c..4ab9bb75c894 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, @@ -166,7 +166,7 @@ index fc60a40ce954..d45773672730 100644 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 +index 00e391e75880..d8b52d814319 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3353,7 +3353,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) diff --git a/kernel/kernel/files/patches/aufs5/aufs5-standalone.patch b/kernel/kernel/files/patches/aufs5/aufs5-standalone.patch index 63d24760..54fcb65b 100644 --- a/kernel/kernel/files/patches/aufs5/aufs5-standalone.patch +++ b/kernel/kernel/files/patches/aufs5/aufs5-standalone.patch @@ -1,5 +1,5 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.15.36 standalone patch +aufs5.15.41 standalone patch diff --git a/fs/dcache.c b/fs/dcache.c index bc5095b734f5..9508bd57a3bc 100644 @@ -45,15 +45,16 @@ index 02382fa9bd34..3418c60b9014 100644 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: +diff --git a/fs/file_table.c b/fs/file_table.c +index e8c9016703ad..5e7a880830fb 100644 +--- a/fs/file_table.c ++++ b/fs/file_table.c +@@ -161,6 +161,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred) } 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 diff --git a/kernel/kernel/files/patches/aufs5/aufs5.15.41-20220530.patch b/kernel/kernel/files/patches/aufs5/aufs5.15.41-20220530.patch new file mode 100644 index 00000000..4b3bd5f3 --- /dev/null +++ b/kernel/kernel/files/patches/aufs5/aufs5.15.41-20220530.patch @@ -0,0 +1,38476 @@ +diff -Naur null/Documentation/ABI/testing/debugfs-aufs linux-5.15.41/Documentation/ABI/testing/debugfs-aufs +--- /dev/null ++++ linux-5.15.41/Documentation/ABI/testing/debugfs-aufs 2022-05-31 16:59:51.182880353 +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.41/Documentation/ABI/testing/sysfs-aufs +--- /dev/null ++++ linux-5.15.41/Documentation/ABI/testing/sysfs-aufs 2022-05-31 16:59:51.182880353 +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.41/Documentation/filesystems/aufs/design/01intro.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/01intro.txt 2022-05-31 16:59:51.183880353 +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.41/Documentation/filesystems/aufs/design/02struct.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/02struct.txt 2022-05-31 16:59:51.183880353 +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.41/Documentation/filesystems/aufs/design/03atomic_open.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/03atomic_open.txt 2022-05-31 16:59:51.183880353 +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.41/Documentation/filesystems/aufs/design/03lookup.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/03lookup.txt 2022-05-31 16:59:51.183880353 +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.41/Documentation/filesystems/aufs/design/04branch.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/04branch.txt 2022-05-31 16:59:51.183880353 +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.41/Documentation/filesystems/aufs/design/05wbr_policy.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/05wbr_policy.txt 2022-05-31 16:59:51.183880353 +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.41/Documentation/filesystems/aufs/design/06dirren.dot +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/06dirren.dot 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/06dirren.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/06dirren.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/06fhsm.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/06fhsm.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/06mmap.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/06mmap.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/06xattr.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/06xattr.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/07export.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/07export.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/08shwh.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/08shwh.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/design/10dynop.txt +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/design/10dynop.txt 2022-05-31 16:59:51.184880353 +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.41/Documentation/filesystems/aufs/README +--- /dev/null ++++ linux-5.15.41/Documentation/filesystems/aufs/README 2022-05-31 16:59:51.183880353 +0300 +@@ -0,0 +1,397 @@ ++ ++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). ++Enya Quetzalli Gomez Rodriguez made a donation (2022/5). ++ ++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.41/fs/aufs/aufs.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/aufs.h 2022-05-31 16:59:51.186880353 +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.41/fs/aufs/branch.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/branch.c 2022-05-31 16:59:51.186880353 +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.41/fs/aufs/branch.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/branch.h 2022-05-31 16:59:51.186880353 +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.41/fs/aufs/conf.mk +--- /dev/null ++++ linux-5.15.41/fs/aufs/conf.mk 2022-05-31 16:59:51.186880353 +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.41/fs/aufs/cpup.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/cpup.c 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/cpup.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/cpup.h 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/dbgaufs.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dbgaufs.c 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/dbgaufs.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/dbgaufs.h 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/dcsub.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dcsub.c 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/dcsub.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/dcsub.h 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/debug.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/debug.c 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/debug.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/debug.h 2022-05-31 16:59:51.187880353 +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.41/fs/aufs/dentry.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dentry.c 2022-05-31 16:59:51.188880353 +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.41/fs/aufs/dentry.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/dentry.h 2022-05-31 16:59:51.188880353 +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.41/fs/aufs/dinfo.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dinfo.c 2022-05-31 16:59:51.188880353 +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.41/fs/aufs/dir.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dir.c 2022-05-31 16:59:51.188880353 +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.41/fs/aufs/dir.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/dir.h 2022-05-31 16:59:51.189880353 +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.41/fs/aufs/dirren.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dirren.c 2022-05-31 16:59:51.189880353 +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.41/fs/aufs/dirren.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/dirren.h 2022-05-31 16:59:51.189880353 +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.41/fs/aufs/dynop.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/dynop.c 2022-05-31 16:59:51.189880353 +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.41/fs/aufs/dynop.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/dynop.h 2022-05-31 16:59:51.189880353 +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.41/fs/aufs/export.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/export.c 2022-05-31 16:59:51.189880353 +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.41/fs/aufs/fhsm.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/fhsm.c 2022-05-31 16:59:51.190880353 +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.41/fs/aufs/file.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/file.c 2022-05-31 16:59:51.190880353 +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.41/fs/aufs/file.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/file.h 2022-05-31 16:59:51.190880353 +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.41/fs/aufs/finfo.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/finfo.c 2022-05-31 16:59:51.190880353 +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.41/fs/aufs/f_op.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/f_op.c 2022-05-31 16:59:51.190880353 +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.41/fs/aufs/fsctx.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/fsctx.c 2022-05-31 16:59:51.191880353 +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.41/fs/aufs/fstype.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/fstype.h 2022-05-31 16:59:51.191880353 +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.41/fs/aufs/hbl.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/hbl.h 2022-05-31 16:59:51.191880353 +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.41/fs/aufs/hfsnotify.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/hfsnotify.c 2022-05-31 16:59:51.191880353 +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.41/fs/aufs/hfsplus.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/hfsplus.c 2022-05-31 16:59:51.191880353 +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.41/fs/aufs/hnotify.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/hnotify.c 2022-05-31 16:59:51.191880353 +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.41/fs/aufs/iinfo.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/iinfo.c 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/inode.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/inode.c 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/inode.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/inode.h 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/ioctl.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/ioctl.c 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/i_op_add.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/i_op_add.c 2022-05-31 16:59:51.192880353 +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.41/fs/aufs/i_op.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/i_op.c 2022-05-31 16:59:51.192880353 +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.41/fs/aufs/i_op_del.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/i_op_del.c 2022-05-31 16:59:51.192880353 +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.41/fs/aufs/i_op_ren.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/i_op_ren.c 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/Kconfig +--- /dev/null ++++ linux-5.15.41/fs/aufs/Kconfig 2022-05-31 16:59:51.186880353 +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.41/fs/aufs/lcnt.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/lcnt.h 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/loop.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/loop.c 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/loop.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/loop.h 2022-05-31 16:59:51.193880353 +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.41/fs/aufs/magic.mk +--- /dev/null ++++ linux-5.15.41/fs/aufs/magic.mk 2022-05-31 16:59:51.194880352 +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.41/fs/aufs/Makefile +--- /dev/null ++++ linux-5.15.41/fs/aufs/Makefile 2022-05-31 16:59:51.186880353 +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.41/fs/aufs/module.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/module.c 2022-05-31 16:59:51.194880352 +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.41/fs/aufs/module.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/module.h 2022-05-31 16:59:51.194880352 +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.41/fs/aufs/mvdown.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/mvdown.c 2022-05-31 16:59:51.194880352 +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.41/fs/aufs/opts.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/opts.c 2022-05-31 16:59:51.194880352 +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.41/fs/aufs/opts.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/opts.h 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/plink.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/plink.c 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/poll.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/poll.c 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/posix_acl.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/posix_acl.c 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/procfs.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/procfs.c 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/rdu.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/rdu.c 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/rwsem.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/rwsem.h 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/sbinfo.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/sbinfo.c 2022-05-31 16:59:51.195880352 +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.41/fs/aufs/super.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/super.c 2022-05-31 16:59:51.196880352 +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.41/fs/aufs/super.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/super.h 2022-05-31 16:59:51.196880352 +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.41/fs/aufs/sysaufs.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/sysaufs.c 2022-05-31 16:59:51.196880352 +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.41/fs/aufs/sysaufs.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/sysaufs.h 2022-05-31 16:59:51.196880352 +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.41/fs/aufs/sysfs.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/sysfs.c 2022-05-31 16:59:51.196880352 +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.41/fs/aufs/sysrq.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/sysrq.c 2022-05-31 16:59:51.196880352 +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.41/fs/aufs/vdir.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/vdir.c 2022-05-31 16:59:51.197880352 +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.41/fs/aufs/vfsub.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/vfsub.c 2022-05-31 16:59:51.197880352 +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.41/fs/aufs/vfsub.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/vfsub.h 2022-05-31 16:59:51.197880352 +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.41/fs/aufs/wbr_policy.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/wbr_policy.c 2022-05-31 16:59:51.197880352 +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.41/fs/aufs/whout.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/whout.c 2022-05-31 16:59:51.197880352 +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.41/fs/aufs/whout.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/whout.h 2022-05-31 16:59:51.198880352 +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.41/fs/aufs/wkq.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/wkq.c 2022-05-31 16:59:51.198880352 +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.41/fs/aufs/wkq.h +--- /dev/null ++++ linux-5.15.41/fs/aufs/wkq.h 2022-05-31 16:59:51.198880352 +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.41/fs/aufs/xattr.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/xattr.c 2022-05-31 16:59:51.198880352 +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.41/fs/aufs/xino.c +--- /dev/null ++++ linux-5.15.41/fs/aufs/xino.c 2022-05-31 16:59:51.199880352 +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.41/include/uapi/linux/aufs_type.h +--- /dev/null ++++ linux-5.15.41/include/uapi/linux/aufs_type.h 2022-05-31 16:59:51.199880352 +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.41-20220530" ++ ++/* 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/kernel/files/patches/aufs5/tmpfs-idr.patch b/kernel/kernel/files/patches/aufs5/tmpfs-idr.patch index be89bbee..f4313145 100644 --- a/kernel/kernel/files/patches/aufs5/tmpfs-idr.patch +++ b/kernel/kernel/files/patches/aufs5/tmpfs-idr.patch @@ -21,7 +21,7 @@ index 166158b6e917..0e9606171432 100644 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 +index 342d1bc72867..460e4c54483f 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -108,7 +108,7 @@ struct shmem_falloc { @@ -88,7 +88,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 lockdep_annotate_inode_mutex_key(inode); } else shmem_free_inode(sb); -@@ -3250,8 +3277,7 @@ static struct dentry *shmem_get_parent(struct dentry *child) +@@ -3252,8 +3279,7 @@ static struct dentry *shmem_get_parent(struct dentry *child) static int shmem_match(struct inode *ino, void *vfh) { __u32 *fh = vfh; @@ -98,7 +98,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 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, +@@ -3273,14 +3299,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, struct dentry *dentry = NULL; u64 inum; @@ -116,7 +116,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 if (inode) { dentry = shmem_find_alias(inode); iput(inode); -@@ -3290,30 +3313,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, +@@ -3292,30 +3315,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) { @@ -150,7 +150,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 return 1; } -@@ -3392,7 +3400,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param) +@@ -3394,7 +3402,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); @@ -159,7 +159,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 goto bad_value; ctx->seen |= SHMEM_SEEN_INODES; break; -@@ -3502,7 +3510,7 @@ static int shmem_reconfigure(struct fs_context *fc) +@@ -3504,7 +3512,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); @@ -168,7 +168,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 struct mempolicy *mpol = NULL; const char *err; -@@ -3571,7 +3579,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root) +@@ -3573,7 +3581,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()) @@ -177,7 +177,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 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) +@@ -3620,6 +3628,8 @@ static void shmem_put_super(struct super_block *sb) { struct shmem_sb_info *sbinfo = SHMEM_SB(sb); @@ -186,7 +186,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 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) +@@ -3662,6 +3672,8 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) #else sb->s_flags |= SB_NOUSER; #endif @@ -195,7 +195,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 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) +@@ -3779,6 +3791,15 @@ static void shmem_destroy_inodecache(void) kmem_cache_destroy(shmem_inode_cachep); } @@ -211,7 +211,7 @@ index 1609a8daba26..b3e5f52a5aa2 100644 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) +@@ -3920,6 +3941,7 @@ int __init shmem_init(void) pr_err("Could not kern_mount tmpfs\n"); goto out1; } diff --git a/kernel/kernel/files/patches/linux/patch-5.15.50.xz b/kernel/kernel/files/patches/linux/patch-5.15.50.xz new file mode 100644 index 0000000000000000000000000000000000000000..e980ff34613bbd2dcaeaf1acec7c175ebffe11cb GIT binary patch literal 2066456 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
  • C>__loitNYnr;6!at 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

    8W4E*%YstSERFUIE8K7#3V7!#_~ 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%0DX@CDX>6b(zZ}ZBkVq1$qwY1xA3W8( z%M-V_;%4H$PGF%9>K6={NgG_d*+`1 zyl?9fLypmO{>S!$mp_302HHFK+Rr}PIXz60#nyZ-z?%4}#){3NDS`cqHS>I0pDIVR z(J$pj>d8xN>*gJo**BJV0K0_^b9HayCflC)O5~xbE}8^^n>sG7;!>e~k8W|4unN%6 zW81;&24L1(wgD%+HjknZ>zWK&_(NIQA5Jyy?NK}PVeNxdeq^^30qSfSbCMe3*A~sk zSpDZjAM-U+`@`@rjhw&~|7eeFqIuyv0?U8RZbk@R0z0V~`Ns5}y?QLTSgCyW=BDPXKUhY6i3|Bb;x5aS5vXD37a!rJNT(`-=wUB9pYgbd zrK2-bx@qrVlH`A`HJ%2;P=SL0WD_eIdx<<`@NX58X@XfuStH}{;LTya-hXvO1N4T>`0FE!h0atk;AuM-kGs zEp{+N_x6cLv|Jv}Z$w3gL-XZHOrJXYfB?v9<3U6YLKFRN2z%BExzuv{B<*mowprS- znwQ~DaaLB8h<>0rt;{iLIjo1G(16!YcpA%8a9zWOL>d(~2;-zeJKF*LFHAga=o#pG zn03UC2L2}UHq*Ov#;StZ@MxO`Xc$r!wTR$HEg4oy)lGj8(YFJb1-gJZA`AKkDtNox z^?O167Tujjvs^ql5tXGaM2(u@XeHQ=1vz^n=G7@DNakr}3PT&e@^~tV5o_tB2@{5- zc?42x8Ep8Q(#E=jJg*)_h_vAriz;*EHo-^xz*bI~@=Pe@P7l5XWOR%qsyh56 zwhIWRV?2FzfCQyt6Iy+u5of>XU7RH1>5ZQHknKfu#3xShk{NTJ@=N3S*}(4z}V(Vihz0AQF6nC}bGT)FXwLhBMxmiFKw zz@Zsmg_3O&2#STe$qkw)!NadJ;=vIz}X4T8l|pJ)u43@cYE*RogvNM|kIv+Ef z4>#w4-3eQ#kHu9BTHIt4>vgIngCl9D(x!++W1>JU5#AZYNOFxcevOK>;S< zND*>aZA8+0<(;Gb{p69+Dr-hav#kAkEP7Jubkw8IXN=l{Qzd4;2pzD*`|&L z^?6(I>DG+FGTl0L#Nwu;*@Jn=#Va7ofuuyta^JJ$7~)S?U{X@khRBK3jCMNzbY-8+ zf$Uoj%^LbT{DJ(=MR)o2AC;Sw(|O?xY3(lA^ziNsG}2S7Oy%oZ=tUL`&pnou8%eiw&%)gGfY=!XOewdBnw^ET%$~hl5TDr?!k*Du z(X-Yf+IJRnM0&_Z7zA6Ejbo{N(reAWV3Fxg_|@!iJ?o|4X8WOgQKd-)+)o`%Peht) z2|6#{-UVa^jyN~0X3d^XjP|EH9$)hgpUEC_lD^(fIti{4vkGJ&Q0NUfY@WZ?Ivyf@ z3QUo)yo)r)>YGm6Z9&P^-)v8pwA`40G23-j==Sg}v}RWP0%b#Cn89z}*mc+r%YwZU zjKqI?7h@sf?&*EBGtX{B{-|MoZDOaWj5qVN!j*1XlHU0F&NM4M+XS|!<&t)k=+68I zfq@7{OOERoiBw$cN4SsN5mdxvnSLNW-$}^-(HgjovKCv9I3qNQe;q%x%^c?Os1XJU&EOy$`UFXd@hXyY=LyUcTNbRLX*lWQ4OoI4U>!w=vwHY{Ke!h4Bi` z)`imGih5lIt$VJ^a`=xC8yMPUS(nDYdPW|2t4LhA9hnm&f)hSyNQx*_lmcmuo{B%b zi=2o(Ij6KoC*%-?cYXvjhe~8umCN6xI_t~q#UEz!P6EYlC;?89-iVnml1Lm#ast4g z&F{K37>|IVr}fYGGy921QF7P+WCEB5=&xUj%&fEd7xH)A|Jxg9L5krd+!um|*CPuL zD>e^kFyBCS(YgS5iNpi@)(D(ni$-;*aX37CQ5Ni0tsDg5{E5NZhL{eC0GngG(bc@} zOY+Xii6^?6#s)Z)__wdpq^%!hI*>q5iwz}MC)jkQT^sI68TxSOmGZt=@*7 zY=uj|SyQTC&0qEG#S2lF`<6dQH(b2oG)I z@GzA8-+bhVn??$KmV~!WNW2fzts563*8v|tbh?xK&|OR$qY(${Y^)tjK(Nxd?dBj; z`;=SO5@0OZIN{z(nzwUiBn$yki;Jr=MqN>2U{Wk(nJ7N>hS-2UyOzwxjOUSyZInZ% zT}f&EgWS~Sw)fPnt-`L^zRA$!9gM;Z{(mCF@{Ji%Ivwb;8m#;KKhCvYcymwMwXi|A zO78sCKQa=Ex!RbsGi#IGh^&m#_JwL~5`YJ&tL2%<3qdnnQ#mf4s}Vu}j?5!Jy7k_s zs`Z2{HBQfjZeh_j|po==Ezu%Rb|jALb43p%~5GK zX(cIWAeF)1Y^B8Qr)=N)T0854TofS=2%=o>kRDZ(g9w-S4jR-swZEQZTj!z&7`Jm3oU!U2r+j9yAi0u>BuED;1CY%k z>CA`ynd);*A)3(6dU1Sh!#GeTBcP%4RLKl0*)ltb==en<418VYerj^F4v@2S)21zt zif*vQ?Jq~q0d~bfELmG}nezy~a+D7Cp5u!--)NT_k~SoO^}c7-uEnmxCMeB~#`{?> zA%{l}XnjIu$`}*?wq=l0`Ov5E`+%2(*hE!2q2oz6E;{sE&k`mavMgBRK3MOjp@aW( zLZUXe0n(a;;sUr_BL0r$7xkB_>12F=VJMk6-v=Cl2C zrqIe2jMtlxO1xQr;_%9KTz)BZ5MqJZaZ(znAOoX+4{QOS-!6UZv0oj?r@q3^6a zpPO|Y)OB?uj90!>?scKJ`S;SJf~oYc8S_Ju_2=Olqz=P0^TGghZ&h9qB6=ykZ=VyspHoKF}T-Pz> zP>J9@3|nX?YBRxBdUucUZHo{PLWjWJ8rQ6YQ^I}M^!=^SF4onflM4-zro&$Z97viD zGHe>Vk+1EFQ7HTdnbUNW(j?0F&c^SfK_qo80OEZ6JOaD`zd);xgiK^8VAgr6}^D5h%{QGqzdiLmYhInD}sq?<9$k9Nh2&9IvgoVZ<^ z$g{Gm?~k^M=i8dH66@pubVhRZ^zQuoM= zlWtg-E!zOY@|46OiPi@HMp3~m2EzVy!BQ3fou3eM$|*$SIkMs!6O*55ChJ(}E4xGa z)&Z-Q8+?CaQ80j!_cx(UElED0*of8vZ2YAomIsyTu7Q3+Cdz_F90BofNUhRG zeqrFF!NFQA2oCMbIq^b6Z3697%tc!~!X#4t7l`c=#osxrgijHE-w7op0su-fvCMAp zHY5a_Z&q*Xy>Ed3%3K53-$j7m9p%SV1pF^HTZSFy#H3Gz!?rqCl9$c98O-g*+=gHAlP8mm52Y z2p-PAapM5HSHESQdy7OuB1ca8%|H!=5rsWt94OFt2KFOJPvVtD;^lH=0A_~{O`4N2 z7$_5-X`)^6RCo%g8TOo?>05p?YXWvlh@2s^0_MF4G zEio>&{2~-6O4}$ujmtiUyKh~zsKXLw7IOExr<7-;O5WfvIaZ4CP+x|pfSxJ@xJ!Bs z4;N-T)gxLm&mU*O7V1l?_ z0`Gg~jxbb!NS^b`dvE59lgL=FvFlyIh8DKYz@0|`W^W*h!gCxB&l0{6$KfM!Tnx3l zI|0Zw;_GDYPU0_ip|AKP5BT9LkTN#+dgqSVZap(Nx^r%M@j2*vAf%QSvQ7v^U(PK3 zUxxH|rw)Q%!DoqZ3fgNrUfMlkWzwD~RerQg%Ajx2Tw^5`IiXq#43sHFi`{hArR_x@ z|CsDr0Z4%sH&e$@>4R+6FLEQek+vcL*7bQR#1q!x7k=9md2HX7&D_id)Jf-st3G~k zYkkSAb90kwKAO=6U-1XV2Ygy3zoBtb?|l@ZDlex1ORs0MOkKa;4-g&O$$a+ttyfRD z7+%5abYiFYv^$ZG<6b>qRdBRvR91Wmk0<{=_bO|U7h|FVr(T!2Rj6QhA2&2dqAFd} z0#XF)&!RFy0gZSe2ri@U#ywL?m`Kxf`6db&NT-?h=e$-CP&|TsFbMT^uS$ZKX>rv} zp6m>$ir9a|bt}dIEIs<;mZn;BjQR*{Tu4n=NJ_{3j=^Iw;uF82>m7gfD>$zDJImaL6f%Pik z&E5yLID7&jMy#J-8_?n|iBlt1gvjM`=}^K}09mvY*<$1BK0;32Wk^!dQjmqtb(X4iHN->CXS=+qE>c*H;rQ4t-oXth)14Y48o(*2%< z+7`&Vixm5GcF{~Kw!9-j$|CnTMkkC!BYS|yNR-(r7b|C``!-0HF5}sV4{jT6*_@O6 zr0HG})c3m#7dPw%w43tF!6LqnlOXm~Qv=(RzAGyl2k$fynlbg_)g?0Ls}$gXJO zfM)_(Nlr=;U-x(yCNX1LlSAYgQ8~&klBqzm@97*+!=_6fh%(mbjFJSVEIDe9C*$mZ zK%Fb3Ve<#-+$zcR4xZ3vb$UiSTNU=@IiDXvaRUp3vPwdDmHGXKnZegfG}7+{)9tgH zJOh7H>YOz*y`=h`17}rXYbym0x$nyfR-ady3rCn4K1+S*)zJvrKfRxMV&rcKbdn_i z1Ubn)7ry>E;MfkA>xl}^;n+!92OjUZ`p!z3!vFT}D7LD>O$@Pme?gIz7vVF5jEC8+ zrijbRx|hFfl-ECAu*A$6fKw~|Z6Y=n{49$5Ji~^l764!?lqEf@EF9br&7a$Rd8zL< zLDR{DHW47Gtv%4&pm#PKOLqWa8nWP#YOn1idxX4;U|G_TpYC~JO9=J|5aSN>LCD!J zaTN1HsH$|HIEH^*eZen1?06T)x!tMpVMb=ePklbnjr0?#H37WCarJ?xIHyz&PW>aNMaSTF%+nCV>mK0fRZ#6#$6_Ph@T)VR zg<46z8X?J`SfQuV7k5|$H9}=0Fc)DAehCcOL8-QkAT#ultB`aHQA|hu@Cm}ds60li zuu8%V7>spYc7=aBt{?>r%K$r)z{(nOb#`xWb;vj{*$V45Bx>vEFrm}Jxw;?fHfBx6 z{R0Y5)#z9lW@CUbzzRujh*bWP3p>&^m7p;lhE}j-k8o!L%^%5$#7B(^)mi>-*4<)$ z`8*X}u5jB{f#-cH<@?0Us2;-vALl#SJ}S9^0N7aoPRgsf6lo72FwKU-MZp^h;l74K zc4Il8ogL{Y1kDdi9nVf#yrOWiUdlNfCE@!YMe#vH~g#V8T*DI z{y_(SqJTyakM^T(VV}g{ofL?C&n0PPO_1hHtuPAjq5Zuz$;xN2!I*mE%AS zt?Z6EkCjtBhV}Pq`;2uf`(3p0J4VJYC_-X0S3D>qQaKjF4X!yZWuXwwi{M)0(98A*c+%R!I+|l zGrCY{y{DMm`)CCVUYVw}c3dM$LGK&n8Uxpu1NEmC0@rvNFHvWG>o0qibaYYM03lLn zC_ZPG)Zj627p=QMYKo;+Zg)ImKwY3#>84aCM?(2wdgFc11k^|#KLppK$Ck?8PZip< zwB{&@O$K}>G2h7^N$*A}*$khfdtm;Y_xW-Lv$`QTscF+Fa?OV6M7sfWWM@i@m5+M^ z;vw9{=&`#Uh~Fd7IKMs1aX*`^NHSH??W*MkP%r(w62*4KbCL`D6?GpKgAl%f93Fm3 z@^^S`SR=4Y-L2m7>H4t(v9{NvtLV)Zwv-zEb;zdm2#1zX+yDT&X25D5R?L8i(qHHa z@~KzoLFt#Ghfn24m2hgzS-)Nx?NsKRE4aduXJ}gVfpi%t?f~v!Eiu%DFS*CRnkq|D zre^)@QghiWZHuY;rVmf;xI+{-vy=l8YLP>9vyD#&?NqDNFQ&Hu+>-dj7V)dH;=7rG z)|=&0g5I1jJolO#g=jgIowAm_iUf=EG&^VAEqIa>?MwPKDclC z{mtzeKeQS)JNHsk;=X(?g7XSb`ZMq8F8=Yp9>;ZHb29tFp;r3&7qy~#DZC2tD7%PQ zG=9Ll9aD8rw{mDc-p1JDRSqcBe3nD-v!ph8x>c?>wQ`_*1muO0Kw-^S-oH9MJ zmwld@2;qpss5k~Tqnp=r*u$!<`bQY0VwdlVF}9h({-od4yZ>!3+lReA-b^EGP9`Yc z^+!X(iT$Jl=MlG%GB<4c-S!dle4>eNgxV>M)>gs!g4Z1YCqUT0neuWMtTG^^`emsS zOUu3^KI+5q;P&3Ut<@h84n(#-G-o=17KD?_9 zbe>qUlXrly0TliR18Amp(~-W9rCt-`h=^^@cb5Tc`LMwMz816-w0(Pc19|lP!bhdl ziCbr6ca9n?0&o;bMM0v{eTw2%S^FHF-O1NS-`gJf5_@i+RqI*IxIhew1iA&kbhPaMi%4& zqwN3gJXXjC!}b)Vz0MIDTY&7;>Vz~Y~(k^FJ;Im77K{Jb?{%i*h_>wazD4Yl5tI@XxpVFz5x=;uCY?~8T-lHk zc`DOlv+&Ohei0>v8tp&w6D=h=qxiqC4?k+PX5px8Be22bq9}z>CxWSg0R}r!nNEVu z5YGle%L>1ww)a^y$usmEi{z^35pX4FXH78^U~#{taP`J1KVKT#nGm}tt7q+`oMR;k z3EX*3gS7(0hM$v^2f$(>9IILta>y2=~89c@|}wp;}_ zK~@hj7QOLO1_J@*sIQ|6N-*|@3)nr*lI5N0^yPm-wQ34;rA|Dm@BjIl;*rs!r1m_r zF=F_fO`)4Jq~`Z-t7dn1I6~t-Yfn|5IlLGl;;-3;a*LS~*>KU_4mU6lxhuw_chmYK znGbxP9{VX7R|1E;{>_RDkGO`mF*~E~F7qNoiNyi>2TtU(Ai)kWfr@la!nyfB*$Tql z4Cn@^ROlhCo^^qcHQb)cG?aX~_@_~H_RuT1fJVIt`T5Z!BZ8hl#=S)0?mi-t^(kF0 z)5b}3UWbl#hwCfgT+ky5UP}^H0`ty~2{Biwtcw1246ERmxQ2*=gCS>eUb2;x$|IbT zZ*ou8Bl3wLn=YNblcb>5heRmMZP<}pCqx7!Vc6!}n>d^QYy;@*plI(K(4r;d8ZD7r zb%(#K3B5dJH>;ZMb^slPKWLh z;&dCp-)Yu9dM(n-{c6e09odp zhsKc_nz_<(7a;MH4K`DS?-?0SJxT;JRI&7k%qvowuj|g#ae(_lYQ10TWJ57}sxh7U zal<*LYxG9`i4dk6FH-y$uMol$2Jzi2Yw!G9>^vHm;f%pOC(W8u{bYE6I_JLxa&enX zaOngh066#8Nnmd08^egZ0n2`1KLe88sR$=j3!EK6H5xEYb!(A$CujNxZC9VJ8G;eE zu*mzm?Ke@y-+)R4UGAsItt6;=KH;&HPI5e+hT7t<-ZB+|o8dMjugddyQd|y3H_$+y z{YaUN#fU~`>bp<;R7#kd$*N&fUp*cBW$((>f`Tgjr*T~}a37;ZC z*}YaD?L>ggygO~+y<%TllfFyUPxD?L=T3u9FvZpy)})Eh2xR)~a2jcan;^9DRVjMi z57GYZ!F$gl;||=qN~c9q4L*u$OP3D}x56 z$ikDk<@=MX$-xysdid_zuKci71&|t0e5|>L8>=51=WHmC|DoM)OAe&*q4^(R?wxd{ z*yaCqPJx#Rz@%Y(rUO0lpyT6LV=T~M>1|l=%w#G|)Z1lIX>_{;`DfdK# zfO!u?6YDTR-DAechGILECA5=N=iUD9drt@d*Jb4^uOI_$h=vh63o{VeThB~A%2Zd< znw(#MrZ#=o?@^+ot|fzI!H|&nQ+~hl8rRJs*`li*SUzSx&QJ6T$jNuy0Gl1)wW99| ztzb?{WG0^Xo;|y>nB^-U#Mg}J)<`nRR+3xWQS1~p`nLp(7sBE+w?0&mm`w=PgZaQj zE^g^N0JbADZWuBmw1tMtPNrt1iY!Bc8Hvf@=*)!(T}BOKzbytavJm!ajv8VmKu zjTTOxAy*4@;u|G$+;yzPrHHc_5iGLeHn>zRX0O_nYGo*i5L#%af8yD7LNSOMUy#A<(X&40xSO%}z@>%LQjcA+9v>L>aVIrQ*6a5`!(0r%) z8Sj2WxJm1SP!!0_v3NdKz($E;cgSRAT?>3)qiPxd>&fI#$xkRf819R zM>W{uR_nHSK`HyX3<|Q91XvwblG2``13x&n?BwbLgYE|vAF@bpWscE96!ULQLB4Wl$gci0UaUwz`{dW@YL&; z^=u%17Dg07XBd`x7j95t^7$2%<`nIC{L61I!xQpbWJig`68-V>BPgvre$ZJi4RmEd z1}VbG35;&=Ql#lS!5VP`t*loAP&XGfUXkg|k<}JexE>??zK5rT75!6395d`4?nG>N z2F|dFUnk_3nk{`%@u5Di!Lw@}FIsfBrg~iS%!%wuT745)+%)i9^gfjr2-AaOOE;U2 zMESx?smIhu!_NbcjhrOaOFc@@BT{3-X~-Ua?d0?T@qtNi2xNt=WB7Q8S2Xrs7@#0= zq=A!_u}4U>M-OyuooW}&`!uq@yU{V8!l$1__YrL|JNW9#$v29;@djy9C`C2??Tbd$ z?GPP*pbc~$JYBjZ{N3PjO>y(CVKW)Z$BdWWrDQQsysNzP3H3hA@1>b zC8Xsf+tT&bSw+Poc&<)lJqDnf`ojKO5%O$IDoGYQH~>Nl5^l4zFrUT^ZL*YW14=k!N&IY&PHolSQsBotjNNvJ7oFA6L?I6B3_)BXwhw@ z-zGcB>JvS~(o-mNAo5EefJCfQOC<;0@b0{jILkY4(HW}<;+9@jTWVy+J!-t|B4oRd znYW!<268m3D>0*PP*b+`BQxld8Gezct>9~GkI(GH`LN`K%Sk4CgF~*`&??H|=X;z( zDfEi)rK-^ChHy$F0TAQ1L9(^4sl)?6MxjoLLJvrIZ$UeUPG=ApNU1Za%LRgitPJxz z)?B~wkwhvdWo`vukKmVg z!46AVJ&6l_GYDM$#U;EH32186_6Gc|UCnbX<;64A3fFeql}+O~eY&V@Y~P1603HSF zkS)HPD?MZxaR)627Uf~)7w&(N_i*7>c+WwY(s#ywk!IEx~4NXmwr3~{tg$A`_n zPVCgBS=}$hpxKSIy1yUReRHO2`QgH<7H65}fAn84lrij&{bAiV7AT;?@zmmfHsD&p zG{oRzO0nCDDgSQVh$HVy9H0kOYck1aQiyo*r zA-{X_222?yYN?%b`9g}i;#0pbMFnXJhNsUY2E7=t%LcWUUi9+u{3ftf!E#|IWF!xT zc}tLtwL)mjO4;4zu78w~kgDgAt$Ir6c6LUn)jRE6ENMGpMivphJ~v6U z(-=GpBOy$ks$o!9!!Ey8`_$>OoV{{qP%O~%(7EJDljaCbnug0={)R1pNuwS@UU(>o z)#Q;YTExtHJR&~baxnY&|Grlr`E!;@q;Vt}v7wks=Nv7M|$~q>D*I3?* z@@#lcpN%jJZAg5G|zaZlVLotvBb1`b-F5C78{L zy_G(l%DleiK*7$Z1n1lf&~eTHeM0G2OS=P<^Et%n$blxdl3CgKt1I+dZS`|t@n{DO* zC?*%OvKUN=aV5>83x4M^Nbx)Y_7&YM5O`>un2OIEZZ5WT3zEe3SwcIq zYsS~c|Cftfy7EHhHq)B!S%VJZGe?W;UORkIpaSXP2zcfuKy zqa?0Rp40#0gb25YpsSy9V?i@ub({uj(Sr$A2B_G-0CzvLsn3IG>E)VX_$_atzPD=y zdP#74USC2(D+XPv1KU4-3>_dn`V{m_>G;{3_#6A=KvMsQuF7)1%+amuM}zrupXcdP zYvf<`7BNq09NMM5U5Y5I%7eG1LH|$iMfs6}{xa_L>^1Q|9=5Ukfw`ZlJ~z(BZ5CPc z455GJfgjc+)RQWnx?*a`?M38l1lU!c)4ErWqjanXEqJyItg)hF6q!y9j*DhU;OTzb zy{*7+u+lnrNk)@aZnuL_1^E(^)mN_0Prhi95zJVAUQ|VmQeUvm)QUJuwC4l{zb; z)O3i;&E^L0w|+Ce+e3Im-T4c%fRZe^(~(6pxSf}?GbQ`}xVNS~{O&VpO;@HZGGKhB zrEem6w%39-Z(Y4~h#!cvjPbQBnc=<^>NfvQ2C_3oTmv)%PE?gO|kznY6Hj=*9MC1Zb7 zb0}uFH!5noZf3<|YuH|z=C(0cN2XU8+NgRQaxfT|D%cKM#*1)>vlof?Sq^PXrr z8Lp5XAXe$glWIWSU)uYkSW(t&M}`yDfnf+PpP9FZrkW77tC!5dvOyQ0otZb5~17!6jM8#0?T?B}m1zP8o6SV+U)jmxK`c*oV3@({H=IRdsgG9aWHy+)M zW^afOOO9kNbf`kN(Ut`mh!vwElc|Z6tUy?2t#M5s-4Soq)jx@eYEK0;kY*=3WlR|i z`_>I$KBO;ozY+_z}^Oh-7|DR94_k7h_<;1VI7sX)0i*I;0XAqP`L@i8IcmiPi zhZKBH`-cP&;X$p#?_-0iCdweN@(ttWwW0&-FA)QRw zW{KhMKlkvY`K9t!ZNvu<$MZ;%h!2@}I_5$fEDOBB3l(=&b?G{ne5_3cp zdr2UmlKrx+_|bhu)|NlPsIp)852rfB?eDXqs@|sLlQlytIelaH0`)V)28uFkHo?3j zF@6aD(S+uZUa2!fII(k!1CWD_yg95mkJTj5ED%(K&iIDQOM34+|Ugo(ZiQEO#45%9o@0Mi|)TRTd&$7u)-rDEb?l zDaZJ>Ar#4g)%+@!ee9!o1NQnq#IsrvzBG)^C@tx^ywJ0SJM^I^@R)?_G81@QF$4Xqa& z_b3PfQZay-pL-u2H~GF+?F9?y^5avh&B4)CiP6D#-53Ox2CGgT%{S1iA=Anly$lke zJd>gMF&2;&A$0z&4<;24)_lBT_ATGRaG&@(n!0f$ZU;rzj7<40j@%X_`og{B<>h63 z0ie=~$Xd>5d+SiF2uZtcCRe2!JPgZ$$f7znRMXR;enspiLwM=e9zjkg4WphOHY*fM zL0BmT4c*h#+R!rVQ$a&S94vLEBCEDVcRmSh_PxzT>;^`@ENpzll{k<4#3LR8g}-Gq z{ywV2GYOXz-Zh`;4!x6@f##esv^{587WOJu6~TGf^I~M%ISPQ^OE|q`rMq`}G$ns0 z%0vzS_mvdK-Js?nV-s#07%Um)q+=;*tm)^t3fpY2x(#N2M7j0^N4UMb}|6f4gQ6kR#YbvNAJ#eO6^%i4vEl}#^t2B z&sp3y5n0Yhv%mA2XaCv(V>*IFmhCk5su`|XMa}vy;6KDV4T=_u%|ftYV}i$*FHh54 z(In|h13gFMCG7ln=_M}tI7w7Id0n>!t~JlSX~aw7b*({-s}j%uDLE=c%w<~Qy#K>` zjJj4NH23$i0W$3`=lNyHPhb*M>D=(|+k{kUy2SZ=3VrX3cKEkUZw$F3OCad@mr7md zlxV?FIU%OPLIS9vZ@U);X4Jt$!PCWUYEX$KLCIze7D6{?uxoSjR32j)@HPnIX~%sF z$G74nJ)Vq)$wFMHTgqeNLx|&1fiKfbqhxMlE;N{L577Ja80tP^qse`%h+d}&K#})% zrALL%GtQ`sTSf*B+5%}0XXXEYJ^1X&AUy=1SF`hWOL>5_@(FN?);(285;z<1Rv=}J z_(K`>OqcHlo+?#`kV{XnA3Cj8kbdv_rn*+htUwV@LlI&zRg>ijqD~RFP|orz#)pdqMe6O001K0wS|{-j1NMnBgrM zQk2#GR_8Z=I*kQ~8Z`Bj%OW}v{5=ouV2+Clr%2(QvP?^yDcug-edYj*#;huKrO(twEMTFe{xQ<%me4Sl;0PnA?T7UpgDD~g0_K?!opiPN zsA+ePR00tt1yr66PUTPe^rBv#L{5PYU6s$j=It|aR(EGN1ELu6PcQo z3JjIJk+Y#Cv{)zXEGzgz7qYOz<=RX2%*?9^oi{_aJmPKyc)dc%St}+U)`3mWu1y;t zo2h=kf_astNkIxb3@^6}8=NMi1|Jp~3Qk(uQC}O({}D+-6KcJ9EWz=?Pl+PSu|2){Yi0xAUcpxv#o9`w@qlYzcCAr9YXLA_1e@mU)llvs`S33gF?%zd|gtGC2<#v`bhK>8oTN}1}IWyDx zrIrx6uV^)U;zi%!?Eq;(JHH16Wt-qJ34w5VP77#4sqEhgMGIu{|Aau-+OF|%6;>Y! z4f*}o+0*Av#&7{+sMFqq%l|-_kE_qH1ybM}2oT&>d*bu6_ct&@8`jAis@IaqTX6(L zGxChA)w1w$?7?<-E@#`eabbZRV!7@jXreGlIaZe|b3=34iKYlI&j#KBsc-n zybkpeL)3qX1reHP*CiL8PN4_;-R$13Rr<^51@UG53`{$f-Bz5$KV6Kz49N^aW?sS_ z4eM9(jUz*6YFi`#ZB_lIR1+inglb9|J;ufkp%Mp<>~O!Y$++|*{>mnpLx@IhfWg7~ zO&198xjW{7|2LYY$uvbIiJ$6)Qe$6QbfSo6RC-e z!V8~c{o4+@BkW7n(q)2T&$sevFyrrHCKl|a@|xq-&VC`a@=SaF^&X+`3^y`-o}l(^ zy=02GdkS-*KJzB;^HlJG%RR%v`X@c)&bm|f-VVl;0Yh{bmAaMhsr@oYS77IJg>gJrN`jC} zoa$P4m7Jr|(#ij{SqZ*y-B*M!#`O@iI0z;{T;CkL_9)`u98G?@VfF3xGs5c`FY43> z;17lP59pYqtM83*cnkLFCz*~5{T5-AOCg`Q*IU$yaS}7jC`~EEQ>(1D(}f&s%XpJ} z(ID$@ZH+l!5fp6PrcVb$Jjj20hnRh(Z-08qHJo;TN0Qn)>WEj`MoB2AWOG{zmGxn6=} z`#r{LsDpAAPha9HHw@dK;K|g4XB8kuCqm7&w=s<+*!am5Ig}$}OIS8p!8*3Dl@3g> z1T$K20xtU?4WG^OO3Rucu&p?vY=_A4oPHm5({94P0N?7SNcso!^|ACNu-8^Mj&i2* z^>w7eo6%3vx;lmHJndZPDC_nptdN0F;*PZ;Dz*Hs+s6iy(?iu)GA1Bff~GuOL`>XF z^-kc2>D54Tml<+yTa~$M2DvdB>jzQ52g_w%jRgQwk`!PW3-$Rr{|9=kjS{p&n(49k_>mJy6<|&82tFj=@ z^TyxHBe%Qo0nD&&7yMKmL9c*fl#f?BYEMFt8`rCZxU_9T_&7~r>!JSj?{+>r?|%9L zKP_qz6E}XVf?iJolplBpUvP{J_xICI)%xRo9B0Y8{(OWeY)7!dfLaDjs1qQPAI)s% z!Wh#zna|a%1b5SuF#yG@|LNo?(dg@N{Xanoo@Iq2r`wmYu@bLIr~2mpCi7;CNpm%sg$71)=H8MIqa1485TCa#ATH{GD?nW zYXcexQT=9z??a`|S82{VoXRnfZd>nbmbD?k7|>;K({2!e_aAF^z%Q5{%7|kRM0?Zj z%H`I_S8q=o>+G_!e=lStHW}cwKKuoDBz33der?!qsiJdW@*$%BHmCP9mfXTgyJ&@` z^pn=Fq9>8cCeTyl9Qx`^#RPZ{zCT&k-3&yfyI) zVV81#n?%~HDXp9p8AF<~GuPqpf9{tLWE*A0?Jbj*CS;-mA9XhI7H*UNFqGzy2|w}2 z4-&qjlMJv{RepXQV)1s#2ANska3%EN z^Hk&u<1WTxEllsALz(n6^&(%=`XJL>2pXf5Hmx)A_LnW1q(!30yz!h~bJVA>8l=le z%UYmpeAv78-Ue+>~W3nMyIbA{hGr#g$*$*()#2Knz4%i)ahhiJ+cH$IeIGl z*)BQm>hNFHs%=i4@*LpIA{WvXLjXhZCnsO`Uf_aGJ(Ysh#r?4HT} zR$UU6XxbellJW!T&ZUZc0ZljKtcL>BJtmT#@-3&xG5(gJ80(I>>*ZeB5)XR-Efyu6 z8^V!Pst6U)T&*ou1t;`Ox}~$C@}~ z*fD4wF~F;q>wm^UPEN5(D|iGq@BJws62Z}`H(_M~uAxP>w2LG!`^uQZMpia3?9qq=c`J>ry3a5t8cI~;gU z0rG9pYMJZM)&{`*t^?18mUV$ebvf!jl_NlzxI{f=9fO=aQt1__amYYhIDGCD-99lsp8lEnrC zG>uL2r9@9p2rAF5^g|B9*3fV4W!z?@Q$8~Sn`s!@&z&SX`v;AjTxh6{ohLoccp4JJ z$!0tVr!nat63L&GH3hJU&bMMTJwzCz-iQ0|C5cD_7!P(W_l+*=8s&N4zS_WIZj0UH zfpg9y^q)H9`2WBhV)JH%)jXr^TCUfgS^;t#ln)@H)**{&vX&uWiZ#Htl;Yfz1hu@I z4~1z>2)`1~qpj#%mjQrWn~-v|1?ZW0E^RL8^(L@kPYaxGlap4;peati#AwS1)I8~b zNC(^&LNj{wS{AEtlNeeYs}-f?`L)PKiZQ@+wKg9h>Tt6MD>d=Om*i3T+H0+L%NRdp z|Ao^fVABXry{#1lN-mrVE%-mlqwENrRjkY`fJC4Z?A#%v)H_USf6SvC1BP1ya;^Eq z1*NX0*dQbKo6GH*WJC2VhFU|qOAkJ0khCwni$!;5bnYws!}rVvFo<^S))g(7x9^1f zA0K;v9)n~)7I}}Wva9X!4`1^QGg_SOnN_o<;^t_zg5t`Cmrd=p!U@=axT0#eJHUvXi2iQ`#?&;`{KKh4#)?- z0YnS?J3jf5;H}CQRsv6WQh$4SR4sY50(IT4aq+c%BzE^{4{!}Do-H0r7YoF&7;F#p zK>(~;3L2)s^rk?gr1E1UD@H_rJEmLV>0PI-9(GY{@^X69W$Tf*dATb#(-JDc@e)X1 zwrQ{(D^(EB*cIn%1KV}#>>(;bb9re%!BOmxU)0!>F@(&s4^W}Q-p`d?R9Fo!@4!y| z;OXfo1y#OaE2Oo<+ZzI{CI(am!UaVhgM#7)DhM6M3}v1UpvJzr+sYD}LCTyq{35UT z+jW{s4_F^52ei6|a$fqB>SqnCK^nN)kFoo811FMBELkTX;6%+YGoLTdPWb2-M%qZG zjz~hac*Ek~tCGpq$;dVi%3PqcjVE(z;0l1iYkTW*GAXV)lGcgxRoHMNbs>~ie!wQ$ z7ovDP4p}d{_WQumREw~WoLNYs0Pq>gs>8jxZ&io&Qs1b%yh9EDP|YoxG>kGZk~^|v z<0IRX>lq-Ov5Y*RZF}~mTw{@-`i-2s$C~3j7wnD)jAo8 z?`?LCv?tN59r_?OpyzwFD6d|Had9I;5Ig0YJ)Yxk11lo_zok1#O#T8aS@6lL6R-;{SE44RS6It9K2@ z> zyL>2h7eLg=`Y(&)C!-)=7X>C^`;lu>M^(m^#I&C))v^)AW&rw%yfHBK_gQ|d4$D@>PSmqHaaAapF_!$v$~>vB zB(3%ZKKcG%>u?wfmP zXU!GL%6OYV?mg%cwHf$1mj6MWUaOH@$o-2#h^jPb+NZ!Wi$+Um?xVBEnGgGW{3ttD z<_CoGM#k&PYXSvL`p%D^)~l;yb)G^$_Gky3RvGbSbU6?rkN6MM&m^$+o>>Qfc#yLg z${CVlRwxC_J&pVM+07|U(}tUSg;XxniR>IRe5{%rZ)Q1V!7n3ZIZlZE(6c{gCRtQ) zj5I+k4M}p1Ik`cpL5Zcs4Bxv`cHdXNe~307k1ma^gA)U5cAVTFEk*DgAE+{WVl~BsxFScBC=(~Fmy)%BcqmmFxQCDUSN!RvF5z^EY3a+K0x_4t@kh5=dQrP6NlaIx-NWM zj2w!?GJRwT4MR%`e{lK;-PD~elr`**3Kq(#5O3_@)&i$gS|Q(IGA3Rj$^^BmSzO_>P|un?QxZVdwKbneJVWWTu{6th@oE z+&sVg!&QucZiGZaQENvpxD1;~NL%m!Y7g^)n+<9hf`Z-=~x{IKU5LJzUmjn+D>IAsxI zDl`?&hI0+EWI6%=Z>=(gMcC2O=M-zZurcZ4gZF=r)bBU~ zog~Gx-ej7aZS*t?+R&%lZYvlVA?YIwOfT4G^@u@P6z?F!ky$#J^O=8Uu#Fs;#2AYPH3ACayYLJzV?VFo1F@zBunsB zf73)wgWlme>n9aIJv6!);KbSlNjz2XOIH> zI?pADiLwfq#Mn&OWO7hjjcFDr+Znt`eA$e9%TZT&Weik?-XmAg_(X1z;KuJ27x8j( zILLf!d_i%x&9x_7T40IXDuVSbTy)i1IsMrL*w~sIe+$YX&LVAM4ICMet14duq4297 zx$pEBoTm0A^E&Wv7hK`!{dXb(Ah1ZV`n)TLjfYyaHAyyw3Rpl89Q zX*L1CNT1g__)9e={(f^Nx}v_wj+Q8I#@{iItLhg+k=ABGNZu+AAC&y+aqUebP5Gox zU;M{}O6k&Tf3yy8W1M;MS}Tmo%>f~;su3GoN>IuVD%n6?lO$t^D}_i}^CT*kg0RcLqz z>pk0=jPcw=ItZ;Bd--`cN;5FYt(QAD90xf$YvZXI)N~1xH#J*FE{D%B|cjR^GTJP598$n@{ z6HqJ35=DET3q0oZ3mYc9n!AAh=gw62{h7M2Evsa_RkD|Iay%jM9=7u$1PIPaix$N9 zQDcf|VWnFeSTv5Ke+VwXC&Khl*Dy3cyEZ*iNC#SK^5Jjhc+HycBrybc52bqLdea=ZxL&)T0?YPdQW*&Bw*$rB-Nq(rsNbP#z(+w$0gRU8iq{7oS0s_GiylM)v9xh@S4ZU zDUZt=w##800AjY=`BD$%DvMQ(>t5>O<-HZ$1bj~LxnjhBGILJ;RI(>S@GYC|;XuGV z?`|d7dPs6tSz&9x#aompCH=mV2_s(+8k5WMlaiQALWJqMKr&{ku`VOgx+ zkp6ykc((a@56lG)aOf{*6QbA+AG%G-&m)RBvi^N)4*1%zqkZe7)I5yd$)^Q>@7Wfz5r;nyxp!g;0V#MkhC|-$94ObN*;KTNMO5uSd3=Hv^P6ZQGj=)~QbBTJ-f=a$(8l>Oc&H4SnlxV$Aq$;!_HoOAW<6zK$Dh^%O+-?z-~Sk$A>P za{|*M{~s4xrqf+Zr75D2O6%iRTDMomZ{vW(0slko+qKphDDoVkLzw(QL$^0kv9^U) z-R@OpNUZ9VBb;-VjOUnW!&EOkQh$5l7TDm*2OlOYIwVO^AS!71pA4t;IhDnO2PoN#@*Zg$AA{ z0L#}Mqn>u#{&L9~Bmeq|cCSs_+UIQ%4=@CCH#Ven_FTA<&l|Px0K|hYsL7Y+$ybN8 z$Wx~8t+{yw=ArfQ9_q_ojw02{=ymNNA~8kC+hTrBDE0_@rr>XEzr{ZNMheNY1?`AW zn%yo?);c`#l=88Lc;+Qn_`JObTW`ite8GnS5f#$fCL$Q{W;Xu0UfgkuU@eTDc^ocZ6$b&-(bQ??GR-jLN5L-5DiNNwSg2+MNpk1HoXfbDTxHMV_Z7Q) zMlxWHaoU|$?7sk?2ZAQ(9j~}i*!g$!GtvjF;5_ztIPAv@Yntt%g!nHVHn!xD zMG(n!|0}lCPE~7$UacmAhAjRDa^(0EusUi*@fkS*n;y;omQj}@8glZ*v5l0+MS34j z`ivz|X-PsRO$#5NBwm|UmeKn(wJO3diUzp|YqvyySlFDzpdiu}LWWKXGBHVa+Uh;z z%?SN~$e;h^H0)Ss>4Z(8C_}NvAu9C-6{YlFXxh}^3XPq4_h^W8(fgOPL3imHrz5dy z$pU#rNZZ`cBH7vk^UTT}xZ*=DCRR0WuQBPxa)qEPRhkvzY2r8ZMi$;r9&A;~x6EAy zBda7sT`kKEBm-Dm@}{4YuI7j>cwxyt2-qqKa(&o_sXq4d^u_ zicGhO>aM)*Bz{y4Qr%i>qX9hsw=5i9Ayivr63H-kL=ms#!+_D6=NzZ@2xoYMV7M?4 zpt2cPIpJ%bu-DSK{ySI`9?6=%V^BVSa3cF(=0$W8%4r*jU1-B_TPzg@>qT^L(c3rp zr4x4wuM9Bb9U~j*7pT2NVXuy|?#A`99Nv}07Rj&f1{i$G=o$xk#xWc5o=e1oD_abEn}{nu3nw zMNoW|mQD&qj{Os43;(_8$anTk*6Y>$)9B0`M*-LyxlZN3t@19jhJhq2lAXUm@&z2d zfLK}t0~^F8kCI6u5(BeypxnJ5C_bQ=tmp&n!?W)EB4L3?)65A2qsAzAG=J$oZ2Cc# zz{@F*E5jbt84aT(G1rKceuG3z)!}L-7Zi*yv1-3btc>p94GLlVdHyzl|Joq^TQ;T= z(J*dFSt8581|JG&l|y;bifxvAhs-Ne7fgry3Ax#1ESS2t|OQF&XU%( zC=C5|H?|mu6B!w8mK#IuHmo6`<)N)x+UhuLS@ksF1*y@LFN)T+fcf0Uj3dolhpfW2 zW|-&uZ6&C5ArCOlYeK%|I{Wx@O6|j&38gdI<>(`rd!k$zWL?zIyONZc14_va_P-vE zkWg^ueyV;-;jImduuAodnt$LrFK#EpenVH_5qt-HUj*D7XkFy05gYP@Zm2{wI2I6q zQRM2|n#-t89^MpYtL`scXKdKak3fDwF63~c3&s~lwP@ojM;$ySyjCQ+bOCV|el7LX zJ>wr&XY@Ee0&XV3?*8g{aAs@`i*hKU@TS_fWnFg2Httv3lBn}eO1vsvLARL)HYs9q z8Am^(5e)+ycQ9rIVh8VKPtbqrJ3>}Ht6D+($OM3BD5K-(&V4pg z`~AJxb~XEVXwt@xT|woptmimpf>EoazPWZ;hjvvH&Kd2yHWZTl(=IwdcpaZ9BN4<~ zz$o;vSB!wg^W@(Zi`6TUORe!csi0B_%1zx=xdRGV8*0&Cb}OZrO?E5m>p3ifjlF^9 z-)@`Cg@j#5C5SFo2A6D4Gqp|)i-YqKk0-z^$O`7YhaX(3RtGya(|7z!<)9J4Ck*zb z4Jbwyi<46d9j~B3Ko!Wl`3pW7famA8X#I0RFNYh_L-T}KC5&8%RE?c&!2aOOrlw+a zmG3jiWfnm9amlbXNU-ub1oZEV{%Bzx*E;Y#t1@v4FjlDglt&Qs>E86}Z2w<;8N$`E z?MaS{(W;Tam`d68r9FLpib?zQ2smSH84$c%VKz*qB8yk*eH-m_XVWDOtG8hyOr69c zR#>x_zBH-T-&}>|?5#xF!dHquT?`dKRI~~mHGd-Mz7xYLDe3EHZUmtGAoP&6JU?`P znQ03b{w0+8!;%>z)I{~`#Tijra+mdb>F%^p7N&rJKG>(_4Y9*T4Z|sp5f6=Vf>^3V z*BpnR9Ig1){*u%J>rT5?v=UN5dwifVp}4H>>EQ!z1-~Dhk|7j zi!)Q%kKQ123(OxiX^kRcv)dJYlmLq%vs4YpdtKwn(iroXrY$NuPuYolC)}QRI5YR9 zP;}Kh`XsrzhWqF!ddfLUtyHV|WWrh0)|Q~$l2I>ALH;mw0G3Kq!k2r_vIPXPD0;0) z70Uolk&y^&d z14L(ikEr))GOH_h+?)rfDWR?4TbM#2rXJXI8Utf|6ot58YU z14?$oDe*$GbT*Xs1WlZK@ag;18Yo8?&nB(>412B$e~Gn1pHskf*LbT?Gnc)?#f@Iz zw?wC_<+NueudKq3J?m6*e-*9{_=k^PFRCMQc=~Xfo#lpI&n1(eSUc1E%Bdv@mhCsk zqaM#V*Px3gdLyd7<`ZAvG-{F3rtickD9YnFd{wh@X)1dh-#c8VmhO%wPoQHMdZ;W$ z{bfu%+Qt4dk7oTBfPfUY@)aJ(=9tw20<$bVC(sYCc&}1}#E!JB6Zi-OMbPwb0>_<8 z2D-u^T~v^ZrwGuWSbz*rg@7KtwN+6&*2F=&TFc@LEvf?X9oDXrwk?4y{7U!@<5ij- zoGq1>TV^!O!xT3E)2)gPJ*2TW0m0dR98-T@;wAm9gGDr%&b?!oQ)@hw816@#cb_-@ zncNKfWg^IETMwyakhPdZGa|TSox)*8CvMQ8P6<;=F1Bj*9@kKU|4yF#ZMNv7%<7(> zRwV>%K`#UgU)Q*9G(j9$rs;gJJn2I^L0?=8I8m7Xwp>-8Gmn{@Ip;rmz`FRtkY8N= zZmB&NpKgPXJP!=6Cj~-=0V^i4|1wi;50r!tzx+z>v~k)xN5px||6whCjkh{XHK9GA zPp{c>W{AGYFGm3~u_drl18{K2^ch(b=f%=^Cs^F}pUx#f{8em8bOnKndaMCM09gJt z8O5Nf*EOGTJsdvsecz96r4BS<`~yvsU%P79mvtxM{7HIkI(g{Wb3LrS#t!w&)@#UW zOh89PV3EvFc5w;%G}HyGNJ$Ouye4CNMWDz4$y6L%mwS;xG>40?B5?UUp1hRlfwfIK>%5x)te(v&wMxNQJAZ{ zl^r0nF0ig)4BW)hJ+z;W{eZfAsy!+z{$M#`x^E)ccDZrhcK48Z3f!(XQ=w1J9h`Z5 zH9K*;uxXHBse0YCCgK9Yt9Y9!Ku;&q;$XBX5fShV(}2|D?l0x*nvgtE+-34q8M8Xq z3l~Tsc9>`GtS>1W5rL&GKRKP{9HRl!Ihtuqo9p2-Y3qnz)lCM~@-cenkF9j2ON1&X zAqSZs7|lV7lZW3V&8ydEVwyD+hA*-GJ9LW^P1+P-ZH&JPiTj98dizZzc|o zM5n5di8$m(Y3>Hj_4x*DD%oh^t*y+qoMCWWc2`pXJwU?0s<<^`#(oRZ!_~MhzEsBN zP;j|el2+ROSi4vrq5KQQK1YL~)!9P9Eh%_h|5D`3ihG>yEI5ZzcH)+@h=y&u?fwxe z3n?T`<={f`08m3`%(1L`!8ONFk?{F!$gvOO=?jpkiB+BcW?I#HX3TDYqGzpkyzNQi zUvN)qalgDStkOxVYW=ohN;bdH<#QDDv0@S)ZHaTpcdKo`WslGV6|-P>Gn=ZA!=KnaG!3 zkS_AKe2deCZJz5~&J2YHlWE%uHqg;~w6zb*n=fL!wu1`z2ngtbC&@XHxgd~y&(7~? zdkuzJ<7;BNn?LN+JeVh(ud_-rBvB266Q*GAxJ3a#3kTV~DcDY0@EWlsrGGy-*yT}1 z)VZCMJFYn+yt)w<`9kEs)M){$@u5j1VN!w`E#xX z-`#4kVLU-{j+CFL90%YnZ2QGV#Cfo3YdSIA3+fcnm zx^&CFluvBI@z}j5AhPMV$9DYZSY{^0#9TO-PuI)u)p~7AQHTolZ*lL0=2{m04miRV z%OFgOc>o^;kyR6iAzsa~y5I8FgZKCR5{dqMUtl97fu*HIUo@X1p0j~vBs+9uEitS- z$?K?%l2l$XluqGO*N_#^`qFwxQitzV6goMCt;B*;Lf?9m*Ezd0k!LfmEhhMif{~hH!aBEnohyi z7x~;Hswovf=|kn4@?Vy<58$>tUm8CDX1xT;#m7qPk;*_(Koq4HyDtwg|C^Jw($j|F z{zL$FhJLv~53G`r1}uPEq-jWXPa2@>O%a5FtPDYVK z-pUGQ@u@gLFnwg2hxt5o@~1g=wGSRoWQ1oU)MCjqlg_*xLgu1lW1{`SQDdc*%aiD) zoJ;TPRU5!CnN8Y#g|ggsB6gs`kHX?SJo0BNgZfqQiz-m`DcOzqx-C~%sgYvHt$%EC zL&@kZZ@xH@${<8ONnr3Te zSc<1*;OoX`$4z3(K{Zm=J6g0rzlBV?+?D_QLKq!;vqI24lSf*8IRm(_i_qg8dAs~o z>6;rGEBJi|{!EzgTlKBn&Z#DiW299;EqxmEL}P;QZagvUxL5h8>7s}Qu8s;HADcPL zK~6ejtnI)UMLVonE^v&`OuA?*O~_Wh_B^Hw%4AKKM%xrNY% zTrO?-V-M*ZL#)5wImOFUd=R-v4!kG`lF1}Htid(Bm#A(a@{S%^fci4!ePr$Rxg)T2 zemm`f%hJ8KvTpjy%b3tjNS;Vycb$YQD|2UHxQEUuvZ%?H=$e@$l{Xjd|$cL3aR(d3i9Dhy?!k zx(|d`Q6?t98B2@S`8+u)GUNP53%L(?SkvnF)8ooCBkIn zONy&zsoa;J063w!)Jo}?nx!qi22>i3ofK!$Ga``!rfB@o0uGWwUif?)UQHgW7@*#h z0KHXz(?ttD@T2hNO%syJHHR-~!53(0cSOtM?Vcvyx-bszw^JjxN>x;a|Fqj!(3vB8 zL}ADI2Nv|vw&13YCmVbfcsys@4|rXiMjXjm^RzR<174;Qs0e_tTwi7AjQj z;zRCEx#8~!30x4G0P9ZM;}K^-^CG|Dv-ChVDibd`4(M{=3g&D!jceghnb2xK(REy; zb-igSBKB7cE+`|I!*`YeoSEM`$GRI&J!r4@M`EX=|J~99^7hIq{4p#YrLS2VLww|Y z68b?wPdxBHFi{UKe=nx$HHL2l`)7L7@!bf0SsR{F`&oZad&+QTj@BrKGdgC3?&U0i zp+da?RsKj4x@VZU$Sfx%vTS=rw43Xyg$n6wX4Pm(Jk7X7LmOz#S|4)D)G@rS)=Prm ze^{f}ov;LojEoWf$mc`o{mN!uCTFpGaqAOdV8O8HDw|Gs-C}-{LG}-1PQbD>JaZqp zTedaDfl#JYigY(w%bl zO$#_Qg4z#!tR^~W$-Ys56{#=?Uud&a{rzI0y%BtH3g8)ii8zMYangL;Q2(hk8TE%( zTAmG{7dk&?=;#y|nfdwiOpLZ64TPnV2U%QH0y)^x>q-UjsoWT9+IEL5RHe9Rr>7f5mU)-)Js4dSnMlGnW;@@sKksS!_O#y$Xl zKm>L_Mnn|nvaoU!lkkZrfqQFMh%N+g)t%&PmsoXRqdO9hUy2*jXb$e_-xqX$A)g_x za8UzT&?I3w2ar7_k@o>!N1=LXyqARCviga7`|kK7U#*vx;Fl$KsyRA~4o~Ks(Q!cy zX8RivK&aT5cOKCBgVwfrm0xc>DQ-*DF-OtwL5FhanUtVeX`08`>#N&N25SM1P7inC zPn&z`jw^bmEUN5yBFW(P2CXW>h5x)Nmp*DaC{ta@vX00#%fNY64_Tss4{n%v z-Kxo+OluIZ<<;moR(js-;uEs;XeOJf!Qjpa z7%uAm+;{t;DFF(tU`P80L?2%_6%xtz6Uy?Rs zO*@F#)^Y?8aj=dE>BOo+$c><2cIE`@NXL;;UID*zzN@MIa4hoh_Zc=f zB(h(ICjKC8YK7(o$SInkbn!e=%LN`F9(kxyO!sGTf{7W$raz#-&2A19Vwp6GlCz($)Hc z9cV5v{9>M`pn5AQ2xqn4^i&Ii)ZAi zurIX+k@eBgA?gp5=(pq6LN|#&<^9R1P1yu|L#%hX-}=f1YxWouJGu9rs6IP?pglvp zm_(uziMkX~w1n`G#s%ZP*;{t38IZ@n4p%3N>V0G}PS$L?VdM*pCvd3H6nzi)=P_la z(fWA;4eSeDqO`k!C;~F5d|X+c5u6TXJE@rUXR7CbKJ^p?>u`Zpl-lB`k8djbVD$tP zAf+on+;AGViYnI;N=YrTomNA&v za`c7gj8-LxY9f*8$KPVCPV)@ulk|SCZFL?-;jj)ec{r%MC7uNvj4fc%1&xb_flM!$j4{%*yfGYbpc- z#s71eYnPqpq`Cr1GB#TaQJz&;DqN;lLvs_ z9jmxr*SOGuU|Y7JIIfp$qkcFv@V3PhebjlCx8HARh~8goQUvNMQ+@(dx_#rfSYwIr z&GP6S(n1O2>luE!@l$lzD{TQhI=$BA;ZHYdC0JO(-kW_2l(UxfHXmkhau(0^|DG0! zlNIQ=V=ZVgFMRc6r~1Xy>qII6Ajw|G8-h$$9=;BfM`NwVLo2^>lQ=b-XndR6gwi{E z+4(=D*{>-X8(M+%g>x*Y_^rKmvkFzu>+&Qv^sb~z1N78Srv5NYJ&>=FEx223{Co8u zD}vMWiu1~+V3!jQl8+8#`-$FqZmgFPu@^=)k9~aP`nQ4aefF2oIbhLQj)l&NM!gC; z)qmdiF;_UWnm3zxyZLOVyzE(Uu8usF2@1U1cxJ@>D?=aD^F*rzXE17|-H*jz35)kM3B9sJ;YQpGM%_mtzh zJp?p*WX+S#%Cthr)?ij~7|2!J{6nzJ6;t9Sa+vkIC)m_Upa;VWlq3NxPIcJeKZ(#Z z#2Pvh#OBdMcOXd6w5_bVpWYv}MXGMY@Q`PbQ%|h%WSK+pRmco*xTzO|j=3GDaE8gM zpH(AHBGr>;mX3--yK146)JNC<$Q7q>*K2~vWA~2GMTMQolKlkL`P-kCeoTde4~m5p zxw~NCFM|H^z6#CU9w7XkuCALq8%GLZ`ExaTHJr_ji+8djMPee9|At`)_-;uG;dbYB z#&B(11ep*8d`!$Koq0i`yICPRDa=(KMRmM?u0|`0Qx)yE;vILnWCrK`rT-l(=DjNX z)ZHt%QA>&&v7&KH<8Q6A@57dB%n38i!HST=(d6Q{1?B|?J#rZL*>U0cP^679a-gM^ zN9O_gaSec7$^zhODhH@WyDBL_5g>bkmMnGtx94F^7+Il1;~Bse?NV2S7&!sK{hh^T z?hlE{DWsJEGJE}6fKgYAWO68odcd2U{jV^g6EhGoC^p9oB4_bFlSW+uVh?(w$5RZm zJJiHV0;&Ia_6FG>3Q#*p9{4?Dq1$WQ1DfLxar?DOns0B=O!nInLS-_E z!>)A54HL+l!{PV>K)X7DZ4V80*$b30R1BDyC=%t z$f-W*gt-&cvRJ)$$0so6{|L&&fyIHw!3E!rMl9mIqZj z=n!@;8=&9Gp1~m;w7felEA855c|u80^Q9;GDvPfbY3_pCdCBhzVO$U0QFrWju45PM zgDi*ZsXQkW?Si_gQtupC33QWSF8Ec)>Fr0~0;iW5B2wg+g1_{Y7z;$zH+blwPc>67%S+Y{j@DF znq3JaX!^ElH$Kfexq?@I|%TFQy1Ai44(23nh*-F_m^0b}< z2psy}TnhefQl);JTW9+ZbIS`y0r3vzF-PKPjj7rzjBBhQK7YH!5fD2%x8qn7rP8dc zN?y_CA&?T+2#O}M=kr@AjtBfE<5jxKJ`|slcYn4)eJLXC-|V1rUme_$`j)!Frhle} zainNthNSDQF0idTaQZvWQMJ=x11-;DRo|aq|qto2?c4wn8M7aEIdS6 z1_Ckf45c#j|5yP8YP?dJTDv^%YC6#2zq||V-n>D7Nv2U2?`8N51%)h39w3Wl5BySf zxcX9@?|@(lZd6f~az^Bsm;}h|qw|yL)sJL|JbSm;!OCXS7bo?sV%ZgByRe4|FU3Zc zk@q_r_D~zg33V=y@N}5!bA##HI69r&RIONM=;Qd-0oF*>z>bJF41ZyeN`vU(MXdTW zU9j}&*9!>B@Ss1cKWP_}gI;xXf$CbJ_~3l(RItCv7#3PcHLNFOh}(S^2Q4323A*NK zo{+<78E`&Jf?}50T&o7UbF~lGKXQ+oi^e3mvIIO1Db}WeTnkc6kdI~8RLD|vn-4L* zxtqJ^LOq{KK>u3)hP?otI1Sgzd0$NgJ>ES|`Qg+c@O*wtTFINA`3qqqZ~*Kdi69Ai zSC2kF{%u1YR#JJ>vyY{jN8g3v_JWeD(r^9vniR;PT8wnit^yKFS_Z=hMvS)32YA98(p0l_W}xqx`V^ZB zsDcYvZt0y`t3PT-xOG3vo7V%YyoBhfbhH?)!bg&|CzA5fDn~tN{v`M6P!$-MgVR)_ zjY}>ScyF)4#I|mmRoGk}%{ENkirhN5kb*RbDIk#yru*N?|%Gk`d3ZAK>+! z!yc}5;XOE<>bzwX%6&3qSrni6h}tI7IU5(noI?%PqbZF6NC=t-1)>`dSg^0H6f*F< zfZ-mVv+SYzXu0_6toqG&5ZbJ*p?4vn-8LVYc(}J8yz^z^a%p@&GG7L&h0)vkCn_x_ia}@9 zP{sjYfO6_b6d%{CQynHld$Q zVBA>*WCRI$fK8e8W|f=wk3QCM)Te4LAc-O_R0yOq_rsN7W?AT(?RgF?VS@SW8%mvu z(^GS4$j2~DNDb0Fsc?M1?i`WP=*ZIw5K;1)v6Pb9ZMW#`*eqwiLpb@eZiY8BKIWMB zZQ!$;5?j1+Xdz!vj}s>A8*MbC)Gujl#RtBruFU7vE(GfGabSXfQQaLFJ8^JjnD{a5 zz1ABx??yp3P*$&tfeJXtr!e?b`Ez$jkvVDT^kMu^BZEA)SF&EIafG51mNa4Dq8%9g$CpgI%(p+4Xk5U)2MDRc* zy8y9-`ZgtbBGPUTGufehjPgqPV=huZ`p!G+IlJr^^lq+(KFNcCFYxz@>(rA=gl0H! z;TQhG6{3aACR}QDndmqg$i$kL{GoB$dZ99x&8f!NmCuK}HuRdf5FJ*kI@EVTSDX$v+y zv{W?NrRkj*X5e7Of|Q2m@S&1Ct6v6-YxJEp7JYL>1X#|bb5zhnw#sR#pjSpUUQC%y zL-5rYZh8mQ1C#DDVrO}{r3(VRKEh(d0C^DM&5s(>O&QGfEwvXOXs1^UdbN9JI;5e+ zd%m$TjhtU8-CBpnCMurhTUdr!!1p%pl7+QQ(RXSl(SILSxNJmOm-NSPRIwG*DmknH2AH}KU&oN7Ua+Fz2aK{67kB|7XANyd72iU4WR z-4;o#PQHUj?HOTaxw`Tuhj{m1Gz_*GB{OH^@L@T9yUKr6ji|*%uDj)qm}Zeid^~?z z_*aQ`4&1oY!vFhpX5~R~i{}LT5pOzI5Ap~|@9bm`*k2cYm-@B~eDpOL=2XMbL0w^Bl~}vW%%iz7rV^skVl? zn$MJE-oBH}l;n2{kJD(S?%q<=3SnaqAnjys2D(2>xi~~+9p6NV_%)c*s8gi`#P}GF zLoe)f5lfGqtS8b`MZu@$WYz8I7VUeJT5d~4dNM2+fxXZ|ed<_4`5NZdW~ct^M7=6) z3hwy+9(+#_$Sm>cPW#OZR-$0KC64~N_l#rJuut?nh#oUBjC1nXY8sa#Kq8}dUkE`N z9~($}1}9lg&P;AQU|uk_Ph-6k1X>6v^k(cF)C=k2l9XyIo*xA=SCm*Cu04V-$IlQ3 zQMyfE35Q&XE-i6UwpWy#8@!)6zzC)5ojsF`t=0(1TRavxZ9?fbK{kNCj(aOolL5>%7m;c4LtNffSp z)qHOxDOEDj-{7mK zaVA^PqPDK=t0N$!<@K*WE}*RoWTFI>6zj_zarc#hNJTL~+AiM@Ww=pe0&sH;m$#pd zH(_TCoKUhJ`+c>*`;zKhiklGVcD-;lXGi^R#P_)^Na`pN!RucL$Nc%$GNd$!D65UL z2`IGc%w?&z2fu2FmgFao`o>l+n%&On(8)=5zxrwZbqFY}`{89pr$DH&6=BCtD{>4y zf`qaPiz0tU_P{B{FB%s49JvP0aIyGH{@;}5Q`AjZ@ad^)Cqof}MtIcP{cecbYow_a z_m6~dyO|*r87Ul`o)eKCH%3Nl@aY7CaeI9;-bdO~ecU)7M?Sw6ypW1ceyU>zvT5u2 zf#tKK!Bx}~EUrvUXV)gub~;-#7lU0yU^I+ZVTrRq6jU05RquJum_QqqB604wyHcOO z>(~gGkFF^f%S7UXb%zwdY{*v{Tp2Z=MD!*h{E1Xv*HrTNni;1C~?6X+n5 z*utu8Cm6gvO-1LOKXhl>9P^p;0QDUTG+?_{K!lIUboVrEh9;n-@@v!W;#4I`IXslh zn_v(mslGAi{$zz#$U1X zs~+=l16Xc#7w^C1M&a8j#EVH+wf)>i>{zM3QNN1xpFqJB2aRzwo24<8)o{8>iOwZL zz!;nHIooNj)qV&pq~%RP`N}BpHCnJgnB&TtfxHSkby1B`S1d8{2-vPwG_3PAh8cJO z-Ov#3xS0Ay6#+pWy40Bkemi(Z+9hZP)uVaF8O@Kl#C{eQsev1(4XK_Xjl(A3e&YtM z88c7a<@~|HJiBq6R=glhRhFCk%$KljBovl-mjp$N4?nFRT)Q-%59kKC__gMgeJFv{ zloofwhK(B%!|6-K)-F<8SJ1>C==whS>cT7*WcC@63|?*>X-QFs$$Pq}ox{FHv~s0= z19-C^Se$1sGIpdSgx~V)behc0@hY^6KQ=E$R0XS7ve2Oo-}#U+EEDePe?u4eu+|RX zjAmLGd&QRepMT-l3kd<-soo5-)Rfp}cAP zKUJaPwQjRD<`4x6zgYe>SDG}Y=!a$f1(7o$bo2K*cg!_{Rdm1cgzEUd&6$|1P^quI zff+Ukd4d97I$CP}I9P#L;_-|!GZu9;N7g^FlJ{N#If+djeDefwv=vz|;h4VNtEZa| za3j-3@r8FR@5TZ2e7jJYP$CB!Kf@O?Y_t?jnY4JY&lR+|j(US_oJ8L}DJLwsx&AFR zznDsr=qgwe)6Q9xgV~(`P>YRCr*A6tI^u@4TR!nvpkA@|IjIC1e(Xk~@tkU2Qb(*? ze8ycZo$l#msa^5pcVZMlP^chST6}hgZS6b`4rbQo9=WbIMnjva@o`aJI*~Lr*-p&i z-u353?oK2lJ4M97;lS={9wYJy`saoBJLPj1Kb$fXjOLr-M>F`>R`*U5p%~3)=OG60LS0UNN>i*GJt3sT@ZXD#dzd%&!Mh%AnaKj-ynPy(YqDy(gK~;ddvZw z->@mWit?+V{m)*SNS}Mgn^5NsH{V>GeTHqD-XrTA*g$Vm7`N7V`G5{~wPLIT&QzI8 zX)WK3AIZm}yP$inaM3%)7${@cZS9e2g1V2gdE0mVrQcc^rR%p96a)hX5z1Ca#>#2K z^3202i_Ecrr^M8hV~IE+qm@yde;rH{0|uDk-Ktj$8WutfbZ*f(#SYI#hFZpnFbS$( z*57=Qzwvs%(f6yHaS>ev6fc--kdyZwWfdEfQ7l@Z2U_mM+$=rjmM26UqVM;rbPxs$ zN4b2n`-{(v+Vzk&9FLqO<2M`l%#Fc=^8m35(>=+z$jPV@L5B26^WrFGO^ez)V2ch6BW%LXS~k3Twxf^=1@LUMmh{FDcpkZ|=F6sfoX+5fZeaeD_y} z-e1-0V~yrgynCSE)H}cqNV_P@mKd+Dz2|hNA$-q{DK7g;yx6Og)3A72F^xS3IyiZ1 zDaJ!bBS?QKCaqO1??mFtjJ(2?n&Wbr zfMg+>5~6H;lhMjFtdDNBE0j6?^D0#C3VQj9u_B-A(a|Q>YbFB9lBh{!DWBdNc(?QU zg8KJ(;R$5*o9NVt@^0(;a>~N+O4zy5v zfR(?8jYeI*nLbYQRG~oc@!`vvf9!Mo6-mG>&%!wG6&YIhJ`)S=k}^XAwnrpg?!$f~ zzKT;3&vpqQjTLF409K>^4lTh-ZU> zDbHr)(dAXTT2yJgA6q;dT$*#72+~>;G6#E{-DqXXYY=Kynt*rIMUPO4thQ&4uu&8; zB`m>-*nx-Remk%WkPI}6z7Q!M?G#Mv+gnGqdN%O%?}-nT*nLuVtGvzn(!j$Dt^ACt zursex6jK77V#x;7J)c^`)qhYwaY(V@n-aux4h&Afoj7$Ktr_1zvMcU?hV=kR1F(SN zyq|5|MBapAIZCh3-8S(~V0*^kgu-{AQQqX!P?@xBnq)XvU2z7OG(&qaph+{NT^4sS zgm$gDrsHAEDKk9nE-j7LPf!3cTz96s7&+LOdLX6&#D9}9KSxc_08HZ zJ;I#BKDAIO?hBrnF9$lr_hE$)2?1j^JjZVs7*~Swq{iM*>cv2m=G9p!9;2Fhp%yDQ z(_;Il>QrV(Q1AnTsHF)``-izX=2_4X-B}-&MKZoCQ{$vdas}H{25mWokv90w1N8nw z*I{FZPAG+3#B^+@(V%8?^Tp;BL7Fr4baS2?o}L`KT%rRt&`wEOvWK8l-0+2|nm@}N z1!nD$!z*ACWqw%ZY*NxY&pAMWH@*R2gFWcF)IJ^~V;t8Myy-&g-=32-x#ULQ@u2W= z{^_ka6JgbkeNiK266U#I-N{2UcG~P(W=e7lkv+jsUI!c~ z^eR-SIpBctvnbzKnLBhmrfiyNr*WPj9UP;vxwyohe4}%YL7HGLK6{SOo&EAJ)dZH- zoZIO0NKZvECPfo1U!e``5eSjm!wfM(%bPz*yhFQK^SXskR1<`rRL)&xOS4~)_SMFn zBZdwx1v9~!nJ)pUP!sdHI@wl8v0kJ)k_vuz7jsC%z!JjK#i~CBTCp+V96t2-E#9->!8DBD!kv+^TllDot?Ra8bEi`ZbKfo@`>3xY4NNkZKjDO| zzu)1@dBAjo!N}HIO>#NOgHG?SR)&tR<&o)xYrxoCz}BH?^3Ihx|3TJM<4Fn0mzZgZTm)MKN8z|32|LkaxR znLBY2@PC8(_jw(~#Lk=oAd-UHLj;(Acu%)BkVE>M0*9qXVOQLOKq7H{W#RT#fnpz~eq)ktXh&Nb0j-bZd+$ zSk0*48gO(>uI1;R7=#1r%z_xtytb(<9*wWMKlycS4?AU3)HnrNb-KYSi|c)PNQCC7 zjDfgJ=4=w{-xNC1Q--`CD=SVzpbZ}Mb_^4vX5J+iTT)Bx4hkO@X!v4|;jAp4b&0%T z?S3yBVBb``c(0m<=mpdRKoDZJ*gz4?VVkKyYd-8|$`c@$;m7XZU3G{=OdG}Ou|s-= zXDOe5b67JPgB25aO~F55YV5mKO0Camu#P8R9mwD+ z>pv>whXv2JCP5ye*+7mb{i9bI?YxQ1%xA>O9kn7p?dd}WiG>ru{es^VpzZ3F8WDpn zbzf9z?1uWg2^6Y}s7G$0b8!;{=-^>CFJYt%gNH4H6* zF75PZETQTSWzBV?4vHn6D#JCxhjpG84R?lWDMOfDqQ%>Fk>+wRJgmBbn5Y+wnlxq# z4PDbD^p05Hqw33Hl6oXZc`Uy{d2s%)_2bZA&Or{sJrWQweNTvb`opFQYe9y%e-T8& z1DYGhvk|G&(tH`eXaeygq~P%`^Fr|03lT9KNd|`1k4CYqM&h$-?^9}thkOXm4ebX~ z``xMQhU1*z$UzW*|6zT zSSmsTF`y`B>0B6_m+%qYaRCi0z~n75XM!+|9BW55(N&FjdIGvKxTT4bLOP>FIsc;` zAyWq2EjB^fmt+*{OX!7%NEXWCesf0M= z&3kVg4N5)(VRo<>+ip;RA)w|tJ!cjh=^dkJBheXh;_pQ!LU&L+ z{ZWvi%fD^~)rWE{iaX$>2r6|*MJfcXkC5SSN` zblpOXVRc~lf}Ba-K&3$10j6f1<2zU_(qwR^8a`&jYL+RPw@k0x1MO%#wz!-Ql+`YP zK&-B6&q+a#wHnQfq4I0>LI@ITDy2xwysD$<>?I_9-MJ-zoAXg3Z69mU$!yuD8 zsAlhNqs(#Do|AK?Fj52{8$L57@zsmtLySGAtH__l6SsNvuToRi$Q?+ERI&6c`9Ci= zDaJcRo?(#wEHgoA-W+uiC$pny!tb0$6QeBy^lFX6uH(6OFu=;~8N-Z+X82p z3$9PCGv4{<|9`REB-P;>)rk{vcF)h|OCcAn_cN25FH29TN)euvsF)qORYQH0vgjG| zkX2T4jd^z;s_h=i3sre&%t2YA-ID2*D@bSbSgC}y1C4iO!Qp>qvqG`5N$v(Am~=SP z4}JW~A?k!X7U)4r*Ad+jLnyXJnZlO)d!6D7BMX#Uxi{ITUNS@o>;WeqrxdrvSdrwk8QMc-FyD6O;Hv=z(WD z!hxK9m;tCbA`pbUimtF7lcI7bmiQ=fiSgHbFU(X!Dw2#O`o;QY7rpY5sT}Z{1 z^cCxofR#|iKqL2u|L5n-#=qqU%|_VV)@=)B$A2udY`~H5&I4s^K$s7t_Lb3abA6Sy zfPSXUbuz@fpU+%L-`7@+BxpJ2r7Tey;p3v7IC%MU!8~*brdslA^T{(}am@5V-m#4c zl++fy*3mT8y4_&LbH}^*o6v^$ueXH+I%>B#Z=Kw#DnS>rDPChwO<40%fYlFKVWBhC z(l0-2Bj0k;hIqSFRoTa?6ePhe)IoUmrJ)Z0!-&A*^(gAr8=wz>fb^@82M>d%&Tshm zL`{4tdVE65++o=$Aek($co+F5DiQ*msnFL#Aso`!uj5i;7{td06Z#zFR@wF#?&B@Y~=mMQjO7}Z`C zLIZoJ?#3Km;b=5Sa3$kM?w)46G#w~+f0D_&74@D;*{<&Vqx5ieB%bAwMtCMI{hmBG z5FbGcu8_IPRc(wp(VeOS3T!iL)xxewKNwgba5hekj)`#%K-g_hCptcVKK3$Kx1%=h zo0_Hk>uO((6PRpXX1H^{SBSH$IZ1pcVHsb4+@Jh~!5{b=4kPR9u9hyi^cuoI60od> zy~jqL&kHic5J9NgtI9--j%NYIqtNRPw7>R;6+YEYr7!`SmlDdkszoWFHQ__YW04=_ zmu`~>gOG3oX+}H zGu3AKj6$QFGVxH%ugnfwq9;~@G)8(ysvwe*y$ElG;XOw@lI<}rd+#Esx%!~QcP+{)uoeW@qM)@FV~?M8K_ws&Zthwvtj0&IaPIXH zo)E7_{yl_sC)2e}bVjE_&c`{Gv|tpompKiM{GpVoqT&wKIokU#L%Hk$KGlGmW>8~= zTUT()$&fDN?^5iZ?*Ywn+UI-Mz)^kZv2Ss4(QRI{nWUA%RhRGI6I$f=Z>8*y-kS z1`+Lk)pGo4(fHd6J6ax>2Qn7ojN_Dkl>Zr3HjXuTOFOwW7_WW``yj1xOJ<|3J@Xig z{43={RhFGjns!bJI3$jC>eO`wXJWKrZ_!LyWD509spP`*8T(V88A=W0=6EjFkc_N zQWE)7>EAJAGMZ563%8LqoHahYgw^8~-_(wKOADBE3=7@;&0rJ5624hD!yB-l&wDSB zR}usQXnPe5z?v<*`WBwC)XX%BdrMqqOdEbI0iN7hYi#Q+O?q|vhgwx3f*xWhb#;pH0Ebg- zD)HuUmzmmvXK0pHu$s>km3JfycvpA{H3)G&5}IsPKI^m>U(VFJkI19;1lz^y6>gO@ zfS{i4+;U*tTEwLlqU~?C!@)l|iIsz2VAM&p*>Mf(__O=F;N`^u=MiVdRIC_9-mO}Q zvypm&YjY+MZ+3$|muRGn*UeRv)$RmT>8;lwa!g3 z+Urd!d!-O#_YPy&iN0C9CBC#u)$Cg<4qaXg-JZY0_R@4ikR+-^CDuID3um!YEhX=D z@bUc8OFqn8k)k1Dm^-5t%p(92x^lGUj*hA24groc`%GbD^xt zPf!wF2zaF2MvM#qL1n^mqLiPXjUy?Sw$I zjBj?cp!^D&JkWXTDd$BMlkW-M!wYv;Izp`<10?3x8}_A+eH98S#_p0<=uaG1ohpeM|uN9cm%i%ZjBGZ}n9;!eZUb#CFOMQjdI zek|XS>B>8u^UhIM8Ao;j_67=2VCEvV6`|g#>x&7@Wz3+y{d?=_C%>t~ep{nHBby}QtGC|d zE}FFyPXl%a);Q9(Tp-_afob_*+TYFF^-A=8TAnPXRZFQ9z9!q zfuKbpoL8Pvii*uvN;wYO4k#H*Se8;qY#n0Y(5!!<6JqfiQHatQ^dmN$uSlw4y|vqxs95;2c@Q1f^7p;TY2 zgRUP9;!nL0En#0b?x^Ct3W*TBNKj^pT)l4yV~ zAGl)w{4%&~=+8-@OYfpbDIAR;usrfEEwKPLg^ZGTlI*4h#<#281-XRgk^@CF<-F5? zYH%vYS(yCi8IVYN94prCq3+|-T9YzXS<_;~&Vpu?Xv!M^~G`o@5rl4P+^ zMucI%ImX>~lNBnO$mxBiOS%auRSw!z1#|_&X2%1m_qVFi_oCQ6TC9iv zwDs?clDc>8&`Z8(Oded)@+XAGQf0&RzJ4PX{b>HZexM>-ta$HRe~eunn46^CyIpwH zoF(N3m1L)ur%Fm*ZrM%IMb0@$sb7^~9LY?%iU8BqSq;Ub;^J z0%3Y8V1!()y2ypj7hRkm5>tP7wF=?-3#{_x9_FdPL+$CvCXa+x z^pOp#ed8w_0%Q52nf2&ETo3=2PbyT$UEnQOk6Eak74$v_LNyamL*>;P4qV&q?y+0D zrABzT2H6=zuit)-e$vrpn zh2TvfvMTF2`!V|c6T3LGPNYS%{wLT@l3Q3EG3pEdF@Rv?bfQ4#oT_J^dK?i_YgBi9 zDr-P}kI$T2H?{4D z>0M>pVI{~ec~gzOOG38~A0P}kw06Kbu^5R*QZSEa2pGsEGkXeig+xTI@n6y6=m0-J zz`s)_%^NV_%$@LMY@QBa{N9iHd}fs}wpD~ZUA`Kz{3;^-qp)eJAvv8i-u^0pR3*n3hPKIJ|ek5_PH@iE^8&VO;S8jSWqaUM}UQ^zu2h-_BWA6J;wRpFRoyik`K>@OGVuNV9f$*|}CKO%>o9e>k2$ z%f|p4w_D{;aBsF0ZBzwg>sPoW-}HAahgdG}azyaAH`bc+@&~+k?#@zM(O;9OS)C-; zTBB}OwRvm7*J!7XRo_6L$~L#>w$@VHR8v}h>=1?|;@4e{7HAcpH8R-YrV(qQ99&rz zWu3HZrqKl;T;qt$l?FW9GO^)awB#|^9VFl6i@HM{Uc@dz>$)F))XDi^*qR4@A*}f` zm@GMMau5ctUByJTnbF4Y&>g06htja9G?9&!vf8Fa(ArZqY-{NfPY9`Q;dJ2;h&+$c z8aU$+cX@u}u5lqfOB%~m_X_U&FLB^%XS0@)Vs93)&DaIHN_2VXYkSnWG7*Pw;u;XP zWGXE6fBYCUEcYv#P)Y>eb^M#F?F@%j>I+?OmWz9iK$q>7Gw0nv*h4@X0O)Kn@4#ZR z>glw_wijt8ddEDu(tx$$I8Q{$n^3K?-EY)f*coO*%6vwyqS!Z#`B>t2pdI=L@dTfD z2;V2&a1Da(i~#!Tkf~iZRfqA^0r2m+rn~nMXH#g3UR|UM+>F3-H#M&bSGp&9r$4Iu zCj(SsB-+aH<;U{AJHarKeX^x4nZXpUxb9!>;}e+`K}t*T^TT(#e}t4lk)}{2pST4+dZ7&kKX?V$tjaPb;2)usHG%m9PZ;<$j z0u*2cqoD?%rYjd@p8B3GD=|eUS+-R@N(O-K{eR^zOio+O*2CbOP3?Qo)S{v)C9m=h zE5x`tx3|WKjLUT+9EAQL2Z?uc4xU@2_~{WW*60pgmHStMSQ%RvDIzMk>_hA(4Avt@ z)(O3W=!}3|S=*()v|K?K?=@+pPS{P*il3$ms*WK~@PnwFb1JWRwhPC_#m;;2W|NN) zDLVzqQaCJL)%)oD2vKQn#hkT2U!-PXdw2tr1;$P@4c)Z;(MrL^lEp&ag-$Bcc@|lI zn3cI9F-nRvqd^1;(_l0kVS_i6-fu?F>Vdt8- z?s`f49aC`e`E}}4M`*#5M4H*> zuqcyK?ThK>Odg_OIq4IUM6G_g?4Fw}C4Mv$Wkma}{LP9w>f%0(1$dho|2S_<7Y9t_ z!xOd~yOJWDOb9EtU{a4KkU6NFJhi-C!=)_#~8v^_2JQ^j9Fl+GZ1?wGUEff zj02JA`9@soAe1B&X&AVe@>axx=e(n_kmegl_4HWRkx@22am&J}>39SoF@ory)9*=j zkD4gi0c6?tW}t+&+ZThDsAJ~wxe1B7Plm5>c+Y3_B!e9mx#fBy2^ zQVh7YIau>#e1N_E&!hg&CY$KrUw}1_T>CPk-_ET}XDWi?(jW5VPQ^69k8_S{;Ir8P zNvDbelO|ixe)w0p+-Zf2Avw3=DBBOO7B3xdp+iDy_9mlUthWM5XAIsFNw4?`-3x z(UvwSA;Bbu!IutTqMaEBU;*V8^oBvJl2>CTHHZc<+PdCm;*P08=pbYCaL2{J5qeok zq+buC%iiY{SZM(|f~M$-e$gL{gIz`pW`maW9rU)~3xK}L(k8V-2gq}Q;pyXSOwWw< ztbTVvcT@@2N?{hJ3lwRXUl3XQQSFI&dEO^Z7KK6e4T7X+4S5+BO900O4n%r<-rww; zOcPxTHFC#J0m8NfSXF11=Dj{ms%=u!%Xs-e_yqsfT!&`GRKVA~B`q=_(VphMTm46z z%Gr&-2-vd$W_u>xF*R%$x`gkQGgmoE?;{|kYC)MzmdBLa<|_H|;(l!jR5PI%uE$)} zSL!~cAv8-GIB<>Qyn3sN;PvW^OpV%J_n0DIZB;Of%*`6n!Syr0!?FUBU=WoCi!VK6 zL-BjOm5~{cI;Y&zqj91Buzz=Er$nSde{Lj@lZX>Daij??q@~P9MApTnRR=P?E33^Zh)9 z(^@}r!67tCga+j#81!|R2aG?6sE@%%PkRU8tvk^@p9eYz+-E=MQz9}hmf7GMIlgZ1 zr(P!zCMt_W%~j$emm^Kuh~_WO!gGo&{3rc5oCbhwO$I1;p+{Cm5tvv{L_}BvD5H9k z;F<~WH>K7>z3!|fb2>8LKFstp)WPxv%vTxt7(fSZrqtZ&T;gwNfU%g~P8D+VbqvE> zMSQie!4T_8*30u-*PjNCf-lFt5IIR(V5@w8Layh}`yt7Milwdg@s-=)ru-Yzwm*RY zWIxDFiAPlMLL)Jj_t@D`*tY1w>k=`6R@(T=?(%Lpz;y|MS zm=3@2+1Wxl@zI)_Dt^?lU%D;@`6eS%E7X zp{WJ7D%Z>aR(F_EzHyS0yH7)4?2}Ajh^jwY5>K3P0%iE_jhLTBrW;_P+jJQc@`v(N z66`^_!n;PTuDOj$19yd^0I)J7)4D2BHKwxP6f*tuN|KRI?5UQ+VsO$Vpam)~b3EsM zfDdeJd8&{3GBS33#qjSZG8gSI`d*ZH4=iBRTDn%^IKta6MxKloX(Sjpv#7G3w(2NT z8s$2uK(7K5{EQy0?U;(8lof+j#ftx`2YdNT#BRWg{)sD0s=Z_H$M3Um_io9&YLWxF zt{$xFZ`^Iw(0-s=K^G3E(0N~hi;E8cwi**+qPa}&ZUz=u!$nE1f)9g@taBmdJD6v4 zDHd7?*Zr{hFkgf2R>Tx>En$$o=Y5#gi7w^41%)C@%ar{|Y>Dc(+DQx}9^2R)D&*md z<%b`_a*CTG;QkLiH=BgaXH%AC5EI3ymKs%K%?aB_54DX?0xAqq#%>A6RW~E+-vx0i z{v42rGZENI5AQLp&i)%#qahw(aya`h;xRCHu8UJJ22NecZ)PZ zU_hxd?!2ndv^@8MUypQQ@+SO5+xT~7ss5q3AHfW5PU(Zfy9s=8YWTix$qyT_rLyH8^fhy$} z9~z0=93jaw=Gw|VpyK}DAgb;L;xUpJbXbOOQ{NPdXuR9G#`^uj3Ck<61$6 zz}R3T1{n^e-^{$DvPwLB45ucm$ZuZ}eYdPIuZFwm1Cn|kE9@~50n+#d3+TTC!*5UX zpLqUuF$F3Uzu3BV6JW%@+foiR?SN`_=Vx|koB6Dyt4DCS7yUJ3AWBmMv`!}tA5Z#7 z$|7D-sAh-rL$Z;ipP}+T<%8m67LaivI0JfN_6lJhb^{`7aH`9vs9uRAk>jp(n<>iQ z!6WvY&XTc9`Bq8+V+q~fdEKzeuF}Bx%B5Yej_@I&q zH`t@1hWQuc7td<42Jydq&~1|(Sw7qd=vNC2wjU#*Y;fTxQ7k*dmK0$NvEBh4jvYb( z=enbnAt#>5EkaNn6h_OVp2uOhL(UW&4cQzG9aP4InB|*|2ng~DbDg1YE<^_{s29IM z0y^ITkkYwW=X=L5c;X>;_z9iU$I2qqf421P{Y^e-|KGFybuyRuw(t7CwAV0ss1*Xq z+e|U1NW!9v7c{-ovoxGY06?nRE?5Pzm&40#dn7ec>+IG&inGHB4E3G@O;csSGd90#|~?du`Mq}6R>z{m%i&G=O(_Y}nd z8SzOW4lq|)k*=jNTN4)V&tl7}`g;I?eFu+}Ngl#c5m1?ksK z-ZrR~Hxv%}9%y2+kH#nP>I|$nZejfZw5#AP=S(&`;>TD;Gy_>YrlK_oCzs4@%MEWb z!f06|S|af(E7PS({oa!LA`!G$<>0x>3?PcMh|E^${hz;iPY+aWf&!qq*J@n0pOs5= zS-9!o1jC!)2s_GErP^2}Ny zvT1dq!Jw-ogDjnpFB)LXCTjZ@<<$bWA_|A(ii*dJi(U4;IE#4+_reBdmE#h2xL#=@ zD?0nu3oa0iFJNsRkB-;u?)>Xgnw^981k1zlr#ITEG?~I;616A+EQU;#aW}@hBq{3* zO)+93qhJZ?I7+seq%Kv@Q;C2yKwPc7A5Qg~E(mK%qZ5KrTTos|0N0t$<5j3Hf<=`Y z5te5hU3c=KH9*OL-&?cX)g#ZRz+?okKl?mPa6+mp>u!;*0sR~x7zn&76b=4XT|3@d zg)(?sR9uNO6{N_r2sS4jZ2qQB5%A1Uh7s7)s|Uhf3nO zJCN?`7Xu+?;uOx}6|jqmd!n@DmBG%d^zJH(gEyv+xrU`yD$jcIko-JQaTeE?+018G+h*i_F8@B7Q;b zAQEd4>k5{|l^xh{LEx*~xM4+@1`oq$xj~lS$S{|B_IuI4;}6Nb9|LEn^)9>)FG)F2y~cVr5kSNq>dkrX101Pv+l?@dubVG91N_ zzOG*PyP;fnAa}{wg+JQ8HOXe@tF(4j{x6Zwz>`%fQd+v@`l9M8224T zB9X9yv26~%cjbi*$heLcUL1SaFN*v3OG?39C4-lDQse{_>@cIyPR4~Vuc~gb%X5U` z(EVaFI`x5kf1mK2ANz z5UEJ+oBTT_i@m{VboIyGEPEP(b|JePTWQX#pXpMRiA{3VjXY`Cls8u0TwBChu7dkz zlBoloZ1Y%%I}y+8cKQ3fxInG+Td#&yNx&buA#P-Rh>g9vD3?+LP0rQ17Bq`D=(-WnPiv_dWiC z5f-Yff!pukwO_^S34G*sQrRTBr2TDWLrP~sU7z_u!?A6`$H9-`>oS26BhW5*XT}!` zm>2ZD3ju;K5@e9aQN?9}@#9w>Z(AO}ZN7O#i$$T0;e|O!c-|G>tnAO*Kz^675seid zBGo5V6)mG}&*|DCAn;gdhiYmr3=yRygF-3TJU zIEkDJ!*&Quj}x~WPx&i@fq?1?)8UoGk4@eh%w}!@jUS!?L-WSW;-L@d4H#g}=~3^V zSM+fH$)&G#(sSFS59_sML=1qc|7%-T(u4D)KZ-CqY%o!OCe<40qNIlVufYDqz((c)Ail$oI;c zB5uZbZ&Y&-i-RSHa||H%D=j}PSsc-3s@5fV>a_>Sd5U+a)4PfASkMe`p4NKXBX!o0 zziA`J2G5#EH!5|+gFQbU%AW?1!_VchcqA73eJ%D9%(<XKAV zitVC049|U2YYyS;G5~w(@TOPK2TLj&3pXp{yu3SC8qAWv0tp!zb5*@ak=SjM{?3pPP(Nl%pyjH%B0f^ zOS0_`N*qw@a-JuZ9z5$n&oq%MOyiA+iqNWb+AP_}I)_}#Rxc;hRv;SC4`y?=*g9bP zbd*i4JKyGgn2UXY?0~?vZtYRIy729;X6{%&ua`1{yhwrBaoQa!C}GrND(5x@K$q|4 zBY56~;dSqyp@y1}(tboFPU}YU>1SVI^uIy6zeaB^Oh`7+yt(*1SWiOyw{Ur)OrD)U zH@{-UbeCa(b5PK!ak(i&z2v};3u4=s<AI97632QP)(48vGk~;!KFK#UVPS6|M zyRkHe#WJi`RiYC!HB{g&@P8ExQXFkD=eYL$vF#~FGvai&j9DdV_Dr;`{t1QGznbies(nhz$IxZfer9Rkwm<0#+)+@i20G=!QJBq(GBB_3S6*KGWWb_!2w29LR2&N{ zU~|^(;auP&a-A(3{mb+DNLzkAS75D_OY}9=QA>iwJfV`L5tKoh+6Z%Bir*9Sm+q`W zLQI?QZ@2jqGgnZux$m=t{%p^ufE{m4pjPM<$@+9+p8v!nJWPPnnx3mAF)E(25SuBY z8-2=QQ9JMWOcLS1#8-nNw9$yVzmgpDs_IQs~Udv+ho1&d? z2c~_KP5Dd1QM+V7yO*q#G+hUR4ftlp26um-!_chwdkuu87vGSi84Q5xUjOnYMqz01 zPt^*wF&XW%$gyv;6cc*7=trf>O3O%b4e>K01n8`QvL{SygEBeaS#BK*M%KME%OUm! zy0pBvJzKvW!46RX1g!+OFZ()BT1NrPYc^`TMEFGW?>KjRQ?{}y9q)&xlIP@nxXZpV zWVSPJT%!nt6dz|mjEU3Eu)6z)jnQEzHb>*FM$)5~f?eS{Ej31te3l^ERS_tvV4 zTT}_wpbIeYc3O^q6RkBVtaxxvrJYM+gmnAF=1nsiU=I9s;Xxi8Rcq#_a0T`&Qyr&G z@sG{LY5;baoQfB^LM-H~Cw{_GEeWXq;Zxk|k5NlCsN}cR2_{Zl<9(MAL=!G>#P0p2 zAia{h)r9AbVsV2*y8NXlFqd@amPf&W!dNX4mI+%YG={B0YlI{}fTqq-_#;Hts$#ND z>QvwSC%dz7jB32=Uii_gk>U;(D8<{FD14p3KmCF@@R}PSjs~~Z5x8CY9xbe8-ME^w8JV91-SOQn$W{! zlb4-v2y~&ei(RBSok6t8RNMYL&4D8jJ;`GZwiPMrq_%(}nnjD%UW8`L3d(gwe0DAb z@nL)EFJiFI3(ywnxo3LVLjEOvV;IuKO<^6ALqdSI z@`ygCc%tvW``eD=gR5mBTfX6OveDJ%;dJ-8u2{eEulw~XFd*8^M~ zNfL;(tVD&RM_&G118l=rh(vxO%tOGF7KtiCSF16s!q0yk;Jw6pojrzlxu@S?w)Gs0 zk{vn-Pvu-VIy>ZVRw6J@%tT>ij<`#P+6m9jxG6@1L8r$P2HslMRcQ|rykJpOMv}bR z*zGrk>$W+fQ5Q93hW$f}iv91Jj`r^urAKRuxeyLJ;|wUHBSJg}s~C;RfNTKO-JV`+ zE5>SiNQEvT^ivqM!-@u*)D_mk^M~8qD$!S;Ep~#V`EA zfVbXDST3eX11r#?HcW(CQ-^S>Y2I@)q|;PzdePm{A{Xr@7J$@(0_gd^2t2^|Y|k(fR0@AO<0LQ&#?)PX4+&ECwx-(mYKe2p&X*i;lzXx9hI zpU!yczo1ljYo`u!hO4Vqwnr@BLX{)o931#ML8rC5a+vCJ2W(X19!8;hP5BW7Yz`VB zO|idu#iE^~-D-bnDBz%GKuAxf1np-VdNOWBV=?i$h(n1?0Fl?_dn`p{1ns;Qv^em> z8@vtKQk5VP;Y60Nn8q*In+mjWAi;*+q+Yi8dIu&b_z_fxtT1SFblc>74){1ZCwolL6*V~G``@ybMyJ2U%-T4*R%NYUHT>$P^o|4zb!YF;WJ3szNzCzk+kTTat` z#-6VpL95M?4V~=}BN|x8sf+4O?`xz9eWRj*DiyH#J)pN#mr-f0qz38=AxEAk-{iQg zCT#Sdq~9aw_URTYhQIUty)BqCc-6BG$z<{`G0Eb_I zEj5`lxgQ}J9QqSJnS%IFkRlTdHtdLq_BTqu*2ANXS!BL-1%TF+|4R_U#ndC8Wwf0P zi19Tbh!nTJp{56MDBe?Rh@!+zk=!wg&fXndSlbLfH8$#38uHJgbXkz54-{($R50t$ zr*614vujW@`29C=AqiOTYn-ywLOI z>#xBh^Qe%!7z%+J;BkM(bXicejDW#2x*3T`3h8^-THLYc6>AAjT`_WrlBU{p*<_2f z8S3~w2jJ)MP6)v&U;)T8(DG%2?VWu#Qz>DIHAbz^guqqey?iRXGZc^6f$zGOYuBOY zeV(X{J|VTMS&M1?>{{XJ$pg z=6EMctUTvu)Gr|+_ZL#zjZ+E{njTHK%{iuXH_+NxJRE?-iGZJJ_`X8PLfx7RW6H;1 zDm)F`Nz`G7-A484S7c|EDZ@rTv4qo}4_tx0-LDT8>W53_0jkgPlj4D!Q$Fp{u;sA= zO>dxcs~`h?rAwzG)tvRBH|nhl&!=6lNDrm%Yo-W*>NsPoR`akHOs))1HZ`CgshD#g zm^4*67kr^*{oL$q!*&~*7&YmWfuTyi?_a}bcNxbB8w_l!cUFD_5C6v)69Moq+N@&~ za42qk5=ZG~Vl>QDnFPl17|&7Q5hZ4+=xm5o&=D%URqS^GIhZ~uGLUk<)2b%2!(o^s z0!2tqDJ#<1#`cs1I^K~*kqunJOw&Zv%Vks;Bq2}esDVkxk}&=?S5?r=oSzzwlcGiv zyW}TG`{U@W&}avACN~~NwxQM)q`4?RDNB?1)VjJeA`? zh^(-OhE=v2GV6p{`DvZOQ~6~lglv=)>T>(kybk9=!#(6wHEh=f-`h2d&rRzxtd}v~ zJgj>}FFpq1%8WT8+}OH^aiuJIwgDtQw0^pVqm&WCBC~3)bt(`T?BfOTx{^yPBGt`N z4mx%#72H+m!d>_J7p&RouwPrvY4#aItN@*vfyNUo1qA)>G{1(3s|jRUklERT#{uM8 zNQ<zUvB^O7Q=)L*fYe^78PKOo^RZkFZc@8PqsyFYzz&MF&|}nxJMH^qKHYB6b5A zheJGJZ@p)3k3wHA%j=HmrLP4M-mqjhdglr`FW|}8s6wwQnwncs!NL4!MXxNO{xT1G zs`=Nez#MAMg&5`sr&||mbLd_HF^Ziu?0m4pfdrn08*cIBH+j7X%147Y z7GBHN_3-i6dCC`Avl>LHZN`R}zeynwaL@~&_pBM9D7)P=e&v!{RYX8L&Q6|p zAtxOe{2HD21LYMvv9#N3q?;aZK@YAI>xM72EN>ZfID) zLsTRs0zE}%Y;TW4E}sCw#vM%D&SW<(uK5%xvbw_g z*Y22vcyr$V_Y(mj*Q$UmIjgu>D_F9=hIw>#$KHK%OvtFj(K#eCf7K3nxPm1*@lIGa&g*7W5k zjNY}R+3oO<*V$0JEw~%Bxq_LqSy>YZkUcs2ce)Rv)=(K z5)x+$%y?~DJ+mxqL&x3Sbh4#iTH4*8h(%OIl$k78jV@g$jm@w!PDdq21VbZY`8kX# z)W=P;zzb!a-Y#w^J#7}%u@l2UGAnWyD$#+rklHxpy8YZI*)+xnk2Lg-D3C!Nm4VFQWWJ}kjU>(9G3!GGy`R4k=vNFxu`}bHqH%NJb zQ)gusrORtX;Hy= zXJzf>d}}rYiR?bAXKaR~hjx>daK$QfsGct_P>5Gw%BxIu@r9&oCo&2NHm8wnA>JRu zw7W$*0ofkLaMm}}y-Z?oLMs@q2THfI4h;+VQAH=&>%N!e%K5?>Tuc=^U|woqG$my2 zTe^3l9{N_WFjv0)4QA}}#qHc-otI&qi+EQ4qV}Ti`UkaCgDp<;uhNZF|7k0XDWCc< zcOwWfY1;FsteeR8yDhfH31h(2_ESdCb;1f_c|S5N+;cxDb_KOga%3}dBxXbFU8X7Q zP0kaz@H}P&B-k^teiX^Qbxr`_DUtVOtAMF4f6X`HVA`4?gpghf%z6`ifhX1_j$+z7 zIkiwV%g+ZvzOn}cO&vf(?Z6yyw^G7dJh2%J3 z*_mE@jn>GEK=x418N_ihJR7zf0&JU6^+UOhV3n#fzB@halETkc8{{HKPb&emN{<2vo5G) zTY|^IK!-j!b~v`Z@}wnU46}J@=Q$u23K@Y)9b?T8p9A@l$}F$xp<7M1AU74u-kxz5 z{Tx86I%WOlp{h5}>eR6_(QB-_OQAJ=4APnW?ibff*t{SFM$m1lPp^m+rc;iYGs)EK zyT*I>YgpsgI2OGTL^oFYLlvu_rYJW?h1#;;`VpclGpl;tKNJ}7?yQx*6SeT0ESa^p zEHi;b;#wsQch6G297yHw#X0n;3@GGJ>a${DrGzP!b^XXlCK6f@SK4bd2R&Ou>XKoJ zr&kqloAzAj@FB1o*@fGq)u?R8!8-~wSBhR;RC!d3(Em=X-I}picpSp#p6kq?rLy0| z$faz$U#Cf->1?z*NFOU3uE?&8d@1BR8@9CFz6?GWJ&M#lInYl%Yf1G7Y1Xhpg)0`! zz2V6rXw>>wwcNeJ`;{unB2eW$QnS&DrGfOD`aX0kFjD_<9x4Tv*@5)cQm+DfHV)+n9bE`o&Q%!(#uTjB|D+rIbn#0h VQFh;#2)0R)%AO;IOMj9`bCSY1iM|1lYL=k zlOJ$RTm-$;9m)FHQ##d8Z{M8gzMMJ`?r#!&#K)}LNtK+&4=noH8%SjkrEP&HFzf2^ zu&I_|z!&#p73TY<)#sfpK4$7*M17tc{J1KG#JfMuCuENiYWdc_Carm7=aKvsw-qo_) zag^ybvSf#%OAak$P6A*WoSeR`6s;R=tYfwYgq^hp`vHQ_yV|{s~0vfbWe64Ap_@) zccf(?1Ss~l@_obtQ88E8SM z?_`)8`lALa`{e?Xf%@;5^jDZxF;OAmVG`;Z;vfR=pi9p|QTEE81vqe+g)&cCfA_Be z#LC$8**YUirAOLK&r7*l>?rb+1z0LyZVt6lY2n5)Ze6UfQ=V;&=T!m=YD{(BfS4E}bVr+i_9gcP`q2tFf{UUyf8o2_Avd>A5>k*_Ro5tA$M7>ye0KfY)9mr9u|{I0%(T38r|W&MMU(2;A?;fn+`YQ?S0ZEIi)BP zA?v%d;h|r|!bnJb&>ag|%=o)vlM4YMVbs+zd z-y;D!C^R;5#u?QuZRRiFlpn*Acu?PovMk!AZ#f~=UCWrfVMWLLP4g{inUvk<7Tw2a z4)~aXIBz>&v=PLx6nXPpOIx1 z4=)w|>nmzLIH=DczYX(`a8BJ}Prouxv2?yVFUqrxYz<693pPI}h%gb6Thzp7Jv{

    g<*y6c5>obIU6yh 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�&(a@xMROsCm*J>A0|vfvw~p;SdB&$*#OXKjV@ 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%0A6y+KweilY3mvdkh>Hg7e&Aj{sB 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�EGN3!u_qjTzgfxa33 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�s$!|jfeTCxF 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ǐezC&~2d-t+ZVqXt<&MHi)`070IRdE0vd5Op7g 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

      C3?G z7Hnq;N$*G#9UY8Tmvi5EUR?)at}gzJjp%!TUkBV$5=|t9RYTIKYOnaDhstAPu0WkX z5)vMdN%w?(t9)4y>b^5|f{?+VBWw9_L<7Cxa^b++J8h=UauqKTtUQ(LpxxOEL#JZ4 zb7lyNoi$tB-|vpCP?Wo3!~4NaO}^`X%25RmG$Q$=vvVQ;lU`7YeXTe;J@-^h(FQPBRLnF3E9C&7T+i@I}2TDfhb2kdd@=+(V}4{l#3szo2<%<$Njq@zNqI?s# zVIHnEXTC5QZ`t`Jp!8a2L9E8ZSQ~Z&yGx-RZL@A$KOWRR+Aj++`;6VI^ISrK@&+A? z=X;cZR$V7O8(9vo$zP89_i?6*=mfkqlj8Tx2VF2XXwohHL{KmWBg zwXsZu7|!B+!{(!6Xps zh$+h&BWZ3=+$NGsIH@PH*|g68)WTx=DD3m_?$82xQYVB>sFT^le+zsP$ zx&K40B-}K!1thSoz_!$`KQ?TMn<189LC5K-m_g;F0-9b62GX8wmhx5TMBC0D876aQWD$c9JiOH%T_+_iZT;7F#Qs`;e6C-WV$D zU|?Auls~~&|FZBz8I!?lCvnwy*5UBdQC}pQf`iU8J&3z&zr@pw)C5p)X+|#SLQ<~F z4JaIgH7w8=Dc!58fmP!OVdz6l+#i*w8S?&Te>*#EDNMM)6|ZDWR<36AI^n;zwGVtJ z^6S7+YY5Vs8hm5Gc}>_kc3aKHUQWcqaV*;*OL=7|L!~IAzMCYExa@+x@^~<`-rzhh zc7w1^Z!ISDwOuLg-SeUbU-lL6yy!0TY8tE zoZ-rrLJI9*(^WsPBH7ZAA;c-fDa9qi6%(K+NOWN4<45K3NTu34p3v2}m9uHyTihPS z>`JkewUCJ8g}goy#6DFAyQ(rb2`q7{XbWxf?HRqBa=xvb`_~`lO<+HWPjWIia(Qhf zJqXiZnwtaG`p*}j>;^t(uzdsP@a|XI!EQ$(hD39m^);c?Vq+~i|E*CgrRA+J6DRpj zLJ8Mpb&Lc~$S-va>I+LR7ix$qADGS)j!3RV-CA|CA?>03)Q7D=2Z(Z?ejt0Q&;PgQ zmnuo^6Ox~pB)giZ7OqVRjt2>6IUN}#wBLXF09RdbWLZ_?A`P)FKZmCa^;o4kSPB zE*-}VP~j?sXm}1_p&{qz0l-hkp`9`LZ!s8`PIQE(JDd5OW$*htSY(Q$?A`as9n(@9 zCARPd_4i2kVXuszfYB;cW>MH7iO1RTh;f7Rvi#Yv{*Ng(wsfwYwgvcy*_(rS>&`LpTIeTYuhzVnVmrSvIC)oV2oPepZ{S#`+5g zg?4dEPDY!lJrv*GVVqqsN~VVlIlg7Ej1<(}lH`+IAKQ2a{{MeSk~hr_i6cb0P0!q9 zKcuY~_kTz-9V4>#@1&t+V+o;Y@*#bQ)+wYbD1#7>qVV?gGQR z)`vJ0Ik|BGziUF0I&W-;Yuc4g^m0QAYm7n%4Xy*p^8-1|&zcTVh>0I8iK(sao$R#j zv<&CVT-2>}vdOhu6Z1jlyy*$4Vc09wL&`os;l>yG#QiJGEO_%e+WWkGmMhvh8!UImUwyp}D;TieUOWNy61cypP>-LgNede)VkeBBGMe&lkKtG{x(bRva;@PA_ zC82kk5*ec*70Rhbi`Lnlj*}fJ`bv)E9omdI|JTc z?&y=bnZ-0alnA)dr3ubg%_#OPSEJ&etC?LIW9Dl-k#c=fs!#`}kHdGSb{RahUO5EQni+5n4VTU*yB_(ay`~hAaVkPG z;|friavR4s2~2ZBiUs_Q;-?} z$^IxT-CDE{XE5e@){=)ql@y9IhL^l-0!u}wb)+UV&%YUl4(Stz;sA10qUec*bDvmB zv)vtdx%l`NMw$=2Oka8;6SV(R9~p!mRd!+~9}WhD{3d;h{dwqSXrjUS>u3W9Vf)5S zy5{ey_*!_T!T!w>Y+$tXs|kZ@fPi_U#miNNRkOk7G89iC3Z-UE+n)Y=#`D$Ep5z@# z$cqn{+6~sRkw8-n!N-IRCm=??ZOZ0Oz@q13rtRtf+S?CYOJR0%yy>3>#p@hBta+%- zlPR0e%QI>%VMjRW(AJ{t=gT?ct^?0AsKGBY?^1nhFiv|Zvbt&6V?QcD!1|}@;8v$wD}?N5 zNch8L>%0i8mwsrgUxZP?dq7Vh`E609$Wh{Y< zl`<>hBks!MgkG&Wcv4I1g%D?O$IEHfwQu=@5ylB@2=X-57cS-isO+ zHI@%1lWLew4M2_yb^e z5}`Gvq_6JoAn!IYO?DqAH$Y##g(=2ZI4oxp?a(K?Qw``Oss)%^} z2l2WJT~x0H>O)~vYzEgY7e}v7`;7=h=HAL_mZ|CAw46|hgf-PZpr%j7UO7*rlO2jX z@cAkbq)C+z@V31%fOxn_N(tIDeTIX!3?%&fM)jPbxk0?OAecv<%EfVfhR!i*gH* z{)1}e0s4=W~j&yAP3v8{ke$K|Gk&{j3Ny~<28iA3^ zr~#^j6am6_8|yjZE)D9^$^pWf?nIKfYCS&T$hDuTQE zBjs$4!s$Y9cFIuoIOG zQog=g=UchMF{Un7X=4trTcETrTPd@oHQ^kyOrtqXVJLBusAmXd#C+6D*uq9J@uNrCk)F6({A8-!;TC#^cz z$C@3xIHyp7gISBA+28Oy-(AkKKHH+ z^BoV^;~I3A@R7VPW31@amX2#yYUsxLwbg*fvRX@TXT!p7RaIa>EOk9X^Zio0byash z^Xv&qp^n+pZWD1fn?JS%7QSPF$_aEc9EG6xOa$qC!b$>uvi?JgkyUze1~~^trbZ;A zRXamBc>6=?LdYuu0y-9v;@NPVzOSN+e%T>W?Q`65~MPYz8B{(hdv=sW;b%VLRaF7-$>z2 zI2!oM(WCDsSF;BkBiBHH8!d0MZM*tqN$Nllc#t0iADk$-mjGTT4tB=;emzH2n#?|(T%fe-$NMo zB<`PN7=$!~I@b~-UWv_?@%VE$xn`J)W{dy5@YE0-h{f5zEx=W;Xk4RDf-yVJaQa@x z+7#Ce6IlpiqK|dUv~Hq@nH`WUecdSRwWPN-y0g;M?L3fSbbPs8JI~ZQ?vb7jxWsgj zB?P;&G?6c!EPh>53t%r`@Anq)7|>=_eQC!<)iIeea3N;f6ISGgx!K6RuGH^*8}ApR z&}(FnVLVDwU18!fd@g}(7{KRkQFH%)9rWNXI`kQEkbN9*RTaJp#XR$N)zGpum@{{- zXwAhoWp}W(4I*p$P5@|yef5r>h0WAidLkT^ZY2`?KC#8(V#|q5#lnW9SrD zPu$4DAI;^t&Ku8Wd?v!>6!Hjspey9ijYsA1^?5KZ56Z5?g{v4J7e^fdgC^`1^0Yk1 zZBT3GM1I&w2mk2&HPRGslHU`Koq9C00d`NTXCz!iVvT3bn6!>1kNpa=y#xX(XuRSA zU~|R)6EoINHcZ*(J#~;aEKD`I2YNYqS<>ocb@W>>rY`)z(C%6B=tA>yr;%i|Ox4f1 z59*)&=`&jq_*M9*%{p+$VmEAKF+BW8fw3=t^W!8{wW0TvWTJM%B4NWjv^S@Us8H3= z1I5Q7xLU0}+`zW0f*2=YkID5np~Xrui^*dT9Nb)~7O$5=c^s)C+U@3%E}LIvvavgL z)9`G?g4GeMoz;!dwbwCB*cPS(sC`t%+&QDCx5;)zZm=nOo!J%y$FGI`4THQy zq!%{S=Vc8QNq{50eNDl7D-h~w5sM6)K$a@VLNRiX4_a2V$#Bnly5PiB%c~26vn4$4 z0XBZ*sE;=YuaFK1blxXten`|&AY{omjO(M{!>ck$mNHEX??Yh>&tLBz0&u(U&ko+k z8D1NiOkH>R14kl`>dZALtU^kO`RfBuan$tR?s?}ow9i{bAc`0p{!}e7!U%2d+qmN; zF<^oN#NHS^{8HBR#I4m-UK8E@;8V`zsDHuVr^AFQ;RS>Aq#*0meTE1k@>O=KkqCJl zFMW9?UIregF65CWMk$__tl;TeyqvbOQr)E8?|$rtEY^{K^+OvpW{N>(pfPJ!uSo8JnsDT+Euwh)P3PHzI z2Z^4IQs@sar_v4t$AvD1*Bcr1y6O>FAiAM}u+R(=b!E%B<=e;4CLLxN8P#Q3scN9d zNMgqB#QG;t8N>Uy3=0s*5NrsB5)@IIDY zg1r|?(u5#HvLYvij>#UtASVEXaJu6)Im1Oa-kRf?)WwiQU6lTLu?CF#-;>M+S?LLZ zL@gW*?Q#!!iIVC1?YFf?mZ{$k5^M8ZATdvu1m@vKUJcF(us9C%6S$G~Jfse3*6*bZnNmI$A~nIE(qCF>GI5{R z^Yz!8Qzj+I3;BQmj|2{_jm zyHj%aDnN(3{3ZzFxJFGIx~i)MwODFV;-wNYH{MJ>-$T&K3-3>PnF4A|SDqriw@V_T3;?-yJ)`GVZTbbPspHNnZw5U9raUKt z<}zK$E>1zn5_xrOZO~TcDZfVfk&IGAG7p&UV(kfLJkfrldAqDPpA^D31!A1!#efY4 zGCd*6XQvz{nIVR2mF-q6HclxQ;=u(nI^)UrH{W3awqf=)y48(PIJN&iek9sYq4_In zpKzd$PYk8kSL&MYuN)xoBQ2-G9De!B;*C}!%lmvXs4=aH^%(24GEvHbOQm3T*n5Md z7gjmb5UOhD;R1)Wt~d$SP6({laW-AahU{si^vjFA#AMZ3ojmXdWl5M(ILxQMGcTqT zuJe4X@g;ArbhgvfBWay-mGB6h48BLB|2TI95dl+u5p+p*dTqBSimW8`D%<0HTYDdS zwAqCz=nkeWQlp0O2sb}hZvbLXfJfA`X?-Nkal#Ypup%O?AN2aDaC=0)5M#I38{KLx=lg zomqa(JqWJsCP==yD+G-Te-`7r+0ZH;4=%__)`R_WIh|ydWhS0w%uU!n81oL#L>J#9ng%st#a# zj|}cLC<{wtRJ65;>uQh;cw1frjAC5aiSx|ewk9UI%DRPmrwfh!;~YsfwKwCeFzv)i z?S@*JjV_4hl%$h*?a|_aSjXO0lBY(ZxukGm`yyjREqi13b z-_V@JO)qHPLLzKvZsbjM^yeihrO4)mtn2I2+dn+Bus`QYLeoOO>Le2U4S_Hn$>&50 z_LH|oAdPBV#DQLPo0}`a1ugLNQLX{T=GOU`z{n@Z=Z?slF78QVYqO1+_86Y|Egx`j+thB1MVnv_8N(wq3L@kA^F zAvC2jUyWOHJE5C^p&Y7K8fdb42;k%M*1}7KU*~SSmJ2W_F=B5)t62=w`VOIdM-opqnR;wYsWVHcKQk^gpLmXdMrj zWc2SkSC@6b?c)iSLh(4ebdX`Vm24kY#z~Q#%z5)=U1v*PFOvDcJY|~QEB~XJQSJ|_ zhbG1YX~}^uPRxg4&INJfz`C0B$3W7YtJ<_nLGPF*i5?eY4JL@AK>?F0&uU)sN&7apUOiF*DZ=>`%WVBBgLQHZbo(LFE{`0)bg9 z7rEqLL;Ls0#sNSK6S7dP7mAJo_Z9?!OB!(_S8@W}gDwgwL}+7EgQeJB8iXyEj8QM| z=*Y724VVNz#FX3-aJ9FrJhXT@U~gd!s_iFHzVt}aJ6gbRzXPEc7Iz3%Z-zJ2?cn4F zG>E;ittuo-CgMnb+@Zyz_Lt{tEbh>V=wMLZ87pq1%S^Q3?1^Q&?+?e_e*Am4xSBVR zZzooE;YJ%zmGop&j0Qt{MV!FeLHqSs&cu}1`WGov4Z;0^c#qWxtBB08p!Ms}cd{`0 zS9dN0w>F5W36){;KlX96w2?L68b zt$Ri}3-)uOjBGaFY4FTyu?M+}JYjp*=`^-`Z;my(UX;+F&w5uj5fzAww6poGdTqhX>IA~O^PA@d~+gu*eh{~mi%vT8m@ zCPq`v)~RJGQO^P!H3N2 z4m~!!&M_W94S;uwsOs&4@dpPiaG>7UROb6x0NtZBzd4`TCS9Y6ym46ZuF)b9`xn4$ z!hJAkbBFQrBs`BwCvto+Qr^?nI0-Wz7B*aLn{hrt9X;3HznsylZyz2HiJ;&OabS1w zLRMdnxaNY8g$V|p2vg4#{Y^Lm{RN+%Z?cwm5{xodd}?sJhT#y{vmg8t6bk-$b~JQmWOfP~rliPY|4!ba1dS6hNn_ z1|mPsMSlwR{jB%A;+h5Ei}1s(pW!M zZ1dj5gHH83zQxM)!qZH1s+X+#EX)a6J}}mr?(gwT6{gn|Ax|CFH^SJog-3hOQ{Z=b(W6Avw`^o^-(*WJ0#I zs%6aj37d=wRPy4C^;229_zyp99_!7$I@A?&36D#sxAZ1$U~==YHqFPo{>u@vxW0LS zE;mDO`A-V^@i&dQdCT!=ZmddS)#e%aujk($2(*l}2z^SJZ7|(t_dJX&n1xri^QZ>n zJI*;_yxiWEq+|oVV^2^*P~8{NHPsZ%0*g9G23x>X6k})JP6k(fkF6fZc)F#Pi0{t; zn?ye`uSFz3!68gBl~Fb5&G$!~Lr6LCQ3Q2oQ*W^P(Yw0ka1pMZ_GHtKQEEuMOm5zX_BTh3CcC#tqx5!g%2k6H*% zkFa6EgPU%$tNVEH)#gFSR*eHb@nFm&uiVrIX^qPxcpFP?$^oa7yYlxgPD`1Tox5@A zN{%{OjkKK|G&(cqwFlS-jU2E&lGTC5sup$H%2p4ywI4X48AOnXS<-J#_N!mT0G{*; z9|N)SBZ8%aM04Pq7v}fz&Nh!|G#{W_Cq$W7!vyiiYS_1XBI8QePD^|$4i)Vuo$gVL z{JJfQaSS*CYe>H0d3$McT@;I%6(1NTyeyGrxm~kvKIX>o?E`vQ%s)AL)~<`RlV1df zxR)wN3Zcn*%jTDgS1IDhZHdYj@VBR;qtfT!v7-!>bJV?b9!!lgb5O5 z$ruahWYPLYRi4iY7JCz1tYnpQU2F{Y#b%KQ3aF12w<&>0aDB6gC*b~Fps%u{-h+aaAbx6&Ta5gY}Yn5vj9EpuI_URq1$MFJtDJ&J*iEO>xt3jbdY9YCbTIxjxcE4=vkMU{_|mUCySDPm zSafs`%a1s{${Mr#l}dX(ZWiZ`A58WAkOLqSeY($n^J&(DU*E*jB3Ei-OZQ0qQ1r%d z`|KLMWWeY&6rh`_xZAn}v3#G6os-cGk_%++(R|>o!MjG=5D}<-q0m|2WLnwT|It{* zpOXlN>4WeM8Nl?5oE{7nS2mkoTB($zRwLn*njeMzuGt~|75$0(fnmF71Wa%)W+6oRiBL7zsl zvd!5Nr!%(m?P4*zL>zz#%>OTT`X|T*tL+akFY?gQHg*6ns58BhkH@x0xZt%kgtO1n zp;=_3a$$aX8D%n(Vx*&BBU5sv(qeWtkU5xh)42+{QO2b!lw;;PJG&FLE|bRqZ?Ul9 z)AsWSNQzb0(^6EG>s~1zwFT`YeDoVM>uyZ2MqD{Dg`*q=$@j!SyMkN*zuKWG&M@T3Kdq)#_Qb%KY3^Qts$-x%!H$2Xo5p>WH=I zs03u(ZMYRYR|XukE5_e&xONRWVh|jvn>AVb-;aF&itqb_aobxg)~V!I0R5^k4Tasm zS~CD0o<3I);N$nlyNl%&prSyh(af^hSyLzMD&u{Qrlk}NGJ2e zZ(BwV9aSa-oFFt!*0p#Fu|C~Vxr3?iNXPZ7Jn~)hj&Ct+a#%O|esWo=mkG0wN4;S= zllN{af;1A;pg6-fO7^~rMcp1dUl+pN&E9px7s@gf7-{YOosxstP_rnlwp5}054=!m za%oSNZHH3R`#QitcV9~MP-f!PQp51o3=#rce@+k-SY>qvFam4+PqI-0lyLwi?!?lil+yw0MWGxNMnoG4*98rt-nk7a>>xe z9^LUz4^N&#HS1PYSaPzDmS#iWiI`4CHAS)ysKu?Xa54eeXBOl3Fa|Z;m$GQcm-4kh zI)yh4*+E2VoUSGVfLPY32&DX@iDcybQ5`|#`x@0~&$d+-gc`IiG56Sta+Pd$!wI8? zXpKH>_OYo}@S?|NzGWW6jtJjhhE;Q~0*Pr78?XGkdR*Y%IUI#`a}N@j54t)e2mBfZ zz;ncubBCSP4Ohfixf;#ZW|_+~e7Y{0nq2U@Ot3;%Ui=-N&d;QvBZz;g$rBY8`Tl&H zox-5s>f4-BA$;-sBJ^)>s!{$DBcg3q&0ESgQmUBBLa+iDBbax&wGyFkrN5gC%F`+u z<~z-qot=Al_k7kcM%X%&VO<*xQehCC9S=>fd$uuKD4m`CX+vM7DGVT!3!QSzt>mbZ zf|7#O#p*WD;K*4kWH4V8b2iF6)NJgZ#mTvFgpu`pr4QuIC=V^TcW#_rW)Z`A3p>uB z6+f*p>O=fXG!UYT?MNsmJU0F=(YKF$5~G<>#G6{dQk4u4fT$`2gMrRk&jMU*Hz;C_ z9Q8|EU~WwzP)d1Z00r|EgIYAfwnGYU!g6B<6Z^wl84|-~I&PQ{@wU}~8R1x75!WxvG;aQ*@lVgSIsQ{=nEl6;4Ca2j(2g3wFEBAB;@ z8I1QNOCpA>Zbl7&Q zblGXs$8Sd1e;0ttDPNDm>Qf5v+MB$`(qMSx20sbh=1+)7rF#|){1tkC82s|mgJNIg zyky5oP|~Ii`P~kYNraqYEvSx*S@A{d@>)N6i(^bf<#;tG9-V;=I#K$4!zX6#`1AF%_zwf3~(dG=dUTfBGTs)_j z0$!`@;RqeTn=-kP0y39`^h5>lGO7 zHCTCs|J#v36(nR~fqBD6U-dQcIWIdH;dKLx&~-Zq)ct+F;a^sIEmmGD>*t>Ae92{K z#d&(Xa^^1;BFOc5U>0Aq{3#lc683qxTtbog+Bz41!lmJhsn*LEa92g0*2r}gRf z)6K4pKYnN|rXJ{ulBzj#5zMFB0sm>b6JSIGeo^uB5Wf~yJuGCl$+wO`t2X#} z4>W`>o5wD*nBvQvx}Nu04=;cmh`*6VvGvqQfMqB-4x(8z&5M(N<#0Un*V=m1KSv>- zZ_;kqZGi^(LkJl~p|p~KAb%!vfHbJ4{YHX49IdP73aL=ELlDewSAmyK^)BF{=H?CP zDr`ce}9QC2Ev%a;CiDiM+>m`|h&Gx=GJO2NNMqWn(VC{i( z2sS&`P`%pv$h8e5bg@Xl5aMqgmW4LJbYZRHx`1C7*qy?fJ;M5=+gA2Uap@u^rq>$&Or@cW8ub=ZEtiH zKULzC{IZy-aW*JN)rP4`$9|R%;g&Pt)KF_dBe?GOzqv+k(3_eZ4LlC_b(Tc8tMQ?T zf?^Si7*WI$v|sTcTu92gOpj{mU78ppc!e9@EQw&K1$dRT!&a%zcErO?#haAA^!Qct zr2Xxg6VN$DT~4nABmJMF8X?}uM7}WGEdwBuzr{FZM25caH`WhqA7}SND}$K;wGlG_ zw{9<*y6hWB_dZg3rXo{~0E0(Z3I85yJ zpG5Y|yREsH1m%B3D;l4*@NYUkU7`?AI$Ov;0$#sh;lLGRU=s&Yivk@wXkk($jk;rf?P=b?3+AJsb6#U=BTXWo-F$bJ0m=CEvtc!7$$qAT z3GDVp+(oi%K{c)tmg&NSwB|aUsPcmTtdOw2>&K^*)<&(@7G^$S$e%h{e5`s8HsBsg z0#8RR^Ia{=$L=WbDjGmbbOf z6w#>qg1-j}l3qci$P3K7Fq+*yF=DD77yu4X{^v=L5l5W4!ve2SsdS9%TN)zoXgOV> zr3UtQ+^R&6|J@c?XQe2CSD~FF``b(K&C+>pTQpT_K6mv6f18}<5l}WA)w4$JeI|2fe6_>a<-lxn zfr~o}N7Hp`P?33j6+aVDY3O8#FSFU}{j_A{BWV~%)x7xYT&HlpqZCn+w1#X6_m(LY zIhFTCOUrC?MkP17jc@HDiWLW#NLtqI1$731CzQ_b5<&6~@RzpPxGefK)y|gtJFA1>CgU3U@dZXSK~sx3bM}`=9DZ zJWe)+=aP&=)@W#n9vsdIS&RS(x(1B+(^m2!5^=hWC@(na49vR&e7DMA4S088*EpIS z8Y>u}$?8rF-}$HWbXiDg=3#-FYElig<9*R`evb74aXD@3_=pqba_%2^nhP!*vi_3I zhON*kq9ROc(C&mcg-_zZHebVORqXb!p$z$Tq7{VO-(0L;;L}(k*Df1ua{J?M{!%ki zH7c`ix($Zb{U>zQ&O|UbL6l%ma|le)huYNqqC3$7QGIhm5O}M$kxkBbDYM6E2&lRH z%_zv&TOQc5{%i-AWGd{MTVhxM)={ZB?+vQ19f8H{tEGRAI#zxOv@Ex$pqS z(SA=pHL*}*A|UE7dr99%#f47#isv#Oz-khW4Az}lkVf_Z#~HSX=6(Y&84o4||EG{u zItbpG9=hLfMAhsbDQ*HzfYt1a7Idbg`N+v zrOPgc4RMR(HNKkxU67FiEm+mHcY`p}?m?I$xBSR-o#yGB95 z56`=auGKj?6Ez~zqEsNT!7TdbtQDXwhn}QWL6%}Rc1S)J8i5?TVH}=0rw>$=6#9bJ zmaCP!(dz~Skb>Zc`C;+RksQT+!|Uzh7b4wO_WLu}eBLN%!p$lVKbH0~i6}KhFzfNL zzn0#m4k`h7VQ$ojLOB8Jle8!w#g2$PF97F=^`Ris%sLiL6?C|#K-mB;B_M-7%sjQM z>}zi_t`9dla0-~F9dOXsljSj`UoZ`pTEl8=_z8Tiq7$tddj(>h9WP;=qv6RmZ;WPE z=SA-&u*`vL9aXmSzBJ-YS)km3uIPTcy!(2|xWE1)y#Z5?j`T`p?bIf909goKK$7=^ zW>t)7Y-;l0w|bFpH;+~Q@M}SHGT|l9f~m)KtLusZ^{ykS&UgSk>w>EL<6&1b8lD1{ z+j6R@mZcC~OxVl=t-7g0xHL$jU}%rWB)@`MwR%B0C61f88vShEjR=EEYJNM20a$8@ zcdH(;IMi zl&(vkM`~*~4_QdoJFd>Dck%T#u&9+EUz236z30Ol6+Xh7wo_)J$!#|NRMV4O(MWlx zlX((+7Z3Ld6LiFA(&hCcBJlTj*)onp#_TSg@2qG~3~RzIO$rER7Qw`RZqD_cKdo}vP3&nwumcOLeP-GcG1frk<*l7CF`^o9 z0pg4a+Dh$JkASW8F-8xnh*2VKO|JXJf}{rQ=ku@qfPtQllU^U( z@m4>dokzeV7-O11xBIX1vBC^Z9!jtz6|!EuLB;3jRloeh*_wJ`bqfuLy|Rb1r7Csp z;{&)M3R&d-o?Rs_=fM4~QA`m?<+qf9U52c=mXwEU@RsVoX1rXvy!ZMH>I}ADaSI6< z8)VR-rUBP{0w#FQj{j>wgYuxchA^he=pSugWiUl^0cACOu3jb67a;?*9fIy#q{iau z5M{T>=7CaULdiM#@!Srd$E%eOnrntEg*MBZJ|+yB|rO# z;=Srk3hx!pj=SCbS|Gx@^8F=6yku%?I%`&H;ER|u|KIuP_qLS)I3;l5Y9N;XkWL*2 z<(L#+)Rc9%?S9G~94PrE1kb{5(J`rz1Oqe3ZoV6!YRHGa>#^TKo#O`)Z8iC-R{Wij zjc51+mAIL6BJ3J{6}JwZ-X>SRRO`iXnT;o-v}d=W;adT6>O6Dn%oV2m{0yh&8hnyr z5j#DNB6rZPVL5n9W-l7ICt*}W@x+P>(>Fn-jbDh_I;m+e^JY6qOq+uX-5)5?5v5+F zaoLN`f~z43iO80*f&vPSKsvk3J13y?eOPd0|0N&v)>GscF+JyNcUl$Vhc0u(`$^BR zWx-A3^3YUnlI13p3S?-MvYtSFx=xl~*_ zk819i!Y`Hlres9dRa75kbfMhRQ%xAEm_8m@#iSJcy@Ju|_Ie|?)2s@x!+SZY;q`2t zcDG*X8_2_kap;<&bbnv=r&~RD&*f*N5UpUktg3(Nf`fM2K|4SuflC+}&Tiv+wdu$T zGb*YsPB333!xT1|0}Oqz_$asQ4Jb^y71t9V0~9BKKKF{}1V;wWh?qnIwa}?xXbEt^ zdu8XiW2=cX{G}nGiQ1eAy_e-HC_DFEEeHCmh0eIF9_&}#fc_Yp$Ra;T(toE)c8E1- z&8A$Q(DiogN>o7io}-TTauI{Ui$>&l=OH(jdu@K;zQR+CSLs=?XzP0g>d9@%O($;XkQ@*VF%fN5p zbK-7&XG6Q?)xk74z{AeOJCmOg+D5+Xha{Txb(C0IT_jn;r*syjW*cG?u8t_F!9xJm z0X65&lj>xJz;9ql%7e!onni>?6Il>_RlCkfc~UeFnLC-hY8B_Lb1bUC)ZE{kHc59c zy#!_AD>L6VLsR;QDD+#0DrSw>(@!!k`@}XTNQ@C2lmfEB6q66@EYnmKwh(wuh{i}z zMqS){$|b;OGdsdhA|DR5VlX=HDh>wuVpsBeJ-2Wi&SyD9>qP%aO_<+_kZ2&!U@L`4O8Rwo;7kEOkJFv2tmJG=K)9KfKiu5vA@SW+$DA z!*>yHZ7hV!lsSkV1dgU!5LK+*>qcoh5e|Q&B!Tgl>bSTT<44J8a!K371G|)XK7twS zTpoLH_)FVC8FSUZh%lI*RU9W#4m_<6dsB)S#qTuI7>TN}SY&LkE?bW`ZK?Q?Xe*j8 zcRfUC9o!nZWN3m|FC}m0D)y%VV30UvE=Lq(pFgGNc=k>2(6sj`;j5o-W>nC3AgZi+ATiYLka>XT1~X7=-f!-ru!+hK-<@BX!!P2K_^FNmX3&KKSgFgyGBnz$ z#2RSfbp&*|bw=*bN%u`rBf+G%8;FZ;Cn}gZd0{h!xS1L1yXx*2mB5weSU)rWTP;(h z8*Mno9_!TjUVqOA2q`6|k*nE+(&QWf2J>>ODKW~v>pW<^V$Wo%{XSIGZ`uYtY4JsO zHeJ0kw*kklS8pho;%@&+xdn%aMTmGvC?99Ye3*D{19Pjt^KV#-A7%kFnbp>=eYbZva>9!<^cK zhi3S;(H7%#jAiNla9E=`;#^)`8by3yPQU1I06{>$zs2FpF*hm-TRTu(Rfh#O8r5@v z+1{CY-ba-4iDt`WWz-^>NTZtB`}=5JXqo7Wc0eJud;i_@fJ1oNmT}z=m2e&FKP4;nF`nu$-I{UWA6z#0_6S)&=g=c?dqt^qG={x3YyKh>^ig zMRgF?LRZLaOyG9_4wI2rSzwP2%E*-XoXbEsJ0cjoYiu0XO{T;Nk4IC!Rk2D|;l!q@ zD~daWY166^T^D=hIfoxcDp9qT?-y;s@#8JldqzGh8iOo7#H-w#{(kFmi2Y>(m^zf^ z<#!bjFovxY{+5Wp*a&s*u5wHOBJI*OeQHO zsP0(>lbh}b3>((SZR4Dor6`f#&MX@L&J>>Bz6$vPdd+k^^Lr1zm80ST-QUAYrx@So zk{0u%C5goybX%P2OVlKw%7Xk;K6&SjmSdq?OyQW$Tfgnvat^i;#TZ@6pt0F?y~|NK zZ?@h`ntL!>K%%W9Cca7vaq}y}d4gf)HD2zSMOHfG^9L!-^EaaNg5NI?bVu)EL=iqSda<`}{B*P?V*U~mT@J{ZIm+JiCg~S`{ z_8rm>Z;QI$8ca(lu#R=IVoT_{snr8kf;=z|L3r%T5t@mE@*@U7K|8SaX(I`%pdSAr z820dhEr4UK^YR{O^ziop7i?HI{a>4gBs!f+?spDmt{23$B&5K0q*Mp?raJhE)|%s6 zdti>jY-vujgeLSw6oI$qVi&O&(Z5LlJ5FEJRZG zTX)UUCRV^VKsCqt@?YpN*5UB6T#9dbrjnioLIREb+=!C;*Yn*GCu0RH=NFYLyb9Rr zdQ#8B1|H|n!i5D)4hagRoJ}#cr?j!w_VK7eRww%k&NMP^5%^!`Pf`ZcVcTUl(g zdmbh?AI{{@G6IsUD^NKWzc(~%iO@jHlO)OU;+fQ~f}jK2Sb%d&!-?$XScccdi{zpL zjmMF!`2~9C_n(-;fWC2QTLkO+cWEBaPn~GnAF_l@sB^kguFHP4ssg8#;2?Iuu*X~4 zQ3LMjbMjCEn{;yN!p~~eER!hNng52y^#ksDu6a;N7K{HoYm3y~GFYBgtfQhGZ4|Gu zsC5S{TgwC;v)2z#)!sNtMd*1Rulch z1&+uS0_pmicI(YVbGm1abrQZEByD(B(Fz?#oRK8z>1P%-e#5fi5O&8(-(^pzjE~ho z^MaaY3eZey1!hZ)-Ng>^J2c0?j+@T&LdaHvXelOSu3oBs(5D6Jo_kTOH;+#aGP#pa zy1IA$h{54uvZ8kF)m_K;sf18Y!}y{RwJ>mj}~?Cw{a2xn!3G z&1C`MBOZp?yh=(y#|SumzGWdWUxveSbs1q)@b={N_K@LxZgPuE7x?C-?b<7!{NF+wuR`Z1fkv!M;2IDA zaeQun&U?H-f`3KNpZB;JbqxGckP-(L8Z9XMC>F3m+)f>CY@d_}_R%UpVG0Iz^ZMY# zvZ`oob$p~fB4%Dc3FvjanYJyK1${c0NB1?SP~F7X3)L~+*}68O#e^mhRU@Lumib8? z)moxfm>VbV5m3lUILuM>?b(WN(8c81hvQ~vYb(%x#N`%CT3Fk75DKOI#G&nIE?&@( zkYodPgDJZxe#>d3!&GvyQ zVUtL#Q8A}4K!t0|3=RbV?EMzYcuSWhLuWWh`dVAeqDJzNR3wlCk-XdqD`?rD-6V=n za61BgZ9^$g3f7d;?VRE7rRnRUIMOs-qTqq zAvjhH>H-7*>%5vQeE^Ecu?#8iOtAgPvRFb-o(8U^fo$n(Z242~SZbOHbW=bw`>aC0M zzk5alKAnDFLRf8;JQouad|d@d4k7zvZq!~13(j=~G9mYeeh3LHmK0AYs`@*%0l zbeG!~2zRc{81GwwpOv4tq$@WAL6VHB?5qCztYu`}g{WvO0BId^(n1Yv1)m`Xc>X%C zKF*F+VY_Q8WL$UE3HQOd2uHs)pJO2W$1TheBG3cD4PW);x)5)r2vNYV{kRoXA30FD zhUFZQb#;_xgS)KS0>~oA@qV(ga25ehEyDz3$uV(uW4S z$flsuU{ogx|0lg{SgV8T-Kz5Q{W_T>UgVa%zs3p`?eDe=FTp7J!>Nhl&-)nb5!&83 zYxq{gf}S3ub2Z=37y#%^mnuZ@hP%m##|`r7dGi%^-Wb60pDjAKgZR=B?*@|#UGJOA z)tXJ5#>^Q^S-0i7X{|In(FG%d5takIq)}&ILotA|OKNl06}0Ipsy7L*Yml7U4_TD* z6OC9=W81fcpHn(bpJf7b_G(^>@M=<<+P~OXb4Bn5Rg*h(_Ji3=Snf|Lt+P{QCXk_T zBuAx*PH;p`hCGUWo)i^p7=nt+1rbcbuo{0N6J@#&16HQTn^m;N-=Op`F4q~tl-VF6 z_f@}u5*)e}L#LqGdSm8i?~bsAIsieC$HG2I39<+HXKQ*;121;dDM5Be<#DjB&En>B zzR#$&FS@ik#kd(Y1Al_0X3~%=Lmwc#r1nX4;V&H79%Xid5GBY)Q0;lsZS}hiTPpca z;1916!(;pa?voaVc}p(BTEU`Y+3BjIS_=9Z}&6AR)SA zuKc>}UTZ(_n1tTvfQJAsXS{}qiuaxrlW|Tv(}J-Jm)CRX1G^xcMHn)(y+}@^FlGj` z$Jt?JrIlkD(uEN^olR$>K&c(@wIGB!8X%dkE$wuhdu08R{>QrWYk1+q}#)CrH+;g5CZA-m1C(NceJ-KtbC7=W`D>S&uFTMzB?>EL=|QQd$yYyxyv&cW z(M8vv$sd&a1(t&L*TZ+sdRWu1uZKOp*I$OG-GQB8S|+a0>4vsZW1(^)qi;)Xb`r#S z9TIINB>F*i2a=Az`9dGWVplWUjO)2_-n$y??vDndQ_bO~Z^haPeeJ0sBUZa$WE3d* zrFe6vU7I%}!4>hxg9VL|dNCK7cFU8cG6sK6=;wxBy0UGZwrbn-K5`!&C)W4rCD>sr zKK7jDz357PBl7MpyfH$z{|x6r=f5YjC*d8WeLs@W!QIMk?LSEBb#no8&6rN^{pAl4 ziKT4Hm4&T$;=Aw|q|pN`GZ#*+L`g%=ESDhkv5CR*nLo8KToj~c9i^&tb~>s)t>OR% zMFB{UYx@Bax=cbFgMr8kI6o%>9zIIfk0U$_HoAmD1#NL*u*D_tT8)G1D@7^Aw`U|s zRH;%mf`qK&U5U?sf$=00CzHKD{ARFC22?ZyGYvng&U&gSOKx%eyOkmT_||Jjk@Lt< zKh3yl_3(^-*&ir$-VOi%y?H|qop_W5tNY+|TP?2uL%IFbtW$R`Am|IA0r$s$&efAli*>%7Mup$a&Cgw@mtg%C?N;wU6H-9)NEBffFop3_6PUH^K=f;wA4PG;nGRODJ7Dfw zj!xv*me;oIhK)a<&eb~ZNO_!dh+`mu&&CSIE!Q=_j`kAc7R0w7ix1m7XE5=E^BKNQ zx2_2rJP0m*?L*aYa#-k2pQJMyY+7~;|fg-c$IEt3a z9lHf8MbxsY_c2%ModkU~I4V!#^ks^Do7-3fLcd}SDjB&5CM}{#+{#SK-F~V8w5xU8 z83C2UxUIe*rbSpp$9?*e19e)Goct*XFC10jpgwYqMwEinUloFpdC(vK<3p8Eud`sm z&~CuwL2oZ)HXhicS(6&+Hvma_BPVjX$~TO`jn>G&Z7i=e)Y5?kG4mu*<#WnivYYk0 ze5VXki0*p5ATnyfl%^4>>Lz)L?;hedOB%}9#CQfo z?NjKf2(4*96Od6C`!__%++-=n8Rsyrk3@*}rUBjx9gTbZ|pcK zXX|6{o_}sDF5l(y%N@I4mnq03btn?_b9YWn^wO!KB0gA|7A3JwB(pRL&4g_0I^ zR1~PPF*Pn_WX#Xkcq`ld)X7=9MDPq1{#P}qG5g;x#t4qmb@)n21K z_#PR3e1{vX8K79DBJg@LITLB|Hbg$!y`7vsa~9fln5vqJ!Qw?KZ%Jnhu(~T`nW0>a z?lJ%oK#qJw267E%Pw}OYDH8eh`(K!Y7g{fHl8$P3*9Y><{hhveUoKx~_GT4{|5s%d zZe7alpTA_!XRPJbdnIs$;WnNf#%Xff@|9B(%+hYdx)l~h3^j8^61cYquIzi2usUkEm2OgX}zARpt z3;Wn^J}SGQQWz`$-vl#843g(^*vwZ37<+30h?u!5Zt#r#hXHK)MR1CE**(=ZCE8H1 z9Z~MP#HQNe}&j4MQnZgvxZ*(v~b?3 z3yi3Sn*T3bZ_ZZMV$q&y$}zFM!j|HT{L2KmlG8EjS=j_S1|vn$)y7!}O?=b9Mh0H}>ZnOV&}&gzxz`A2y{Mf;t+R?n+a6_8 z6pa4tC2bOO-T}~OmbgFzs|o%kJTG@b=B*G<$ALhY2B6omvq86ZQ0M`~uZMveRqa=qvB z>e1s4r{#??tvHS$J~k=?3xv^92yIuj*&vfjxlrT{ALSmq`xf6z*%QSwWX0!mv#7bX zHg_sC%ceH5)+AeW^CJl#S(Cs_p0Wc+h6s+exc)r*H5mqJ#Iz2oaXG5#$I40SmICj# z0)gPJAx}p(X0q0{D)_In@e0{o%L~P69U``Widp?B+P;CFkem7v|M^+6(W6c2%-yx! zUo_nIHIo$$wbreRi&n}Y?!*aG>msG+%+eO`->yehOK36EUAhbb9mfHA>JU~HKm3}c z1_OontSo!?e)iS-REdk((uvbq!@~@OzOK|OS-yFi&ZqDvOu^MDh_YSb`l39qZ6D88 zlugDwP{676tZ?Z|tlCWj1sTg4fqy&BG_wq(YQQaSA+y}KCq|XXBgI{A znfoBrRX2^}g- zPSX7Q*0H}0@e3h!&KW+tO<3O~2a{TEodO~VXev63GkX)EPI@oEq*j(jC+_}rt!-|n zS3c)#DxYAK53x^vZ&35a9hGZ$o4f0{YqNeuTH<7aM;H1m(2f^UhdmWj_$D>g?8;8# z{5KqB=jD&6QpD4K^I$XdRms_dmLNIp-PKurF*9n5$6{*5@u&`wWwMk30$=z2`=?s4 zApCIG0^uYcXJT2>K*FZR)v-h_3H+YN8S{T-3E;YksrqUG81v0V_Wk1icm1AZ8eXqD z+g8KYT^AFx#xg0e0FK_4cF(J4MH$Lo$LO_V%q$`BG+HJHPTXyAVnzygzFv*%9J4$K zBD}7d(dIaZJ z!qtkSC*m4R0x-dx#>2{7nM^-`H#%|4*`z>0YbpnrnE@)-)bqtuG%$O*0rQM?y&S}b zZ6L_HHsQ!c#rnRMIGf78hA&Sg&!G6VpC8ozCb=drdi5n65-mS7JlF`zCq6ND2n?w> zwn_qU990H@VNvC22zpem7@@{fbaawH87_3H|G#DMs`tO-eg~Qn_{swwJ83x-cjinv z?n7@^?&kBkYd-NbnBEdI1{oSxhFWZA;ajV~i8&YuM-e3ghbfi@Rb!?QgjTQ8S7XT{ zBo=grGU9t*-f94;_L%1 zZk^-Cp$|mTt(hHqtzs0H`iY)|ur`FkuqWfUs_~3Cdm|F8mU70z^A?Z(*kpbN?~{1v zich@2Qa(%v{|zV#rZ}1w51Zzg7OPlOMN0i7qQ6X&zwJNM#9na57A2Vh;rg}17~)Y$ z6TQdvmx6R3c4bUglCCl-P=UGCY2=_;#UW&BIF}5Da;VLl7%HC9>6TpqwG(5SB*NHb zCRI7~$krKk@9gubH_N&7Z4t!k1v@(Oh*R%PePL0mjZC zG`4#YxeaxAk8VSI6bOm8KJ#WM6bFO(ZpnI6N0{VLw%OfJyc-fC0<;3~SWPar+1YKB zf_RzySdPGn4T8#1%*``F_O-}k^Zbu%v(&+p%vl=V$KNo4Bd%J!BvJQxl_$9K=A&np zAz&^DxZ{?4(@^nIhT2O)W;{y>Go?;@opL&@?(ye(JHytoZN)R@%Qw4w^I>EW^U z#drohfk*aRUaf+DkXE2(2$4mzXYkB&P(7J5glSLPXR^lgf9P*55)c9T!c~sm6jj73R?JGCV}{PT&D%KE%G-tKC`G%qNg(1- zFA0is$7azh2eE7zjJ#y|(>Au-i453o%yaQs&?#83C*v$eEYyief-(g2G2Rg$9Ivp5 zNo1Fl%P;LKDz&1>wz2QJiH2CdqoyM@%|K<{131-GPX>Cr z%B1%j*xMpQwUKe9qdjIozme$K%9%mKEp;MS#G`;St#mE+%Ja1F-J~1zyD=RIY{}MMxs|yHRny~A5qgj*)-_>K@vyZ? zsi^v}0)J!oX0Jr>G19NR-7th0;(nOqX**ah3J3tA0BFTp%4=+tVDQw!D%{w zi$5(Ffhi39UnMkHcnqNc?!dBO_cURb;A}6Su z-eoY2qFD!{0pJ$ers2{%IwmZvsG25EvI9Rw^Ki*n2xgZkZI{BG$-#01-ayEDXtbKd7 zyrSBxk=kZN5McKXR+js>Z@vJjv-fDa4yS3jFb23gfa7<4dl$HG|4i{|5(n7J*Ug#B z@mU@(p5q*590j{8JI-s7wX^lvn>%3wG$WFjf z=`E~mJIOMz5q%9DFopm@R{r5A5gd~@Ui(|hfTpdlRlqklF@~vYVb8F070yTDYE36In&O;QvrcTNy6 zWyq2i5aZ$rA+`gZW=BD3c|MeEtr+ZCTA&sGq$Cg*m0Ll@M+K+DXprJbSc3Y9a!8Fh zuP|hUdWy*S8-M@16O)68WT*z8?ph4Pb7;o}x2`ydY$-fk8l#eJmLi6heHvSR!weXe zWL*yPczv8umREX}Ik1u2--ofU^AZyd+PE-wOpE&NUn+ za=;n_{;U_>VXA2lR6YI!ts0^T)lzpPE(x?IZHiXmufJ7v{ecDY{t )G^!untKcaBu>0ya- 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 literal 0 HcmV?d00001 diff --git a/kernel/kernel/pspec.xml b/kernel/kernel/pspec.xml index 84b424a1..5789cb04 100644 --- a/kernel/kernel/pspec.xml +++ b/kernel/kernel/pspec.xml @@ -33,10 +33,10 @@ - patches/linux/patch-5.15.41.xz + patches/linux/patch-5.15.50.xz - patches/aufs5/aufs5.15.36-20220509.patch + patches/aufs5/aufs5.15.41-20220530.patch patches/aufs5/aufs5-base.patch patches/aufs5/aufs5-kbuild.patch patches/aufs5/aufs5-loopback.patch @@ -161,6 +161,17 @@ + + 2022-06-25 + 5.15.50 + Version bump. + security + + systemRestart + + Mustafa Cinasal + muscnsl@gmail.com + 2022-05-22 5.15.41