This patch set adds the infrastructure to support threading to libext2fs. It makes the unix_io I/O Manager thread-aware. Wang's parallel bitmap code has been adapted to use the new threading infrastructure. The code has been tested with TSAN and ASAN built into gcc 10.2: configure 'CFLAGS=-g -fsanitize=thread' 'LDFLAGS=-fsanitize=thread' make clean ; make -j16 ; make -j16 check configure 'CFLAGS=-g -fsanitize=address' 'LDFLAGS=-fsanitize=address' make clean ; make -j16 ; make -j16 check As I(tytso) needed to excerpt out some of the changes to generated patches in "Add configure and build support for the pthreads", the full patch series can be found in git: git fetch https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git pthreads Changes with V1: Fix review remarks for "ext2fs: parallel bitmap loading". Tested stat_mutex performance on instance with 60 CPUs and fragmented 3TB Local SSD. No noticable contention seem for the stat_mutex. Theodore Ts'o (4): Add configure and build support for the pthreads library libext2fs: add threading support to the I/O manager abstraction libext2fs: allow the unix_io manager's cache to be disabled and re-enabled Enable threaded support for e2fsprogs' applications. Wang Shilong (1): ext2fs: parallel bitmap loading MCONFIG.in | 12 +- aclocal.m4 | 560 ++++++++++++++++++++++++++-------------- configure | 213 ++++++++++++--- configure.ac | 24 ++ debugfs/debugfs.c | 6 +- e2fsck/unix.c | 2 +- lib/config.h.in | 83 +++++- lib/ext2fs/ext2_io.h | 3 + lib/ext2fs/ext2fs.h | 9 + lib/ext2fs/openfs.c | 2 + lib/ext2fs/rw_bitmaps.c | 332 ++++++++++++++++++++---- lib/ext2fs/test_io.c | 6 +- lib/ext2fs/undo_io.c | 2 + lib/ext2fs/unix_io.c | 156 +++++++++-- misc/dumpe2fs.c | 2 +- misc/e2freefrag.c | 2 +- misc/e2fuzz.c | 4 +- misc/e2image.c | 3 +- misc/fuse2fs.c | 3 +- misc/tune2fs.c | 3 +- resize/main.c | 2 +- 21 files changed, 1093 insertions(+), 336 deletions(-) -- 2.30.0.284.gd98b1dd5eaa7-goog