• Isaac J. Manjarres's avatar
    loop: Fix the max_loop commandline argument treatment when it is set to 0 · 85c50197
    Isaac J. Manjarres authored
    Currently, the max_loop commandline argument can be used to specify how
    many loop block devices are created at init time. If it is not
    specified on the commandline, CONFIG_BLK_DEV_LOOP_MIN_COUNT loop block
    devices will be created.
    
    The max_loop commandline argument can be used to override the value of
    CONFIG_BLK_DEV_LOOP_MIN_COUNT. However, when max_loop is set to 0
    through the commandline, the current logic treats it as if it had not
    been set, and creates CONFIG_BLK_DEV_LOOP_MIN_COUNT devices anyway.
    
    Fix this by starting max_loop off as set to CONFIG_BLK_DEV_LOOP_MIN_COUNT.
    This preserves the intended behavior of creating
    CONFIG_BLK_DEV_LOOP_MIN_COUNT loop block devices if the max_loop
    commandline parameter is not specified, and allowing max_loop to
    be respected for all values, including 0.
    
    This allows environments that can create all of their required loop
    block devices on demand to not have to unnecessarily preallocate loop
    block devices.
    
    Fixes: 73285082 ("remove artificial software max_loop limit")
    Cc: stable@vger.kernel.org
    Cc: Ken Chen <kenchen@google.com>
    Signed-off-by: default avatarIsaac J. Manjarres <isaacmanjarres@google.com>
    Link: https://lore.kernel.org/r/20221208212902.765781-1-isaacmanjarres@google.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    85c50197
loop.c 56.7 KB