This patch set speeds up at least resize2fs shrinking by causing its CPU usage to drop by 99.5% by optimizing inode bitfield scanning. Test case: A 100G ext4 filesystem filled to 50% with copies of /usr/share/doc, shrinking to 75G on a slow disk (~5400 rpm) and fast processor (Core i7): Before: # time resize2fs -p $FILESYSTEM 75G [...] real 96m26.852s user 56m39.768s sys 0m27.922s After: # time resize2fs -p $FILESYSTEM 75G real 39m49.287s user 0m16.601s sys 0m26.606s Sami Liedes (5): libext2fs: Move a modulo operation out of a hot loop. resize2fs: Use EXT2_FLAG_64BITS. libext2fs: Document EXT2_FLAG_64BITS in ext2fs_open2(). libext2fs: Implement ext2fs_find_first_zero_generic_bmap(). libext2fs: Implement fast find_first_zero() for bitarray bitmaps. lib/ext2fs/alloc.c | 27 +++------------ lib/ext2fs/bitops.h | 16 --------- lib/ext2fs/blkmap64_ba.c | 81 --------------------------------------------- lib/ext2fs/bmap64.h | 5 --- lib/ext2fs/gen_bitmap64.c | 28 --------------- lib/ext2fs/openfs.c | 1 - resize/main.c | 3 -- 7 files changed, 5 insertions(+), 156 deletions(-)
Attachment:
signature.asc
Description: Digital signature