• Chaitanya Kulkarni's avatar
    null_blk: remove hardcoded alloc_cmd() parameter · 3d3472f3
    Chaitanya Kulkarni authored
    Only caller of alloc_cmd() is null_submit_bio() unconditionally sets
    second parameter to true and that is statically hard-coded in null_blk.
    There is no point in having statically hardcoded function parameter.
    
    Remove the unnecessary parameter can_wait and adjust the code so it
    can retain existing behavior of waiting when we don't get valid
    nullb_cmd from __alloc_cmd() in alloc_cmd().
    
    The restructured code avoids multiple return statements, multiple
    calls to __alloc_cmd() and resulting a fast path call to
    prepare_to_wait() due to removal of first alloc_cmd() call.
    
    Follow the pattern that we have in bio_alloc() to set the structure
    members in the structure allocation function in alloc_cmd() and pass
    bio to initialize newly allocated cmd->bio member.
    
    Follow the pattern in copy_to_nullb() to use result of one function call
    (null_cache_active()) to be used as a parameter to another function call
    (null_insert_page()), use result of alloc_cmd() as a first parameter to
    the null_handle_cmd() in null_submit_bio() function. This allow us to
    remove the local variable cmd on stack in null_submit_bio() that is in
    fast path.
    Signed-off-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
    Link: https://lore.kernel.org/r/20220216172945.31124-2-kch@nvidia.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    3d3472f3
main.c 54.3 KB