# git rev-parse -q --verify bba7d682277c09373b56b0461b0abbd0b3d1e872^{commit} bba7d682277c09373b56b0461b0abbd0b3d1e872 already have revision, skipping fetch # git checkout -q -f -B kisskb bba7d682277c09373b56b0461b0abbd0b3d1e872 # git clean -qxdf # < git log -1 # commit bba7d682277c09373b56b0461b0abbd0b3d1e872 # Merge: a64a325bf631 2a09b575074f # Author: Linus Torvalds # Date: Tue Nov 2 12:42:56 2021 -0700 # # Merge tag 'xfs-5.16-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux # # Pull xfs updates from Darrick Wong: # "This cycle we've worked on fixing bugs and improving XFS' memory # footprint. # # The most notable fixes include: fixing a corruption warning (and free # space accounting skew) if copy on write fails; fixing slab cache # misuse if SLOB is enabled, which apparently was broken for years # without anybody noticing; and fixing a potential race with online # shrinkfs. # # Otherwise, the bulk of the changes here involve setting up separate # slab caches for frequently used items such as btree cursors and log # intent items, and compacting the structures to reduce memory usage of # those items substantially. This also sets us up to support larger # btrees in future kernels. We also switch parts of online fsck to # allocate scrub context information from the heap instead of using # stack space. # # Summary: # # - Bug fixes and cleanups for kernel memory allocation usage, this # time without touching the mm code. # # - Refactor the log recovery mechanism that preserves held resources # across a transaction roll so that it uses the exact same mechanism # that we use for that during regular runtime. # # - Fix bugs and tighten checking around btree heights. # # - Remove more old typedefs. # # - Fix perag reference leaks when racing with growfs. # # - Remove unused fields from xfs_btree_cur. # # - Allocate various scrub structures on the heap to reduce stack # usage. # # - Pack xfs_btree_cur fields and rearrange to support arbitrary # heights. # # - Compute maximum possible heights for each btree height, and use # that to set up slab caches for each btree type. # # - Finally remove kmem_zone_t, since these have always been struct # kmem_cache on Linux. # # - Compact the structures used to coordinate work intent items. # # - Set up slab caches for each work intent item type. # # - Rename the "bmap_add_free" function to "free_extent_later", which # more accurately describes what it does. # # - Fix corruption warning on unmount when a CoW preallocation covers a # data fork delalloc reservation but then the CoW fails. # # - Add some more minor code improvements" # # * tag 'xfs-5.16-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (45 commits) # xfs: use swap() to make code cleaner # xfs: Remove duplicated include in xfs_super # xfs: punch out data fork delalloc blocks on COW writeback failure # xfs: remove unused parameter from refcount code # xfs: reduce the size of struct xfs_extent_free_item # xfs: rename xfs_bmap_add_free to xfs_free_extent_later # xfs: create slab caches for frequently-used deferred items # xfs: compact deferred intent item structures # xfs: rename _zone variables to _cache # xfs: remove kmem_zone typedef # xfs: use separate btree cursor cache for each btree type # xfs: compute absolute maximum nlevels for each btree type # xfs: kill XFS_BTREE_MAXLEVELS # xfs: compute the maximum height of the rmap btree when reflink enabled # xfs: clean up xfs_btree_{calc_size,compute_maxlevels} # xfs: compute maximum AG btree height for critical reservation calculation # xfs: rename m_ag_maxlevels to m_allocbt_maxlevels # xfs: dynamically allocate cursors based on maxlevels # xfs: encode the max btree height in the cursor # xfs: refactor btree cursor allocation function # ... # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux-ld --version # < git log --format=%s --max-count=1 bba7d682277c09373b56b0461b0abbd0b3d1e872 # < make -s -j 24 ARCH=parisc O=/kisskb/build/linus_generic-32bit_defconfig_parisc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- generic-32bit_defconfig # < make -s -j 24 ARCH=parisc O=/kisskb/build/linus_generic-32bit_defconfig_parisc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- help # make -s -j 24 ARCH=parisc O=/kisskb/build/linus_generic-32bit_defconfig_parisc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- olddefconfig # make -s -j 24 ARCH=parisc O=/kisskb/build/linus_generic-32bit_defconfig_parisc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- In file included from : /kisskb/src/include/linux/sched.h: In function 'task_cpu': /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/linux/compiler_types.h:297:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ /kisskb/src/include/linux/compiler_types.h:317:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type' compiletime_assert_rwonce_type(x); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/linux/compiler_types.h:297:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ /kisskb/src/include/linux/compiler_types.h:317:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type' compiletime_assert_rwonce_type(x); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/linux/compiler_types.h:297:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ /kisskb/src/include/linux/compiler_types.h:317:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type' compiletime_assert_rwonce_type(x); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/linux/compiler_types.h:297:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ /kisskb/src/include/linux/compiler_types.h:317:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type' compiletime_assert_rwonce_type(x); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/linux/compiler_types.h:297:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ /kisskb/src/include/linux/compiler_types.h:317:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert' compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type' compiletime_assert_rwonce_type(x); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/linux/compiler_types.h:279:13: note: in definition of macro '__unqual_scalar_typeof' _Generic((x), \ ^ /kisskb/src/include/asm-generic/rwonce.h:50:2: note: in expansion of macro '__READ_ONCE' __READ_ONCE(x); \ ^~~~~~~~~~~ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ In file included from ./arch/parisc/include/generated/asm/rwonce.h:1, from /kisskb/src/include/linux/compiler.h:266, from /kisskb/src/include/linux/kernel.h:11, from /kisskb/src/include/linux/list.h:9, from /kisskb/src/include/linux/rculist.h:10, from /kisskb/src/include/linux/pid.h:5, from /kisskb/src/include/linux/sched.h:14, from /kisskb/src/arch/parisc/kernel/asm-offsets.c:20: /kisskb/src/include/linux/sched.h:2129:38: error: 'const struct thread_info' has no member named 'cpu' return READ_ONCE(task_thread_info(p)->cpu); ^~ /kisskb/src/include/asm-generic/rwonce.h:44:72: note: in definition of macro '__READ_ONCE' #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x)) ^ /kisskb/src/include/linux/sched.h:2129:9: note: in expansion of macro 'READ_ONCE' return READ_ONCE(task_thread_info(p)->cpu); ^~~~~~~~~ In file included from /kisskb/src/arch/parisc/kernel/asm-offsets.c:24: /kisskb/src/arch/parisc/kernel/asm-offsets.c: In function 'main': /kisskb/src/include/linux/compiler_types.h:140:35: error: 'struct task_struct' has no member named 'cpu' #define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/kbuild.h:6:62: note: in definition of macro 'DEFINE' asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val)) ^~~ /kisskb/src/include/linux/stddef.h:17:32: note: in expansion of macro '__compiler_offsetof' #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/parisc/kernel/asm-offsets.c:43:19: note: in expansion of macro 'offsetof' DEFINE(TASK_CPU, offsetof(struct task_struct, cpu)); ^~~~~~~~ make[2]: *** [/kisskb/src/scripts/Makefile.build:121: arch/parisc/kernel/asm-offsets.s] Error 1 make[1]: *** [/kisskb/src/Makefile:1223: prepare0] Error 2 make: *** [Makefile:219: __sub-make] Error 2 Command 'make -s -j 24 ARCH=parisc O=/kisskb/build/linus_generic-32bit_defconfig_parisc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- ' returned non-zero exit status 2 # rm -rf /kisskb/build/linus_generic-32bit_defconfig_parisc-gcc8 # Build took: 0:00:05.962705