• D
    blkcg: use tryget logic when associating a blkg with a bio · 31118850
    Dennis Zhou (Facebook) 提交于
    There is a very small change a bio gets caught up in a really
    unfortunate race between a task migration, cgroup exiting, and itself
    trying to associate with a blkg. This is due to css offlining being
    performed after the css->refcnt is killed which triggers removal of
    blkgs that reach their blkg->refcnt of 0.
    
    To avoid this, association with a blkg should use tryget and fallback to
    using the root_blkg.
    
    Fixes: 08e18eab ("block: add bi_blkg to the bio for cgroups")
    Reviewed-by: NJosef Bacik <josef@toxicpanda.com>
    Signed-off-by: NDennis Zhou <dennisszhou@gmail.com>
    Cc: Jiufei Xue <jiufei.xue@linux.alibaba.com>
    Cc: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Josef Bacik <josef@toxicpanda.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    31118850
bio.c 51.2 KB