On 8/9/18 2:17 PM, Bart Van Assche wrote: > On Thu, 2018-08-09 at 12:56 -0700, Tejun Heo wrote: >> Hello, >> >> On Thu, Aug 09, 2018 at 07:53:36AM -0700, Bart Van Assche wrote: >>> +/** >>> + * blkg_lookup - look up blkg for the specified request queue >>> + * @q: request_queue of interest >>> + * >>> + * Lookup blkg for @q at the root level. See also blkg_lookup(). >>> + */ >>> +static inline struct blkcg_gq *blkg_root_lookup(struct request_queue *q) >>> +{ >>> + struct blkcg_gq *blkg; >>> + >>> + rcu_read_lock(); >>> + blkg = blkg_lookup(&blkcg_root, q); >>> + rcu_read_unlock(); >>> + >>> + return blkg; >>> +} >> >> So, root blkg is always available as long as the request_queue is >> alive. Sth like the following would be simpler? >> >> static inline struct blkcg_gq *blk_queue_root_blkg(struct request_queue *q) >> { >> return q->root_blkg; >> } > > That would not only be simpler, it would also avoid that blk_queue_root_blkg() > returns NULL if bypass mode is enabled and the request queue is still associated > with the block cgroup controller. How do you want to proceed with this change? Do a followup patch? -- Jens Axboe