• Gioh Kim's avatar
    block/rnbd-clt: Dynamically allocate sglist for rnbd_iu · 5a1328d0
    Gioh Kim authored
    The BMAX_SEGMENT static array for scatterlist is embedded in
    rnbd_iu structure to avoid memory allocation in hot IO path.
    In many cases, we do need only several sg entries because many IOs
    have only several segments.
    
    This patch change rnbd_iu to check the number of segments in the request
    and allocate sglist dynamically.
    
    For io path, use sg_alloc_table_chained to allocate sg list faster.
    
    First it makes two sg entries after pdu of request.
    The sg_alloc_table_chained uses the pre-allocated sg entries
    if the number of segments of the request is less than two.
    So it reduces the number of memory allocation.
    Signed-off-by: default avatarGioh Kim <gi-oh.kim@cloud.ionos.com>
    Signed-off-by: default avatarJack Wang <jinpu.wang@cloud.ionos.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    5a1328d0
rnbd-clt.h 4.1 KB