• Tejun Heo's avatar
    blkcg: make sure blkg_lookup() returns %NULL if @q is bypassing · 80fd9979
    Tejun Heo authored
    
    
    Currently, blkg_lookup() doesn't check @q bypass state.  This patch
    updates blk_queue_bypass_start() to do synchronize_rcu() before
    returning and updates blkg_lookup() to check blk_queue_bypass() and
    return %NULL if bypassing.  This ensures blkg_lookup() returns %NULL
    if @q is bypassing.
    
    This is to guarantee that nobody is accessing policy data while @q is
    bypassing, which is necessary to allow replacing blkio_cgroup->pd[] in
    place on policy [de]activation.
    
    v2: Added more comments explaining bypass guarantees as suggested by
        Vivek.
    
    v3: Added more comments explaining why there's no synchronize_rcu() in
        blk_cleanup_queue() as suggested by Vivek.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    80fd9979