• Tejun Heo's avatar
    blkcg: make blkcg_gq's hierarchical · 3c547865
    Tejun Heo authored
    Currently a child blkg (blkcg_gq) can be created even if its parent
    doesn't exist.  ie. Given a blkg, it's not guaranteed that its
    ancestors will exist.  This makes it difficult to implement proper
    hierarchy support for blkcg policies.
    Always create blkgs recursively and make a child blkg hold a reference
    to its parent.  blkg->parent is added so that finding the parent is
    easy.  blkcg_parent() is also added in the process.
    This change can be visible to userland.  e.g. while issuing IO in a
    nested cgroup didn't affect the ancestors at all, now it will
    initialize all ancestor blkgs and zero stats for the request_queue
    will always appear on them.  While this is userland visible, this
    shouldn't cause any functional difference.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>