From: Lukas Czerner Date: Thu, 4 Apr 2013 02:12:52 +0000 (-0400) Subject: ext4: make ext4_block_in_group() much more efficient X-Git-Tag: omap-for-v3.10/dt-fixes-for-merge-window~83^2~37 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=689110098c7df10fab8800d3bf8e727c21f426fb;p=pandora-kernel.git ext4: make ext4_block_in_group() much more efficient Currently in when getting the block group number for a particular block in ext4_block_in_group() we're using ext4_get_group_no_and_offset() which uses do_div() to get the block group and the remainer which is offset within the group. We don't need all of that in ext4_block_in_group() as we only need to figure out the group number. This commit changes ext4_block_in_group() to calculate group number directly. This shows as a big improvement with regards to cpu utilization. Measuring fallocate -l 15T on fresh file system with perf showed that 23% of cpu time was spend in the ext4_get_group_no_and_offset(). With this change it completely disappears from the list only bumping the occurrence of ext4_init_block_bitmap() which is the biggest user of ext4_block_in_group() by 4%. As the result of this change on my system the fallocate call was approx. 10% faster. However since there is '-g' option in mkfs which allow us setting different groups size (mostly for developers) I've introduced new per file system flag whether we have a standard block group size or not. The flag is used to determine whether we can use the bit shift optimization or not. Signed-off-by: Lukas Czerner Signed-off-by: "Theodore Ts'o" --- Reading git-diff-tree failed