• Y
    blk-mq: fix kabi broken due to request_wrapper · 31c285dd
    Yu Kuai 提交于
    hulk inclusion
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I65K8D
    CVE: NA
    
    --------------------------------
    
    Before commit f60df4a0 ("blk-mq: fix kabi broken in struct
    request"), drivers will got cmd address right after request, however,
    after this commit, drivers will got cmd address after request_wrapper
    instead, which is bigger than request and will cause compatibility
    issues.
    
    Fix the problem by placing request_wrapper behind cmd, so that the
    cmd address for drivers will stay the same.
    
    Before commit:		|request|cmd|
    After commit:		|request|request_wrapper|cmd|
    With this patch:	|request|cmd|request_wrapper|
    
    Performance test: arm64 Kunpeng-920 96 core
    
    1) null_blk setup:
    modprobe null_blk nr_devices=0 &&
        udevadm settle &&
        cd /sys/kernel/config/nullb &&
        mkdir nullb0 &&
        cd nullb0 &&
        echo 0 > completion_nsec &&
        echo 512 > blocksize &&
        echo 0 > home_node &&
        echo 0 > irqmode &&
        echo 1024 > size &&
        echo 0 > memory_backed &&
        echo 2 > queue_mode &&
    	echo 4096 > hw_queue_depth &&
    	echo 96 > submit_queues &&
        echo 1 > power
    
    2) fio test script:
    [global]
    ioengine=libaio
    direct=1
    numjobs=96
    iodepth=32
    bs=4k
    rw=randwrite
    allow_mounted_write=0
    time_based
    runtime=60
    group_reporting=1
    ioscheduler=none
    cpus_allowed_policy=split
    cpus_allowed=0-95
    
    [test]
    filename=/dev/nullb0
    
    3) iops test result:
    
    without this patch:	23.9M
    with this patch:	24.1M
    
    Fixes: f60df4a0 ("blk-mq: fix kabi broken in struct request")
    Signed-off-by: NYu Kuai <yukuai3@huawei.com>
    Reviewed-by: NHou Tao <houtao1@huawei.com>
    Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
    31c285dd
blk-mq.h 19.4 KB