Regression caused by using node_to_bdi()

From: Zhao Lei
Date: Thu Mar 05 2015 - 23:38:12 EST


Hi, Christoph Hellwig

resend: + cc lkml

I found regression in v4.0-rc1 caused by this patch:
Author: Christoph Hellwig <hch@xxxxxx>
Date: Wed Jan 14 10:42:36 2015 +0100
fs: export inode_to_bdi and use it in favor of mapping->backing_dev_info

Test process is following:
2015-02-25 15:50:22: Start
2015-02-25 15:50:22: Linux version:Linux btrfs 4.0.0-rc1_HEAD_c517d838eb7d07bbe9507871fab3931deccff539_ #1 SMP Wed Feb 25 10:59:10 CST 2015 x86_64 x86_64 x86_64 GNU/Linux
2015-02-25 15:50:25: mkfs.btrfs -f /dev/sdb1
2015-02-25 15:50:27: mount /dev/sdb1 /data/ltf/tester
2015-02-25 15:50:28: sysbench --test=fileio --num-threads=1 --file-num=1 --file-block-size=32768 --file-total-size=4G --file-test-mode=seqwr --file-io-mode=sync --file-extra-flags= --file-fsync-freq=0 --file-fsync-end=off --max-requests=131072
2015-02-25 15:51:40: done sysbench

Result is following:
v3.19-rc1: testcnt=40 average=135.677 range=[132.460,139.130] stdev=1.610 cv=1.19%
v4.0-rc1: testcnt=40 average=130.970 range=[127.980,132.050] stdev=1.012 cv=0.77%

Then I bisect above case between v3.19-rc1 and v4.0-rc1, and found this patch caused the regresstion.

Maybe it is because kernel need more time to call node_to_bdi(), compared with "using inode->i_mapping->backing_dev_info directly" in old code.

Is there some way to speed up it(inline, or some access some variant in struct directly, ...)?

Thanks
Zhaolei



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/