# git gc Expanding reachable commits in commit graph: 78965 Expanding reachable commits in commit graph: 166306 Expanding reachable commits in commit graph: 257469 Expanding reachable commits in commit graph: 344919 Expanding reachable commits in commit graph: 442831 Expanding reachable commits in commit graph: 529262 Expanding reachable commits in commit graph: 632183 Expanding reachable commits in commit graph: 735661 Expanding reachable commits in commit graph: 842165 Expanding reachable commits in commit graph: 952379 Expanding reachable commits in commit graph: 1054525 Expanding reachable commits in commit graph: 1148813 Expanding reachable commits in commit graph: 1201456, done. Writing out commit graph in 4 passes: 61% (2966207/4805824) Writing out commit graph in 4 passes: 62% (2979611/4805824) Writing out commit graph in 4 passes: 63% (3027670/4805824) Writing out commit graph in 4 passes: 64% (3075728/4805824) Writing out commit graph in 4 passes: 65% (3123786/4805824) Writing out commit graph in 4 passes: 66% (3171844/4805824) Writing out commit graph in 4 passes: 67% (3219903/4805824) Writing out commit graph in 4 passes: 68% (3267961/4805824) Writing out commit graph in 4 passes: 69% (3316019/4805824) Writing out commit graph in 4 passes: 70% (3364077/4805824) Writing out commit graph in 4 passes: 71% (3412136/4805824) Writing out commit graph in 4 passes: 72% (3460194/4805824) Writing out commit graph in 4 passes: 73% (3508252/4805824) Writing out commit graph in 4 passes: 74% (3556310/4805824) Writing out commit graph in 4 passes: 75% (3604368/4805824) Writing out commit graph in 4 passes: 76% (3652427/4805824) Writing out commit graph in 4 passes: 77% (3700485/4805824) Writing out commit graph in 4 passes: 78% (3748543/4805824) Writing out commit graph in 4 passes: 79% (3796601/4805824) Writing out commit graph in 4 passes: 80% (3844660/4805824) Writing out commit graph in 4 passes: 81% (3892718/4805824) Writing out commit graph in 4 passes: 82% (3940776/4805824) Writing out commit graph in 4 passes: 83% (3988834/4805824) Writing out commit graph in 4 passes: 84% (4036893/4805824) Writing out commit graph in 4 passes: 85% (4084951/4805824) Writing out commit graph in 4 passes: 86% (4133009/4805824) Writing out commit graph in 4 passes: 87% (4181067/4805824) Writing out commit graph in 4 passes: 87% (4225698/4805824) Writing out commit graph in 4 passes: 88% (4229126/4805824) Writing out commit graph in 4 passes: 89% (4277184/4805824) Writing out commit graph in 4 passes: 90% (4325242/4805824) Writing out commit graph in 4 passes: 91% (4373300/4805824) Writing out commit graph in 4 passes: 92% (4421359/4805824) Writing out commit graph in 4 passes: 93% (4469417/4805824) Writing out commit graph in 4 passes: 94% (4517475/4805824) Writing out commit graph in 4 passes: 95% (4565533/4805824) Writing out commit graph in 4 passes: 96% (4613592/4805824) Writing out commit graph in 4 passes: 97% (4661650/4805824) Writing out commit graph in 4 passes: 98% (4709708/4805824) Writing out commit graph in 4 passes: 99% (4757766/4805824) Writing out commit graph in 4 passes: 100% (4805824/4805824) Writing out commit graph in 4 passes: 100% (4805824/4805824), done. # git rev-parse -q --verify c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3^{commit} c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 already have revision, skipping fetch # git checkout -q -f -B kisskb c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # git clean -qxdf # < git log -1 # commit c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # Author: Mateusz Guzik # Date: Sat Aug 12 18:15:54 2023 +0200 # # locking: remove spin_lock_prefetch # # The only remaining consumer is new_inode, where it showed up in 2001 as # commit c37fa164f793 ("v2.4.9.9 -> v2.4.9.10") in a historical repo [1] # with a changelog which does not mention it. # # Since then the line got only touched up to keep compiling. # # While it may have been of benefit back in the day, it is guaranteed to # at best not get in the way in the multicore setting -- as the code # performs *a lot* of work between the prefetch and actual lock acquire, # any contention means the cacheline is already invalid by the time the # routine calls spin_lock(). It adds spurious traffic, for short. # # On top of it prefetch is notoriously tricky to use for single-threaded # purposes, making it questionable from the get go. # # As such, remove it. # # I admit upfront I did not see value in benchmarking this change, but I # can do it if that is deemed appropriate. # # Removal from new_inode and of the entire thing are in the same patch as # requested by Linus, so whatever weird looks can be directed at that guy. # # Link: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/fs/inode.c?id=c37fa164f793735b32aa3f53154ff1a7659e6442 [1] # Signed-off-by: Mateusz Guzik # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-11.3.0-nolibc/s390-linux/bin/s390-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-11.3.0-nolibc/s390-linux/bin/s390-linux-ld --version # < git log --format=%s --max-count=1 c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # make -s -j 40 ARCH=s390 O=/kisskb/build/linus_allmodconfig_s390x-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/s390-linux/bin/s390-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_SAMPLES=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig # < make -s -j 40 ARCH=s390 O=/kisskb/build/linus_allmodconfig_s390x-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/s390-linux/bin/s390-linux- help # make -s -j 40 ARCH=s390 O=/kisskb/build/linus_allmodconfig_s390x-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/s390-linux/bin/s390-linux- olddefconfig # make -s -j 40 ARCH=s390 O=/kisskb/build/linus_allmodconfig_s390x-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/s390-linux/bin/s390-linux- Completed OK # rm -rf /kisskb/build/linus_allmodconfig_s390x-gcc11 # Build took: 0:14:38.054977