]> git.baikalelectronics.ru Git - kernel.git/commit
md/raid5: sort bios
authorShaohua Li <shli@fb.com>
Sat, 4 Mar 2017 06:06:12 +0000 (22:06 -0800)
committerShaohua Li <shli@fb.com>
Thu, 16 Mar 2017 23:55:52 +0000 (16:55 -0700)
commitd071aaaa3310f41e04ae427a087f5c73d0dd64b6
tree6034be2d67702bae9057856bdc8f236636715d76
parentf3d2883cc5df2147e53657aab33c544487202b37
md/raid5: sort bios

Previous patch (raid5: only dispatch IO from raid5d for harddisk raid)
defers IO dispatching. The goal is to create better IO pattern. At that
time, we don't sort the deffered IO and hope the block layer can do IO
merge and sort. Now the raid5-cache writeback could create large amount
of bios. And if we enable muti-thread for stripe handling, we can't
control when to dispatch IO to raid disks. In a lot of time, we are
dispatching IO which block layer can't do merge effectively.

This patch moves further for the IO dispatching defer. We accumulate
bios, but we don't dispatch all the bios after a threshold is met. This
'dispatch partial portion of bios' stragety allows bios coming in a
large time window are sent to disks together. At the dispatching time,
there is large chance the block layer can merge the bios. To make this
more effective, we dispatch IO in ascending order. This increases
request merge chance and reduces disk seek.

Signed-off-by: Shaohua Li <shli@fb.com>
drivers/md/raid5.c
drivers/md/raid5.h