<stats log> ============ [Thread 0] Scanned group range [0, 1599), inodes 169076 e2fsck_pass1_merge_context [0]: bg range [0, 1599] elapsed time: 18.580 count=25573571 elapsed time: 32.863 "count" in above stat measures total no. of extent entries found in thread_ctx->block_found_map (by adding rb_count_bmap() function). Since there is only one thread here, that also means it is the total no. of extent entries. Above data is shown with "-m 1", to just show the exact count entries. Otherwise too with "-m 4", the performance is degraded. I have also tested this on raid0 using 2 HDDs, and on that too perf degradation was observed. (Although I don't have the exact data handy for this, but I can get those again, if needed). But AFAIK, it was definitely a significant reduction in perf numbers. So I was wondering if this is a known limitation around pfsck and if it has popped up in any of your tests too. Also please do let me know if I have missed anything obvious here? In some of my earlier testing, I had tested with lusture e2fsprogs (master-pfsck branch) and had similar observations as mentioned above. But recently all my tests were based out of the following tree[2] (with patch[3] included). I have these setups available with me, so if anything is needed to be tested from my end, I can do that. References ============ [1]: https://lore.kernel.org/all/YMN10sXgoTR%2FIPxr@xxxxxxx/ [2]: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/log/?h=pfsck [3] https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/commit/?id=699di448eee4b991acafaae4e4f8222be332d6837 Thanks for your help!! -ritesh -- <script1.sh> ============ fragmented_filesize=$((10 * 1024 * 1024 * 1024)) dir_cnt=0 while [ $dir_cnt -lt 8192 ]; do mkdir $MNT/n$dir_cnt || break inode_cnt=0 while [ $inode_cnt -lt 8192 ]; do if [ $inode_cnt -eq 0 ]; then xfs_io -fc "falloc 0 $fragmented_filesize" $MNT/n$dir_cnt/n$inode_cnt else touch $MNT/n$dir_cnt/n$inode_cnt || break fi inode_cnt=$((inode_cnt+1)) done dir_cnt=$((dir_cnt+1)) done exit <script2.sh> ============== dir_cnt=0 while [ $dir_cnt -lt 8192 ]; do inode_cnt=0 $XFSTESTS_PATH/src/punch-alternating $MNT/n$dir_cnt/n$inode_cnt dir_cnt=$((dir_cnt+1)) done