• Xiao Ni's avatar
    md/raid10: improve raid10 discard request · bcc90d28
    Xiao Ni authored
    Now the discard request is split by chunk size. So it takes a long time
    to finish mkfs on disks which support discard function. This patch improve
    handling raid10 discard request. It uses the similar way with patch
    29efc390 (md/md0: optimize raid0 discard handling).
    
    But it's a little complex than raid0. Because raid10 has different layout.
    If raid10 is offset layout and the discard request is smaller than stripe
    size. There are some holes when we submit discard bio to underlayer disks.
    
    For example: five disks (disk1 - disk5)
    D01 D02 D03 D04 D05
    D05 D01 D02 D03 D04
    D06 D07 D08 D09 D10
    D10 D06 D07 D08 D09
    The discard bio just wants to discard from D03 to D10. For disk3, there is
    a hole between D03 and D08. For disk4, there is a hole between D04 and D09.
    D03 is a chunk, raid10_write_request can handle one chunk perfectly. So
    the part that is not aligned with stripe size is still handled by
    raid10_write_request.
    
    If reshape is running when discard bio comes and the discard bio spans the
    reshape position, raid10_write_request is responsible to handle this
    discard bio.
    
    I did a test with this patch set.
    Without patch:
    time mkfs.xfs /dev/md0
    real4m39.775s
    user0m0.000s
    sys0m0.298s
    
    With patch:
    time mkfs.xfs /dev/md0
    real0m0.105s
    user0m0.000s
    sys0m0.007s
    
    nvme3n1           259:1    0   477G  0 disk
    └─nvme3n1p1       259:10   0    50G  0 part
    nvme4n1           259:2    0   477G  0 disk
    └─nvme4n1p1       259:11   0    50G  0 part
    nvme5n1           259:6    0   477G  0 disk
    └─nvme5n1p1       259:12   0    50G  0 part
    nvme2n1           259:9    0   477G  0 disk
    └─nvme2n1p1       259:15   0    50G  0 part
    nvme0n1           259:13   0   477G  0 disk
    └─nvme0n1p1       259:14   0    50G  0 part
    Reviewed-by: default avatarColy Li <colyli@suse.de>
    Reviewed-by: default avatarGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
    Signed-off-by: default avatarXiao Ni <xni@redhat.com>
    Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
    bcc90d28
raid10.c 143 KB