• Tejun Heo's avatar
    blkcg: perpcu_ref init/exit should be done from blkg_alloc/free() · ef069b97
    Tejun Heo authored
    blkg alloc is performed as a separate step from the rest of blkg
    creation so that GFP_KERNEL allocations can be used when creating
    blkgs from configuration file writes because otherwise user actions
    may fail due to failures of opportunistic GFP_NOWAIT allocations.
    
    While making blkgs use percpu_ref, 7fcf2b03 ("blkcg: change blkg
    reference counting to use percpu_ref") incorrectly added unconditional
    opportunistic percpu_ref_init() to blkg_create() breaking this
    guarantee.
    
    This patch moves percpu_ref_init() to blkg_alloc() so makes it use
    @gfp_mask that blkg_alloc() is called with.  Also, percpu_ref_exit()
    is moved to blkg_free() for consistency.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Fixes: 7fcf2b03 ("blkcg: change blkg reference counting to use percpu_ref")
    Cc: Dennis Zhou <dennis@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    ef069b97
blk-cgroup.c 46.6 KB