• Zhengyuan Liu's avatar
    md/raid6: fix algorithm choice under larger PAGE_SIZE · f591df3c
    Zhengyuan Liu authored
    There are several algorithms available for raid6 to generate xor and syndrome
    parity, including basic int1, int2 ... int32 and SIMD optimized implementation
    like sse and neon.  To test and choose the best algorithms at the initial
    stage, we need provide enough disk data to feed the algorithms. However, the
    disk number we provided depends on page size and gfmul table, seeing bellow:
    
        const int disks = (65536/PAGE_SIZE) + 2;
    
    So when come to 64K PAGE_SIZE, there is only one data disk plus 2 parity disk,
    as a result the chosed algorithm is not reliable. For example, on my arm64
    machine with 64K page enabled, it will choose intx32 as the best one, although
    the NEON implementation is better.
    
    This patch tries to fix the problem by defining a constant raid6 disk number to
    supporting arbitrary page size.
    Suggested-by: default avatarH. Peter Anvin <hpa@zytor.com>
    Signed-off-by: default avatarZhengyuan Liu <liuzhengyuan@kylinos.cn>
    Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
    f591df3c
algos.c 6.54 KB