• Tejun Heo's avatar
    blkcg: replace blkcg_policy->pd_size with ->pd_alloc/free_fn() methods · 001bea73
    Tejun Heo authored
    
    
    A blkg (blkcg_gq) represents the relationship between a cgroup and
    request_queue.  Each active policy has a pd (blkg_policy_data) on each
    blkg.  The pd's were allocated by blkcg core and each policy could
    request to allocate extra space at the end by setting
    blkcg_policy->pd_size larger than the size of pd.
    
    This is a bit unusual but was done this way mostly to simplify error
    handling and all the existing use cases could be handled this way;
    however, this is becoming too restrictive now that percpu memory can
    be allocated without blocking.
    
    This introduces two new mandatory blkcg_policy methods - pd_alloc_fn()
    and pd_free_fn() - which are used to allocate and release pd for a
    given policy.  As pd allocation is now done from policy side, it can
    simply allocate a larger area which embeds pd at the beginning.  This
    change makes ->pd_size pointless.  Removed.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    001bea73
blk-cgroup.h 17.8 KB