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?
Bart.