X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=kernel-aufs5.patch;h=7d3c839b935ccbf2c1fee7ab494ae497418f42dd;hb=e9f93ec2a0c89676888002ee85bff1d66713740b;hp=df36e30835b2334f3cc0b2d46e7cb3b1046fc4b4;hpb=9f00928d50d1d3e832a34ad7ae8abb4c45e42f9a;p=packages%2Fkernel.git diff --git a/kernel-aufs5.patch b/kernel-aufs5.patch index df36e308..7d3c839b 100644 --- a/kernel-aufs5.patch +++ b/kernel-aufs5.patch @@ -1,35 +1,35 @@ SPDX-License-Identifier: GPL-2.0 -aufs5.x-rcN kbuild patch +aufs5.4 kbuild patch diff --git a/fs/Kconfig b/fs/Kconfig -index bfb1c6095c7a..bddba5bb307e 100644 +index 2501e6f1f965..38a6a5991da9 100644 --- a/fs/Kconfig +++ b/fs/Kconfig -@@ -261,6 +261,7 @@ source "fs/romfs/Kconfig" - source "fs/pstore/Kconfig" +@@ -264,6 +264,7 @@ source "fs/pstore/Kconfig" source "fs/sysv/Kconfig" source "fs/ufs/Kconfig" + source "fs/erofs/Kconfig" +source "fs/aufs/Kconfig" endif # MISC_FILESYSTEMS diff --git a/fs/Makefile b/fs/Makefile -index d60089fd689b..924c16a40b00 100644 +index 14231b4cf383..8765e191ebe0 100644 --- a/fs/Makefile +++ b/fs/Makefile -@@ -130,3 +130,4 @@ obj-$(CONFIG_F2FS_FS) += f2fs/ - obj-$(CONFIG_CEPH_FS) += ceph/ +@@ -132,3 +132,4 @@ obj-$(CONFIG_CEPH_FS) += ceph/ obj-$(CONFIG_PSTORE) += pstore/ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ + obj-$(CONFIG_EROFS_FS) += erofs/ +obj-$(CONFIG_AUFS_FS) += aufs/ SPDX-License-Identifier: GPL-2.0 -aufs5.x-rcN base patch +aufs5.4 base patch diff --git a/MAINTAINERS b/MAINTAINERS -index a50e97a63bc8..bd7c76319a85 100644 +index 9d3a5c54a41d..f33398b47c42 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -2822,6 +2822,19 @@ F: include/linux/audit.h +@@ -2832,6 +2832,19 @@ F: include/linux/audit.h F: include/uapi/linux/audit.h F: kernel/audit* @@ -50,7 +50,7 @@ index a50e97a63bc8..bd7c76319a85 100644 M: Miguel Ojeda Sandonis S: Maintained diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index ab7ca5989097..80d06084b043 100644 +index f6f77eaa7217..5e094699215e 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -738,6 +738,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, @@ -92,7 +92,7 @@ index e88cf0554e65..7ce4ccf5a51c 100644 { struct dentry *this_parent; diff --git a/fs/fcntl.c b/fs/fcntl.c -index 3d40771e8e7c..d62303c5472a 100644 +index 3d40771e8e7c..12dd73930961 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c @@ -32,7 +32,7 @@ @@ -100,7 +100,7 @@ index 3d40771e8e7c..d62303c5472a 100644 #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) -static int setfl(int fd, struct file * filp, unsigned long arg) -+int setfl(int fd, struct file * filp, unsigned long arg) ++int setfl(int fd, struct file *filp, unsigned long arg) { struct inode * inode = file_inode(filp); int error = 0; @@ -114,10 +114,10 @@ index 3d40771e8e7c..d62303c5472a 100644 return error; diff --git a/fs/inode.c b/fs/inode.c -index 0f1e3b563c47..43df8452f97d 100644 +index fef457a42882..aaeacde398ee 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -1670,7 +1670,7 @@ EXPORT_SYMBOL(generic_update_time); +@@ -1673,7 +1673,7 @@ EXPORT_SYMBOL(generic_update_time); * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ @@ -127,7 +127,7 @@ index 0f1e3b563c47..43df8452f97d 100644 int (*update_time)(struct inode *, struct timespec64 *, int); diff --git a/fs/namespace.c b/fs/namespace.c -index d28d30b13043..34c8093ddb1d 100644 +index 2adfe7b166a3..0f7e57e5f4b7 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -776,6 +776,12 @@ static inline int check_mnt(struct mount *mnt) @@ -144,7 +144,7 @@ index d28d30b13043..34c8093ddb1d 100644 * vfsmount lock must be held for write */ diff --git a/fs/read_write.c b/fs/read_write.c -index 5bbf587f5bc1..3265bb84f152 100644 +index 5bbf587f5bc1..fa9b3994b34c 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -498,6 +498,28 @@ static ssize_t __vfs_write(struct file *file, const char __user *p, @@ -159,7 +159,7 @@ index 5bbf587f5bc1..3265bb84f152 100644 + return fop->read; + if (fop->read_iter) + return new_sync_read; -+ return ERR_PTR(-ENOSYS); ++ return ERR_PTR(-ENOSYS); /* doesn't have ->read(|_iter)() op */ +} + +vfs_writef_t vfs_writef(struct file *file) @@ -170,7 +170,7 @@ index 5bbf587f5bc1..3265bb84f152 100644 + return fop->write; + if (fop->write_iter) + return new_sync_write; -+ return ERR_PTR(-ENOSYS); ++ return ERR_PTR(-ENOSYS); /* doesn't have ->write(|_iter)() op */ +} + ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos) @@ -218,18 +218,18 @@ index 4d1ff010bc5a..457f4e4a5cc1 100644 if (wait) sync_inodes_sb(sb); diff --git a/include/linux/fs.h b/include/linux/fs.h -index 997a530ff4e9..3dbec51c2037 100644 +index e0d909d35763..381a13995011 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1331,6 +1331,7 @@ extern void fasync_free(struct fasync_struct *); +@@ -1349,6 +1349,7 @@ extern void fasync_free(struct fasync_struct *); /* can be called from interrupts */ extern void kill_fasync(struct fasync_struct **, int, int); -+extern int setfl(int fd, struct file * filp, unsigned long arg); ++extern int setfl(int fd, struct file *filp, unsigned long arg); extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); -@@ -1810,6 +1811,7 @@ struct file_operations { +@@ -1835,6 +1836,7 @@ struct file_operations { ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); @@ -237,7 +237,7 @@ index 997a530ff4e9..3dbec51c2037 100644 int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -1880,6 +1882,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, +@@ -1905,6 +1907,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, struct iovec *fast_pointer, struct iovec **ret_pointer); @@ -250,7 +250,7 @@ index 997a530ff4e9..3dbec51c2037 100644 extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); -@@ -2298,6 +2306,7 @@ extern int current_umask(void); +@@ -2325,6 +2333,7 @@ extern int current_umask(void); extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); @@ -258,7 +258,7 @@ index 997a530ff4e9..3dbec51c2037 100644 /* /sys/fs */ extern struct kobject *fs_kobj; -@@ -2586,6 +2595,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) +@@ -2613,6 +2622,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) return false; } #endif @@ -267,10 +267,10 @@ index 997a530ff4e9..3dbec51c2037 100644 extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h -index 0b0d7259276d..12d18e180348 100644 +index b8a835fd611b..f452521f2e05 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h -@@ -334,6 +334,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, +@@ -331,6 +331,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, return lock->key == key; } @@ -279,7 +279,7 @@ index 0b0d7259276d..12d18e180348 100644 /* * Acquire a lock. * -@@ -476,6 +478,7 @@ struct lockdep_map { }; +@@ -473,6 +475,7 @@ struct lockdep_map { }; #define lockdep_depth(tsk) (0) @@ -322,7 +322,7 @@ index 74b4911ac16d..19789fbea567 100644 + unsigned int flags); #endif diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index 4861cf8e274b..ec87ccf82025 100644 +index 233459c03b5a..407c08ac8ac8 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -153,7 +153,7 @@ static @@ -343,7 +343,7 @@ index 4861cf8e274b..ec87ccf82025 100644 #ifdef CONFIG_LOCK_STAT static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); SPDX-License-Identifier: GPL-2.0 -aufs5.x-rcN mmap patch +aufs5.4 mmap patch diff --git a/fs/proc/base.c b/fs/proc/base.c index ebea9501afb8..dc7edc5f7267 100644 @@ -375,7 +375,7 @@ index 14c2badb8fd9..65afe5287e43 100644 ino = inode->i_ino; } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 731642e0f5a0..e8d6259de65b 100644 +index 9442631fd4af..1fa8a5fcdeee 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -309,7 +309,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma) @@ -390,15 +390,15 @@ index 731642e0f5a0..e8d6259de65b 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1807,7 +1810,7 @@ static int show_numa_map(struct seq_file *m, void *v) +@@ -1819,7 +1822,7 @@ static int show_numa_map(struct seq_file *m, void *v) struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; - struct file *file = vma->vm_file; + struct file *file = vma_pr_or_file(vma); struct mm_struct *mm = vma->vm_mm; - struct mm_walk walk = { - .hugetlb_entry = gather_hugetlb_stats, + struct mempolicy *pol; + char buffer[64]; diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c index 7907e6419e57..d17209cf52bc 100644 --- a/fs/proc/task_nommu.c @@ -416,10 +416,10 @@ index 7907e6419e57..d17209cf52bc 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 0334ca97c584..3bdae823daee 100644 +index a2adf95b3f9c..70e1dccc1283 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -1538,6 +1538,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, +@@ -1510,6 +1510,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, unmap_mapping_range(mapping, holebegin, holelen, 0); } @@ -449,10 +449,10 @@ index 0334ca97c584..3bdae823daee 100644 void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 6a7a1083b6fb..461db8843e32 100644 +index 270aa8fd2800..33848c2165e2 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -262,6 +262,7 @@ struct vm_region { +@@ -267,6 +267,7 @@ struct vm_region { unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ @@ -460,7 +460,7 @@ index 6a7a1083b6fb..461db8843e32 100644 int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for -@@ -336,6 +337,7 @@ struct vm_area_struct { +@@ -341,6 +342,7 @@ struct vm_area_struct { unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units */ struct file * vm_file; /* File we map to (can be NULL). */ @@ -469,10 +469,10 @@ index 6a7a1083b6fb..461db8843e32 100644 #ifdef CONFIG_SWAP diff --git a/kernel/fork.c b/kernel/fork.c -index 541fd805fb88..3208fcf3b3c9 100644 +index 13b38794efb5..ede7225bae95 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -553,7 +553,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, +@@ -562,7 +562,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; @@ -482,10 +482,10 @@ index 541fd805fb88..3208fcf3b3c9 100644 atomic_dec(&inode->i_writecount); i_mmap_lock_write(mapping); diff --git a/mm/Makefile b/mm/Makefile -index d0b295c3b764..6156cd3d1ab0 100644 +index d996846697ef..fbadb91df4e4 100644 --- a/mm/Makefile +++ b/mm/Makefile -@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ +@@ -42,7 +42,7 @@ obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ mm_init.o mmu_context.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ @@ -495,10 +495,10 @@ index d0b295c3b764..6156cd3d1ab0 100644 # Give 'page_alloc' its own module-parameter namespace page-alloc-y := page_alloc.o diff --git a/mm/filemap.c b/mm/filemap.c -index d0cf700bf201..5cac93e7bf67 100644 +index 85b7d087eb45..115275a4a0e2 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -2721,7 +2721,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) +@@ -2696,7 +2696,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) vm_fault_t ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); @@ -508,7 +508,7 @@ index d0cf700bf201..5cac93e7bf67 100644 if (page->mapping != inode->i_mapping) { unlock_page(page); diff --git a/mm/mmap.c b/mm/mmap.c -index 7e8c3e8ae75f..d8a903f61262 100644 +index a7d8c84d19b7..9c350dc3f570 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -182,7 +182,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) @@ -520,7 +520,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 mpol_put(vma_policy(vma)); vm_area_free(vma); return next; -@@ -931,7 +931,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, +@@ -940,7 +940,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); @@ -529,7 +529,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 } if (next->anon_vma) anon_vma_merge(vma, next); -@@ -1847,8 +1847,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1865,8 +1865,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr, return addr; unmap_and_free_vma: @@ -539,7 +539,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 /* Undo any partial mapping done by a device driver. */ unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); -@@ -2680,7 +2680,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2695,7 +2695,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, goto out_free_mpol; if (new->vm_file) @@ -548,7 +548,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); -@@ -2699,7 +2699,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2714,7 +2714,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) @@ -557,7 +557,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); -@@ -2890,7 +2890,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2906,7 +2906,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; @@ -566,7 +566,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", current->comm, current->pid); -@@ -2965,10 +2965,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2981,10 +2981,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, } } @@ -595,7 +595,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 out: up_write(&mm->mmap_sem); if (populate) -@@ -3258,7 +3275,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -3274,7 +3291,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) @@ -605,7 +605,7 @@ index 7e8c3e8ae75f..d8a903f61262 100644 new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); diff --git a/mm/nommu.c b/mm/nommu.c -index fed1b6e9c89b..0d43b248ed54 100644 +index 99b7ec318824..de5b6cd162fe 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -552,7 +552,7 @@ static void __put_nommu_region(struct vm_region *region) @@ -650,7 +650,7 @@ index fed1b6e9c89b..0d43b248ed54 100644 diff --git a/mm/prfile.c b/mm/prfile.c new file mode 100644 -index 000000000000..024cdcfae1b1 +index 000000000000..00d51187c325 --- /dev/null +++ b/mm/prfile.c @@ -0,0 +1,86 @@ @@ -662,7 +662,7 @@ index 000000000000..024cdcfae1b1 + * + * See Documentation/filesystems/aufs/design/06mmap.txt + * -+ * Copyright (c) 2014-2019 Junjro R. Okajima ++ * Copyright (c) 2014-2020 Junjro R. Okajima + * Copyright (c) 2014 Ian Campbell + */ + @@ -741,7 +741,7 @@ index 000000000000..024cdcfae1b1 +} +#endif /* !CONFIG_MMU */ SPDX-License-Identifier: GPL-2.0 -aufs5.x-rcN standalone patch +aufs5.4 standalone patch diff --git a/fs/dcache.c b/fs/dcache.c index 7ce4ccf5a51c..00d7e6a08026 100644 @@ -764,7 +764,7 @@ index 7ce4ccf5a51c..00d7e6a08026 100644 /** * d_ancestor - search for an ancestor diff --git a/fs/exec.c b/fs/exec.c -index f7f6a140856a..1a740f3c42ba 100644 +index 555e93c7dec8..dad39c6b3878 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -110,6 +110,7 @@ bool path_noexec(const struct path *path) @@ -776,10 +776,10 @@ index f7f6a140856a..1a740f3c42ba 100644 #ifdef CONFIG_USELIB /* diff --git a/fs/fcntl.c b/fs/fcntl.c -index d62303c5472a..d4ad34463848 100644 +index 12dd73930961..0468c845190f 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c -@@ -85,6 +85,7 @@ int setfl(int fd, struct file * filp, unsigned long arg) +@@ -85,6 +85,7 @@ int setfl(int fd, struct file *filp, unsigned long arg) out: return error; } @@ -788,7 +788,7 @@ index d62303c5472a..d4ad34463848 100644 static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, int force) diff --git a/fs/file_table.c b/fs/file_table.c -index b07b53f24ff5..34b9bbf4c556 100644 +index 30d55c9a1744..34b9bbf4c556 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -162,6 +162,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred) @@ -799,15 +799,7 @@ index b07b53f24ff5..34b9bbf4c556 100644 /* * Variant of alloc_empty_file() that doesn't check and modify nr_files. -@@ -327,6 +328,7 @@ void flush_delayed_fput(void) - { - delayed_fput(NULL); - } -+EXPORT_SYMBOL_GPL(flush_delayed_fput); - - static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput); - -@@ -374,6 +376,7 @@ void __fput_sync(struct file *file) +@@ -375,6 +376,7 @@ void __fput_sync(struct file *file) } EXPORT_SYMBOL(fput); @@ -816,10 +808,10 @@ index b07b53f24ff5..34b9bbf4c556 100644 void __init files_init(void) { diff --git a/fs/inode.c b/fs/inode.c -index 43df8452f97d..8a5c14630ff0 100644 +index aaeacde398ee..5be87f2d3828 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -1679,6 +1679,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags) +@@ -1682,6 +1682,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags) return update_time(inode, time, flags); } @@ -828,7 +820,7 @@ index 43df8452f97d..8a5c14630ff0 100644 /** * touch_atime - update the access time diff --git a/fs/namespace.c b/fs/namespace.c -index 34c8093ddb1d..2b64af58b643 100644 +index 0f7e57e5f4b7..516c2f397d33 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -431,6 +431,7 @@ void __mnt_drop_write(struct vfsmount *mnt) @@ -847,7 +839,7 @@ index 34c8093ddb1d..2b64af58b643 100644 /* * vfsmount lock must be held for write -@@ -1900,6 +1902,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, +@@ -1903,6 +1905,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, } return 0; } @@ -856,7 +848,7 @@ index 34c8093ddb1d..2b64af58b643 100644 static void lock_mnt_tree(struct mount *mnt) { diff --git a/fs/notify/group.c b/fs/notify/group.c -index 0391190305cc..0b9f7f6d8390 100644 +index 133f723aca07..0b9f7f6d8390 100644 --- a/fs/notify/group.c +++ b/fs/notify/group.c @@ -99,6 +99,7 @@ void fsnotify_get_group(struct fsnotify_group *group) @@ -867,60 +859,8 @@ index 0391190305cc..0b9f7f6d8390 100644 /* * Drop a reference to a group. Free it if it's through. -@@ -108,6 +109,7 @@ void fsnotify_put_group(struct fsnotify_group *group) - if (refcount_dec_and_test(&group->refcnt)) - fsnotify_final_destroy_group(group); - } -+EXPORT_SYMBOL_GPL(fsnotify_put_group); - - /* - * Create a new fsnotify_group and hold a reference for the group returned. -@@ -137,6 +139,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops) - - return group; - } -+EXPORT_SYMBOL_GPL(fsnotify_alloc_group); - - int fsnotify_fasync(int fd, struct file *file, int on) - { -diff --git a/fs/notify/mark.c b/fs/notify/mark.c -index 99ddd126f6f0..2154d69a2c7a 100644 ---- a/fs/notify/mark.c -+++ b/fs/notify/mark.c -@@ -276,6 +276,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) - queue_delayed_work(system_unbound_wq, &reaper_work, - FSNOTIFY_REAPER_DELAY); - } -+EXPORT_SYMBOL_GPL(fsnotify_put_mark); - - /* - * Get mark reference when we found the mark via lockless traversal of object -@@ -430,6 +431,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark, - mutex_unlock(&group->mark_mutex); - fsnotify_free_mark(mark); - } -+EXPORT_SYMBOL_GPL(fsnotify_destroy_mark); - - /* - * Sorting function for lists of fsnotify marks. -@@ -685,6 +687,7 @@ int fsnotify_add_mark(struct fsnotify_mark *mark, fsnotify_connp_t *connp, - mutex_unlock(&group->mark_mutex); - return ret; - } -+EXPORT_SYMBOL_GPL(fsnotify_add_mark); - - /* - * Given a list of marks, find the mark associated with given group. If found -@@ -809,6 +812,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, - mark->group = group; - WRITE_ONCE(mark->connector, NULL); - } -+EXPORT_SYMBOL_GPL(fsnotify_init_mark); - - /* - * Destroy all marks in destroy_list, waits for SRCU period to finish before diff --git a/fs/open.c b/fs/open.c -index a59abe3c669a..78809163ba03 100644 +index b62f5c0923a8..89af4b9c7319 100644 --- a/fs/open.c +++ b/fs/open.c @@ -65,6 +65,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, @@ -932,7 +872,7 @@ index a59abe3c669a..78809163ba03 100644 long vfs_truncate(const struct path *path, loff_t length) { diff --git a/fs/read_write.c b/fs/read_write.c -index 3265bb84f152..5b2dbddb0efe 100644 +index fa9b3994b34c..eb0e2c6ebaff 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -468,6 +468,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) @@ -945,7 +885,7 @@ index 3265bb84f152..5b2dbddb0efe 100644 { @@ -508,6 +509,7 @@ vfs_readf_t vfs_readf(struct file *file) return new_sync_read; - return ERR_PTR(-ENOSYS); + return ERR_PTR(-ENOSYS); /* doesn't have ->read(|_iter)() op */ } +EXPORT_SYMBOL_GPL(vfs_readf); @@ -953,7 +893,7 @@ index 3265bb84f152..5b2dbddb0efe 100644 { @@ -519,6 +521,7 @@ vfs_writef_t vfs_writef(struct file *file) return new_sync_write; - return ERR_PTR(-ENOSYS); + return ERR_PTR(-ENOSYS); /* doesn't have ->write(|_iter)() op */ } +EXPORT_SYMBOL_GPL(vfs_writef); @@ -1012,7 +952,7 @@ index 90dd78f0eb27..40b01dd1b14a 100644 ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index ec87ccf82025..739d1c8a81f5 100644 +index 407c08ac8ac8..d7f71842f8a2 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -174,6 +174,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) @@ -1042,10 +982,10 @@ index 725674f3276d..83f6494c52a2 100644 } +EXPORT_SYMBOL_GPL(__devcgroup_check_permission); diff --git a/security/security.c b/security/security.c -index 250ee2d76406..2765042d4846 100644 +index 1bc000f834e2..306f2c9f7ee2 100644 --- a/security/security.c +++ b/security/security.c -@@ -996,6 +996,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) +@@ -1036,6 +1036,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } @@ -1053,7 +993,7 @@ index 250ee2d76406..2765042d4846 100644 int security_path_unlink(const struct path *dir, struct dentry *dentry) { -@@ -1012,6 +1013,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, +@@ -1052,6 +1053,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } @@ -1061,7 +1001,7 @@ index 250ee2d76406..2765042d4846 100644 int security_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry) -@@ -1020,6 +1022,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, +@@ -1060,6 +1062,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } @@ -1069,7 +1009,7 @@ index 250ee2d76406..2765042d4846 100644 int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, -@@ -1047,6 +1050,7 @@ int security_path_truncate(const struct path *path) +@@ -1087,6 +1090,7 @@ int security_path_truncate(const struct path *path) return 0; return call_int_hook(path_truncate, 0, path); } @@ -1077,7 +1017,7 @@ index 250ee2d76406..2765042d4846 100644 int security_path_chmod(const struct path *path, umode_t mode) { -@@ -1054,6 +1058,7 @@ int security_path_chmod(const struct path *path, umode_t mode) +@@ -1094,6 +1098,7 @@ int security_path_chmod(const struct path *path, umode_t mode) return 0; return call_int_hook(path_chmod, 0, path, mode); } @@ -1085,7 +1025,7 @@ index 250ee2d76406..2765042d4846 100644 int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) { -@@ -1061,6 +1066,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) +@@ -1101,6 +1106,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) return 0; return call_int_hook(path_chown, 0, path, uid, gid); } @@ -1093,7 +1033,7 @@ index 250ee2d76406..2765042d4846 100644 int security_path_chroot(const struct path *path) { -@@ -1161,6 +1167,7 @@ int security_inode_permission(struct inode *inode, int mask) +@@ -1201,6 +1207,7 @@ int security_inode_permission(struct inode *inode, int mask) return 0; return call_int_hook(inode_permission, 0, inode, mask); } @@ -1101,7 +1041,7 @@ index 250ee2d76406..2765042d4846 100644 int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { -@@ -1338,6 +1345,7 @@ int security_file_permission(struct file *file, int mask) +@@ -1378,6 +1385,7 @@ int security_file_permission(struct file *file, int mask) return fsnotify_perm(file, mask); } @@ -1205,10 +1145,10 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentat + will be empty. About XINO files, see the aufs manual. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt linux/Documentation/filesystems/aufs/design/01intro.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/01intro.txt 2019-07-11 15:42:14.455570938 +0200 ++++ linux/Documentation/filesystems/aufs/design/01intro.txt 2020-01-27 10:57:18.162204582 +0100 @@ -0,0 +1,171 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -1380,10 +1320,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt lin +about it. But currently I have implemented it in kernel space. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt linux/Documentation/filesystems/aufs/design/02struct.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/02struct.txt 2019-07-11 15:42:14.455570938 +0200 ++++ linux/Documentation/filesystems/aufs/design/02struct.txt 2020-01-27 10:57:18.162204582 +0100 @@ -0,0 +1,258 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -1642,10 +1582,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt li +For this purpose, use "aumvdown" command in aufs-util.git. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt linux/Documentation/filesystems/aufs/design/03atomic_open.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2020-01-27 10:57:18.162204582 +0100 @@ -0,0 +1,85 @@ + -+# Copyright (C) 2015-2019 Junjiro R. Okajima ++# Copyright (C) 2015-2020 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 @@ -1731,10 +1671,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.t + be implemented in aufs, but not all I am afraid. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt linux/Documentation/filesystems/aufs/design/03lookup.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,113 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -1848,10 +1788,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt li + by over-mounting something (or another method). diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt linux/Documentation/filesystems/aufs/design/04branch.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/04branch.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/04branch.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,74 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -1926,10 +1866,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt li + same named entry on the upper branch. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt linux/Documentation/filesystems/aufs/design/05wbr_policy.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,64 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -2029,10 +1969,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot li +} diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt linux/Documentation/filesystems/aufs/design/06dirren.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06dirren.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/06dirren.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,102 @@ + -+# Copyright (C) 2017-2019 Junjiro R. Okajima ++# Copyright (C) 2017-2020 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 @@ -2135,10 +2075,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt li +equivalen to udba=reval case. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linux/Documentation/filesystems/aufs/design/06fhsm.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,120 @@ + -+# Copyright (C) 2011-2019 Junjiro R. Okajima ++# Copyright (C) 2011-2020 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 @@ -2259,10 +2199,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linu +should restore the original file state after an error happens. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linux/Documentation/filesystems/aufs/design/06mmap.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,72 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -2335,10 +2275,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linu +I have to give up this "looks-smater" approach. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt linux/Documentation/filesystems/aufs/design/06xattr.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,96 @@ + -+# Copyright (C) 2014-2019 Junjiro R. Okajima ++# Copyright (C) 2014-2020 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 @@ -2435,10 +2375,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt lin +now, aufs implements the branch attributes to ignore the error. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt linux/Documentation/filesystems/aufs/design/07export.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/07export.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/07export.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,58 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -2497,10 +2437,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt li + lookup_one_len(), vfs_getattr(), encode_fh() and others. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linux/Documentation/filesystems/aufs/design/08shwh.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,52 @@ + -+# Copyright (C) 2005-2019 Junjiro R. Okajima ++# Copyright (C) 2005-2020 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 @@ -2553,10 +2493,10 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linu +initramfs will use it to replace the old one at the next boot. diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt linux/Documentation/filesystems/aufs/design/10dynop.txt --- /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2019-07-11 15:42:14.458904362 +0200 ++++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,47 @@ + -+# Copyright (C) 2010-2019 Junjiro R. Okajima ++# Copyright (C) 2010-2020 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 @@ -2604,8 +2544,8 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt lin +regular files only. diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documentation/filesystems/aufs/README --- /usr/share/empty/Documentation/filesystems/aufs/README 1970-01-01 01:00:00.000000000 +0100 -+++ linux/Documentation/filesystems/aufs/README 2019-07-11 15:42:14.455570938 +0200 -@@ -0,0 +1,399 @@ ++++ linux/Documentation/filesystems/aufs/README 2020-01-23 09:59:36.748660743 +0100 +@@ -0,0 +1,401 @@ + +Aufs5 -- advanced multi layered unification filesystem version 5.x +http://aufs.sf.net @@ -2880,7 +2820,8 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta + 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 apply this debug patch to expand several constant values. -+ If don't know what LOCKDEP is, then you don't have apply this patch. ++ If you don't know what LOCKDEP is, then you don't have apply this ++ patch. + + +4. Usage @@ -2930,6 +2871,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta + 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 @@ -3007,11 +2949,11 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta +# End: ; diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h --- /usr/share/empty/fs/aufs/aufs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/aufs.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/aufs.h 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -3073,11 +3015,11 @@ diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h +#endif /* __AUFS_H__ */ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c --- /usr/share/empty/fs/aufs/branch.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/branch.c 2019-09-16 09:38:43.216175640 +0200 ++++ linux/fs/aufs/branch.c 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,1428 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -4505,11 +4447,11 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c +} diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h --- /usr/share/empty/fs/aufs/branch.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/branch.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/branch.h 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,366 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -4919,11 +4861,11 @@ diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk +-include ${srctree}/${src}/conf_priv.mk diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c --- /usr/share/empty/fs/aufs/cpup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/cpup.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/cpup.c 2020-01-27 10:57:18.165538015 +0100 @@ -0,0 +1,1458 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -6381,11 +6323,11 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c +} diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h --- /usr/share/empty/fs/aufs/cpup.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/cpup.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/cpup.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,100 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -6485,11 +6427,11 @@ diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h +#endif /* __AUFS_CPUP_H__ */ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c --- /usr/share/empty/fs/aufs/dbgaufs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dbgaufs.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dbgaufs.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,526 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -7015,11 +6957,11 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c +} diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h --- /usr/share/empty/fs/aufs/dbgaufs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dbgaufs.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dbgaufs.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -7072,11 +7014,11 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h +#endif /* __DBGAUFS_H__ */ diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c --- /usr/share/empty/fs/aufs/dcsub.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dcsub.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dcsub.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -7301,11 +7243,11 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c +} diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h --- /usr/share/empty/fs/aufs/dcsub.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dcsub.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dcsub.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -7442,11 +7384,11 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h +#endif /* __AUFS_DCSUB_H__ */ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c --- /usr/share/empty/fs/aufs/debug.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/debug.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/debug.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,441 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -7887,11 +7829,11 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c +} diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h --- /usr/share/empty/fs/aufs/debug.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/debug.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/debug.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,226 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -8117,11 +8059,11 @@ diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h +#endif /* __AUFS_DEBUG_H__ */ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c --- /usr/share/empty/fs/aufs/dentry.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dentry.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dentry.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,1154 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -9275,11 +9217,11 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c +}; diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h --- /usr/share/empty/fs/aufs/dentry.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dentry.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dentry.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,268 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -9547,11 +9489,11 @@ diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h +#endif /* __AUFS_DENTRY_H__ */ diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c --- /usr/share/empty/fs/aufs/dinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dinfo.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dinfo.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,554 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -10105,11 +10047,11 @@ diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c +} diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c --- /usr/share/empty/fs/aufs/dir.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dir.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dir.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,763 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -10872,11 +10814,11 @@ diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c +}; diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h --- /usr/share/empty/fs/aufs/dir.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dir.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dir.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -11010,11 +10952,11 @@ diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h +#endif /* __AUFS_DIR_H__ */ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c --- /usr/share/empty/fs/aufs/dirren.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dirren.c 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dirren.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,1316 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2017-2019 Junjiro R. Okajima ++ * Copyright (C) 2017-2020 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 @@ -11095,7 +11037,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c + found = 0; + idx = au_dr_ihash(ino); + hbl = dr->dr_h_ino + idx; -+#if 0 ++#if 0 /* debug print */ + { + struct hlist_bl_node *tmp; + @@ -12229,8 +12171,8 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c + err = 0; + if (!lkup->dirren.drinfo) + goto out; -+ AuDebugOn(lkup->dirren.ninfo < btgt + 1); -+ drinfo = lkup->dirren.drinfo[btgt + 1]; ++ AuDebugOn(lkup->dirren.ninfo <= btgt); ++ drinfo = lkup->dirren.drinfo[btgt]; + if (!drinfo) + goto out; + @@ -12259,8 +12201,8 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c + match = 1; + if (!lkup->dirren.drinfo) + goto out; -+ AuDebugOn(lkup->dirren.ninfo < bindex + 1); -+ drinfo = lkup->dirren.drinfo[bindex + 1]; ++ AuDebugOn(lkup->dirren.ninfo <= bindex); ++ drinfo = lkup->dirren.drinfo[bindex]; + if (!drinfo) + goto out; + @@ -12330,11 +12272,11 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c +} diff -urN /usr/share/empty/fs/aufs/dirren.h linux/fs/aufs/dirren.h --- /usr/share/empty/fs/aufs/dirren.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dirren.h 2019-07-11 15:42:14.462237786 +0200 ++++ linux/fs/aufs/dirren.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,140 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2017-2019 Junjiro R. Okajima ++ * Copyright (C) 2017-2020 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 @@ -12474,11 +12416,11 @@ diff -urN /usr/share/empty/fs/aufs/dirren.h linux/fs/aufs/dirren.h +#endif /* __AUFS_DIRREN_H__ */ diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c --- /usr/share/empty/fs/aufs/dynop.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dynop.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/dynop.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,367 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2010-2019 Junjiro R. Okajima ++ * Copyright (C) 2010-2020 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 @@ -12845,11 +12787,11 @@ diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c +} diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h --- /usr/share/empty/fs/aufs/dynop.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dynop.h 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/dynop.h 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2010-2019 Junjiro R. Okajima ++ * Copyright (C) 2010-2020 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 @@ -12926,11 +12868,11 @@ diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h +#endif /* __AUFS_DYNOP_H__ */ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c --- /usr/share/empty/fs/aufs/export.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/export.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/export.c 2020-01-27 10:57:18.168871450 +0100 @@ -0,0 +1,838 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -13768,11 +13710,11 @@ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c +} diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c --- /usr/share/empty/fs/aufs/fhsm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/fhsm.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/fhsm.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2011-2019 Junjiro R. Okajima ++ * Copyright (C) 2011-2020 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 @@ -14199,11 +14141,11 @@ diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c +} diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c --- /usr/share/empty/fs/aufs/file.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/file.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/file.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,863 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -15066,11 +15008,11 @@ diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c +}; diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h --- /usr/share/empty/fs/aufs/file.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/file.h 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/file.h 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,342 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -15412,11 +15354,11 @@ diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h +#endif /* __AUFS_FILE_H__ */ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c --- /usr/share/empty/fs/aufs/finfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/finfo.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/finfo.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -15565,11 +15507,11 @@ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c +} diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c --- /usr/share/empty/fs/aufs/f_op.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/f_op.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/f_op.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,819 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -15899,7 +15841,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c + if (unlikely(err)) + goto out; + -+ err = -ENOSYS; ++ err = -ENOSYS; /* the branch doesn't have its ->(read|write)_iter() */ + iter = NULL; + if (rw == MAY_READ) + iter = h_file->f_op->read_iter; @@ -16343,7 +16285,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ -+#if 0 ++#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) +{ @@ -16379,7 +16321,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c + .setfl = aufs_setfl, + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, -+#if 0 ++#if 0 /* reserved for future use */ + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read, +#endif @@ -16388,11 +16330,11 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c +}; diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h --- /usr/share/empty/fs/aufs/fstype.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/fstype.h 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/fstype.h 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,401 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -16793,11 +16735,11 @@ diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h +#endif /* __AUFS_FSTYPE_H__ */ diff -urN /usr/share/empty/fs/aufs/hbl.h linux/fs/aufs/hbl.h --- /usr/share/empty/fs/aufs/hbl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hbl.h 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/hbl.h 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2017-2019 Junjiro R. Okajima ++ * Copyright (C) 2017-2020 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 @@ -16862,11 +16804,11 @@ diff -urN /usr/share/empty/fs/aufs/hbl.h linux/fs/aufs/hbl.h +#endif /* __AUFS_HBL_H__ */ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c --- /usr/share/empty/fs/aufs/hfsnotify.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hfsnotify.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/hfsnotify.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,288 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -17154,11 +17096,11 @@ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c +}; diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c --- /usr/share/empty/fs/aufs/hfsplus.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hfsplus.c 2019-07-11 15:42:14.465571210 +0200 ++++ linux/fs/aufs/hfsplus.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2010-2019 Junjiro R. Okajima ++ * Copyright (C) 2010-2020 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 @@ -17218,11 +17160,11 @@ diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c +} diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c --- /usr/share/empty/fs/aufs/hnotify.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/hnotify.c 2019-07-11 15:42:14.465571210 +0200 -@@ -0,0 +1,721 @@ ++++ linux/fs/aufs/hnotify.c 2020-01-27 10:57:18.172204883 +0100 +@@ -0,0 +1,715 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -17404,12 +17346,6 @@ diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c + +out_dpages: + au_dpages_free(&dpages); -+ -+#if 0 -+ /* discard children */ -+ dentry_unhash(dentry); -+ dput(dentry); -+#endif +out: + return err; +} @@ -17943,11 +17879,11 @@ diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c +} diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c --- /usr/share/empty/fs/aufs/iinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/iinfo.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/iinfo.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,286 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -18233,11 +18169,11 @@ diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c +} diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c --- /usr/share/empty/fs/aufs/inode.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/inode.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/inode.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,529 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -18449,7 +18385,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; -+ struct inode_operations *iop; ++ const struct inode_operations *iop; + + IiMustWriteLock(inode); + @@ -18766,11 +18702,11 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c +} diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h --- /usr/share/empty/fs/aufs/inode.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/inode.h 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/inode.h 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,698 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -18927,7 +18863,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h + AuIop_OTHER, + AuIop_Last +}; -+extern struct inode_operations aufs_iop[AuIop_Last], ++extern struct inode_operations aufs_iop[AuIop_Last], /* not const */ + aufs_iop_nogetattr[AuIop_Last]; + +/* au_wr_dir flags */ @@ -19468,11 +19404,11 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h +#endif /* __AUFS_INODE_H__ */ diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c --- /usr/share/empty/fs/aufs/ioctl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/ioctl.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/ioctl.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,220 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -19692,11 +19628,11 @@ diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c +#endif diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c --- /usr/share/empty/fs/aufs/i_op_add.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op_add.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/i_op_add.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,936 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -20632,11 +20568,11 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c +} diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c --- /usr/share/empty/fs/aufs/i_op.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op.c 2019-09-16 09:38:43.216175640 +0200 -@@ -0,0 +1,1505 @@ ++++ linux/fs/aufs/i_op.c 2020-04-03 08:16:47.547461775 +0200 +@@ -0,0 +1,1498 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -20708,19 +20644,6 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c + if (!err) + err = security_inode_permission(h_inode, mask); + -+#if 0 -+ if (!err) { -+ /* todo: do we need to call ima_path_check()? */ -+ struct path h_path = { -+ .dentry = -+ .mnt = h_mnt -+ }; -+ err = ima_path_check(&h_path, -+ mask & (MAY_READ | MAY_WRITE | MAY_EXEC), -+ IMA_COUNT_LEAVE); -+ } -+#endif -+ +out: + return err; +} @@ -20742,7 +20665,13 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); -+#if 0 ++#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; @@ -20860,7 +20789,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c + if (inode) + atomic_inc(&inode->i_count); + ret = d_splice_alias(inode, dentry); -+#if 0 ++#if 0 /* reserved for future use */ + if (unlikely(d_need_lookup(dentry))) { + spin_lock(&dentry->d_lock); + dentry->d_flags &= ~DCACHE_NEED_LOOKUP; @@ -22141,11 +22070,11 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c +}; diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c --- /usr/share/empty/fs/aufs/i_op_del.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op_del.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/i_op_del.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,513 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -22658,11 +22587,11 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c +} diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c --- /usr/share/empty/fs/aufs/i_op_ren.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op_ren.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/i_op_ren.c 2020-01-27 10:57:18.172204883 +0100 @@ -0,0 +1,1250 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -23077,7 +23006,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c + } + + BUG_ON(d_is_positive(a->dst_h_dentry) && a->src_btop != a->btgt); -+#if 0 ++#if 0 /* debugging */ + BUG_ON(!au_ftest_ren(a->auren_flags, DIRREN) + && d_is_positive(a->dst_h_dentry) + && a->src_btop != a->btgt); @@ -24115,11 +24044,11 @@ diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig +endif diff -urN /usr/share/empty/fs/aufs/lcnt.h linux/fs/aufs/lcnt.h --- /usr/share/empty/fs/aufs/lcnt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/lcnt.h 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/lcnt.h 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,186 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2018-2019 Junjiro R. Okajima ++ * Copyright (C) 2018-2020 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 @@ -24305,11 +24234,11 @@ diff -urN /usr/share/empty/fs/aufs/lcnt.h linux/fs/aufs/lcnt.h +#endif /* __AUFS_LCNT_H__ */ diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c --- /usr/share/empty/fs/aufs/loop.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/loop.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/loop.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -24457,11 +24386,11 @@ diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c +} diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h --- /usr/share/empty/fs/aufs/loop.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/loop.h 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/loop.h 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -24601,11 +24530,11 @@ diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c --- /usr/share/empty/fs/aufs/module.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/module.c 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/module.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,273 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -24878,11 +24807,11 @@ diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c +module_exit(aufs_exit); diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h --- /usr/share/empty/fs/aufs/module.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/module.h 2019-07-11 15:42:14.468904634 +0200 ++++ linux/fs/aufs/module.h 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -25048,11 +24977,11 @@ diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h +#endif /* __AUFS_MODULE_H__ */ diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c --- /usr/share/empty/fs/aufs/mvdown.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/mvdown.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/mvdown.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2011-2019 Junjiro R. Okajima ++ * Copyright (C) 2011-2020 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 @@ -25758,11 +25687,11 @@ diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c +} diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c --- /usr/share/empty/fs/aufs/opts.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/opts.c 2019-09-16 09:38:43.216175640 +0200 ++++ linux/fs/aufs/opts.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,1880 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -27389,7 +27318,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c + if ((br->br_perm & AuBrAttr_ICEX) + && !h_dir->i_op->listxattr) + br->br_perm &= ~AuBrAttr_ICEX; -+#if 0 ++#if 0 /* untested */ + if ((br->br_perm & AuBrAttr_ICEX_SEC) + && (au_br_sb(br)->s_flags & SB_NOSEC)) + br->br_perm &= ~AuBrAttr_ICEX_SEC; @@ -27642,11 +27571,11 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c +} diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h --- /usr/share/empty/fs/aufs/opts.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/opts.h 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/opts.h 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,225 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -27871,11 +27800,11 @@ diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h +#endif /* __AUFS_OPTS_H__ */ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c --- /usr/share/empty/fs/aufs/plink.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/plink.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/plink.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,516 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -28391,11 +28320,11 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c +} diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c --- /usr/share/empty/fs/aufs/poll.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/poll.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/poll.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -28446,11 +28375,11 @@ diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c +} diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c --- /usr/share/empty/fs/aufs/posix_acl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/posix_acl.c 2019-11-25 12:42:00.275843147 +0100 ++++ linux/fs/aufs/posix_acl.c 2020-01-27 10:57:18.175538316 +0100 @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2014-2019 Junjiro R. Okajima ++ * Copyright (C) 2014-2020 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 @@ -28555,11 +28484,11 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c +} diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c --- /usr/share/empty/fs/aufs/procfs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/procfs.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/procfs.c 2020-04-03 08:16:47.547461775 +0200 @@ -0,0 +1,171 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2010-2019 Junjiro R. Okajima ++ * Copyright (C) 2010-2020 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 @@ -28730,11 +28659,11 @@ diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c +} diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c --- /usr/share/empty/fs/aufs/rdu.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/rdu.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/rdu.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -29118,11 +29047,11 @@ diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c +#endif diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h --- /usr/share/empty/fs/aufs/rwsem.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/rwsem.h 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/rwsem.h 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -29195,11 +29124,11 @@ diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h +#endif /* __AUFS_RWSEM_H__ */ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c --- /usr/share/empty/fs/aufs/sbinfo.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sbinfo.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/sbinfo.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,314 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -29513,11 +29442,11 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c +} diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c --- /usr/share/empty/fs/aufs/super.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/super.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/super.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,1047 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -29763,7 +29692,7 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c + sb = dentry->d_sb; + if (sb->s_flags & SB_POSIXACL) + seq_puts(m, ",acl"); -+#if 0 ++#if 0 /* reserved for future use */ + if (sb->s_flags & SB_I_VERSION) + seq_puts(m, ",i_version"); +#endif @@ -30564,11 +30493,11 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c +}; diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h --- /usr/share/empty/fs/aufs/super.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/super.h 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/super.h 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,589 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -30747,7 +30676,7 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h + struct hlist_bl_head si_files; + + /* with/without getattr, brother of sb->s_d_op */ -+ struct inode_operations *si_iop_array; ++ const struct inode_operations *si_iop_array; + + /* + * sysfs and lifetime management. @@ -31157,11 +31086,11 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h +#endif /* __AUFS_SUPER_H__ */ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c --- /usr/share/empty/fs/aufs/sysaufs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysaufs.c 2019-07-11 15:42:14.472238057 +0200 ++++ linux/fs/aufs/sysaufs.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -31254,11 +31183,11 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c +} diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h --- /usr/share/empty/fs/aufs/sysaufs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysaufs.h 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/sysaufs.h 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -31360,11 +31289,11 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h +#endif /* __SYSAUFS_H__ */ diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c --- /usr/share/empty/fs/aufs/sysfs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysfs.c 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/sysfs.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,374 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -31738,11 +31667,11 @@ diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c +} diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c --- /usr/share/empty/fs/aufs/sysrq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/sysrq.c 2019-07-11 15:42:14.475571481 +0200 -@@ -0,0 +1,160 @@ ++++ linux/fs/aufs/sysrq.c 2020-01-27 10:57:18.178871751 +0100 +@@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -31776,6 +31705,7 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c + struct hlist_bl_head *files; + struct hlist_bl_node *pos; + struct au_finfo *finfo; ++ struct inode *i; + + plevel = au_plevel; + au_plevel = KERN_WARNING; @@ -31788,14 +31718,7 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c + pr("superblock\n"); + au_dpri_sb(sb); + -+#if 0 -+ pr("root dentry\n"); -+ au_dpri_dentry(sb->s_root); -+ pr("root inode\n"); -+ au_dpri_inode(d_inode(sb->s_root)); -+#endif -+ -+#if 0 ++#if 0 /* reserved */ + do { + int err, i, j, ndentry; + struct au_dcsub_pages dpages; @@ -31816,21 +31739,16 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c + } while (0); +#endif + -+#if 1 -+ { -+ struct inode *i; -+ -+ 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 (1 || hlist_empty(&i->i_dentry)) -+ au_dpri_inode(i); -+ spin_unlock(&i->i_lock); -+ } -+ spin_unlock(&sb->s_inode_list_lock); ++ 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); + } -+#endif ++ spin_unlock(&sb->s_inode_list_lock); ++ + pr("files\n"); + files = &au_sbi(sb)->si_files; + hlist_bl_lock(files); @@ -31902,11 +31820,11 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c +} diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c --- /usr/share/empty/fs/aufs/vdir.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vdir.c 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/vdir.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,896 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -32001,7 +31919,7 @@ diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c + +static void nhash_count(struct hlist_head *head) +{ -+#if 0 ++#if 0 /* debugging */ + unsigned long n; + struct hlist_node *pos; + @@ -32802,11 +32720,11 @@ diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c +} diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c --- /usr/share/empty/fs/aufs/vfsub.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vfsub.c 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/vfsub.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,902 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -33708,11 +33626,11 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c +} diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h --- /usr/share/empty/fs/aufs/vfsub.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vfsub.h 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/vfsub.h 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,354 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -34066,11 +33984,11 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h +#endif /* __AUFS_VFSUB_H__ */ diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c --- /usr/share/empty/fs/aufs/wbr_policy.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/wbr_policy.c 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/wbr_policy.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,830 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -34900,11 +34818,11 @@ diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c +}; diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c --- /usr/share/empty/fs/aufs/whout.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/whout.c 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/whout.c 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,1062 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -35209,7 +35127,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c + + 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; ++ return -ENOSYS; /* the branch doesn't have its ->link() */ +} + +/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ @@ -35966,11 +35884,11 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c +} diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h --- /usr/share/empty/fs/aufs/whout.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/whout.h 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/whout.h 2020-01-27 10:57:18.178871751 +0100 @@ -0,0 +1,86 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -36056,11 +35974,11 @@ diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h +#endif /* __AUFS_WHOUT_H__ */ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c --- /usr/share/empty/fs/aufs/wkq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/wkq.c 2019-07-11 15:42:14.475571481 +0200 -@@ -0,0 +1,392 @@ ++++ linux/fs/aufs/wkq.c 2020-04-03 08:16:47.547461775 +0200 +@@ -0,0 +1,372 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -36213,8 +36131,8 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c + goto out; + + err = 0; -+#if 0 -+ if (0 && au_debug_test()) /* left for debugging */ ++#if 0 /* left for debugging */ ++ if (0 && au_debug_test()) + lockdep_print_held_locks(curr); +#endif + held_locks = curr->held_locks; @@ -36291,7 +36209,6 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c +/* + * Since struct completion is large, try allocating it dynamically. + */ -+#if 1 /* defined(CONFIG_4KSTACKS) || defined(AuTest4KSTACKS) */ +#define AuWkqCompDeclare(name) struct completion *comp = NULL + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) @@ -36310,25 +36227,6 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c + au_kfree_rcu(comp); +} + -+#else -+ -+/* no braces */ -+#define AuWkqCompDeclare(name) \ -+ DECLARE_COMPLETION_ONSTACK(_ ## name); \ -+ struct completion *comp = &_ ## name -+ -+static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) -+{ -+ wkinfo->comp = *comp; -+ return 0; -+} -+ -+static void au_wkq_comp_free(struct completion *comp __maybe_unused) -+{ -+ /* empty */ -+} -+#endif /* 4KSTACKS */ -+ +static void au_wkq_run(struct au_wkinfo *wkinfo) +{ + if (au_ftest_wkq(wkinfo->flags, NEST)) { @@ -36452,11 +36350,11 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c +} diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h --- /usr/share/empty/fs/aufs/wkq.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/wkq.h 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/wkq.h 2020-01-27 10:57:18.182205184 +0100 @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -36545,11 +36443,11 @@ diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h +#endif /* __AUFS_WKQ_H__ */ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c --- /usr/share/empty/fs/aufs/xattr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/xattr.c 2019-07-11 15:42:14.475571481 +0200 ++++ linux/fs/aufs/xattr.c 2020-01-27 10:57:18.182205184 +0100 @@ -0,0 +1,356 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2014-2019 Junjiro R. Okajima ++ * Copyright (C) 2014-2020 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 @@ -36905,11 +36803,11 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c +} diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c --- /usr/share/empty/fs/aufs/xino.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/xino.c 2019-07-11 15:42:14.475571481 +0200 -@@ -0,0 +1,1965 @@ ++++ linux/fs/aufs/xino.c 2020-04-03 08:16:49.834195677 +0200 +@@ -0,0 +1,1966 @@ +// SPDX-License-Identifier: GPL-2.0 +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -38264,9 +38162,10 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c + 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_for_each_entry_safe(p, pos, n, hbl, node) { + hlist_bl_del(&p->node); -+ au_kfree_rcu(p); ++ /* kmemleak reported au_kfree_rcu() doesn't free it */ ++ kfree(p); + } + hlist_bl_unlock(hbl); + } @@ -38874,11 +38773,11 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c +} diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/linux/aufs_type.h --- /usr/share/empty/include/uapi/linux/aufs_type.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/include/uapi/linux/aufs_type.h 2019-11-25 12:42:00.275843147 +0100 ++++ linux/include/uapi/linux/aufs_type.h 2020-04-03 08:16:49.834195677 +0200 @@ -0,0 +1,452 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* -+ * Copyright (C) 2005-2019 Junjiro R. Okajima ++ * Copyright (C) 2005-2020 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 @@ -38911,20 +38810,21 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin +#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__ */ + -+#include -+ -+#define AUFS_VERSION "5.x-rcN-20191021" ++#define AUFS_VERSION "5.4-20200302" + +/* 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 @@ -38939,7 +38839,6 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin +#endif +#endif + -+#ifdef __KERNEL__ +#ifndef AUFS_BRANCH_MAX +#error unknown CONFIG_AUFS_BRANCH_MAX value +#endif @@ -39329,10 +39228,10 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin + +#endif /* __AUFS_TYPE_H__ */ SPDX-License-Identifier: GPL-2.0 -aufs5.x-rcN loopback patch +aufs5.4 loopback patch diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 80d06084b043..a83cdfec7359 100644 +index 5e094699215e..22b2ecb6cfe8 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -625,6 +625,15 @@ static inline void loop_update_dio(struct loop_device *lo) @@ -39435,7 +39334,7 @@ index 80d06084b043..a83cdfec7359 100644 lo->transfer = NULL; lo->ioctl = NULL; lo->lo_sizelimit = 0; -@@ -1046,6 +1075,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -1056,6 +1085,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, bd_abort_claiming(bdev, claimed_bdev, loop_set_fd); out_putf: fput(file); @@ -39444,7 +39343,7 @@ index 80d06084b043..a83cdfec7359 100644 out: /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); -@@ -1092,6 +1123,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer, +@@ -1102,6 +1133,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer, static int __loop_clr_fd(struct loop_device *lo, bool release) { struct file *filp = NULL; @@ -39452,7 +39351,7 @@ index 80d06084b043..a83cdfec7359 100644 gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; int err = 0; -@@ -1115,6 +1147,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) +@@ -1125,6 +1157,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) spin_lock_irq(&lo->lo_lock); lo->lo_backing_file = NULL; @@ -39460,7 +39359,7 @@ index 80d06084b043..a83cdfec7359 100644 spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); -@@ -1197,6 +1230,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) +@@ -1207,6 +1240,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) */ if (filp) fput(filp); @@ -39470,7 +39369,7 @@ index 80d06084b043..a83cdfec7359 100644 } diff --git a/drivers/block/loop.h b/drivers/block/loop.h -index af75a5ee4094..1e6ee5a4f623 100644 +index af75a5ee4094..1d847cb194ff 100644 --- a/drivers/block/loop.h +++ b/drivers/block/loop.h @@ -46,7 +46,7 @@ struct loop_device { @@ -39478,12 +39377,12 @@ index af75a5ee4094..1e6ee5a4f623 100644 unsigned long arg); - struct file * lo_backing_file; -+ struct file * lo_backing_file, *lo_backing_virt_file; ++ struct file *lo_backing_file, *lo_backing_virt_file; struct block_device *lo_device; void *key_data; diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c -index 0309f0d502ff..19feb4f3cb5f 100644 +index 6fb4a4ed8cc7..ba9a959f2db2 100644 --- a/fs/aufs/f_op.c +++ b/fs/aufs/f_op.c @@ -359,7 +359,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) @@ -39496,7 +39395,7 @@ index 0309f0d502ff..19feb4f3cb5f 100644 if (file->f_mapping != h_file->f_mapping) { file->f_mapping = h_file->f_mapping; diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c -index 9ba35a878ecd..4ed0ff03d5ab 100644 +index a8b63acc6204..9d97c3af5686 100644 --- a/fs/aufs/loop.c +++ b/fs/aufs/loop.c @@ -133,3 +133,19 @@ void au_loopback_fin(void) @@ -39520,7 +39419,7 @@ index 9ba35a878ecd..4ed0ff03d5ab 100644 + return f; +} diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h -index f31e40aff267..e13fb1a0717a 100644 +index 94f4f80ae33b..ca1194354aff 100644 --- a/fs/aufs/loop.h +++ b/fs/aufs/loop.h @@ -26,6 +26,8 @@ void au_warn_loopback(struct super_block *h_sb); @@ -39542,7 +39441,7 @@ index f31e40aff267..e13fb1a0717a 100644 #endif /* __KERNEL__ */ diff --git a/fs/aufs/super.c b/fs/aufs/super.c -index a97e2921cb09..f74eb6962684 100644 +index 589dd0122020..801e0a7faec5 100644 --- a/fs/aufs/super.c +++ b/fs/aufs/super.c @@ -844,7 +844,10 @@ static const struct super_operations aufs_sop = { @@ -39558,14 +39457,14 @@ index a97e2921cb09..f74eb6962684 100644 /* ---------------------------------------------------------------------- */ diff --git a/include/linux/fs.h b/include/linux/fs.h -index 3dbec51c2037..38ab7b6c7c6d 100644 +index 381a13995011..215b76e0f9dc 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1948,6 +1948,10 @@ struct super_operations { +@@ -1973,6 +1973,10 @@ struct super_operations { struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); -+#if defined(CONFIG_BLK_DEV_LOOP) || defined(CONFIG_BLK_DEV_LOOP_MODULE) ++#if IS_ENABLED(CONFIG_BLK_DEV_LOOP) || IS_ENABLED(CONFIG_BLK_DEV_LOOP_MODULE) + /* and aufs */ + struct file *(*real_loop)(struct file *); +#endif