• Tejun Heo's avatar
    blkcg: use the usual get blkg path for root blkio_group · f51b802c
    Tejun Heo authored
    For root blkg, blk_throtl_init() was using throtl_alloc_tg()
    explicitly and cfq_init_queue() was manually initializing embedded
    cfqd->root_group, adding unnecessarily different code paths to blkg
    handling.
    
    Make both use the usual blkio_group get functions - throtl_get_tg()
    and cfq_get_cfqg() - for the root blkio_group too.  Note that
    blk_throtl_init() callsite is pushed downwards in
    blk_alloc_queue_node() so that @q is sufficiently initialized for
    throtl_get_tg().
    
    This simplifies root blkg handling noticeably for cfq and will allow
    further modularization of blkcg API.
    
    -v2: Vivek pointed out that using cfq_get_cfqg() won't work if
         CONFIG_CFQ_GROUP_IOSCHED is disabled.  Fix it by factoring out
         initialization of base part of cfqg into cfq_init_cfqg_base() and
         alloc/init/free explicitly if !CONFIG_CFQ_GROUP_IOSCHED.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    f51b802c
blk-core.c 77.8 KB