verity: only requeue if necessary
For the most part, I/Os will be ordered so it is more than likely that
PENDING I/Os will become ready. Instead of requeuing an I/O for which
there were pending I/Os, check the state of all dependent I/Os and
only requeue if necessary.
I also removed the _queue functions. They were two liners that could
easily be open-coded to reduce abstraction. Just makes it easier for
me to see what's really going on.
This change saves about 2 seconds off of a depth=3 boot:
Before:
seconds_power_on_to_login 10.03
seconds_power_on_to_login{1} 9.96
seconds_power_on_to_login{2} 10.4
seconds_power_on_to_login{3} 9.96
seconds_power_on_to_login{4} 10.04
seconds_power_on_to_login{5} 10.04
seconds_power_on_to_login{6} 9.95
seconds_power_on_to_login{7} 10.18
seconds_power_on_to_login{8} 10.13
seconds_power_on_to_login{9} 10.07
0 1740800 verity 0 0 0 438 4017
After:
seconds_power_on_to_login 7.74
seconds_power_on_to_login{1} 7.89
seconds_power_on_to_login{2} 7.84
seconds_power_on_to_login{3} 7.74
seconds_power_on_to_login{4} 7.8
seconds_power_on_to_login{5} 7.85
seconds_power_on_to_login{6} 7.92
seconds_power_on_to_login{7} 7.77
seconds_power_on_to_login{8} 7.81
seconds_power_on_to_login{9} 7.88
0 1740800 verity 0 0 0 0 4014
Notice: No more requeus in the after case.
BUG=chromium-os:9752
TEST=Ran platform_DMVerityCorruption on H/W. Ran platform_BootPerf on H/W.
kernel.git Review URL: http://codereview.chromium.org/6739006
TBRing. Already LGTMed and commited to kernel.git.
Change-Id: I95da7af3f90619a0c6bea6da0ac578dc1cb61aa0
R=wad@chromium.org
Review URL: http://codereview.chromium.org/6675057
2 files changed