md/raid5: Allow degraded raid6 to do rmw
authorChangSyun Peng <allenpeng@synology.com>
Fri, 31 Jul 2020 09:50:31 +0000 (17:50 +0800)
committerSong Liu <songliubraving@fb.com>
Mon, 3 Aug 2020 06:54:31 +0000 (23:54 -0700)
commit45a4d8fd6c7926e7991a1b29233d725fe12935da
tree412d26f3b5d9f5958a3678c77b07a7efc96ca619
parenta1c6ae3d9f3dd6aa5981a332a6f700cf1c25edef
md/raid5: Allow degraded raid6 to do rmw

Degraded raid6 always do reconstruct-write now. With raid6 xor supported,
we can do rmw in degraded raid6. This patch can reduce many read IOs to
improve performance.

If the failed disk is P, Q or the disk we want to write to, we may need to
do reconstruct-write in max degraded raid6. In this situation we can not
read enough data from handle_stripe_dirtying() so we have to set force_rcw
in handle_stripe_fill() to read all data.

Reviewed-by: Alex Wu <alexwu@synology.com>
Reviewed-by: BingJing Chang <bingjingc@synology.com>
Reviewed-by: Danny Shih <dannyshih@synology.com>
Signed-off-by: ChangSyun Peng <allenpeng@synology.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
drivers/md/raid5.c