On Sat, May 09, 2020 at 06:09:38PM -0700, Bart Van Assche wrote:
> On 2020-05-08 20:10, Luis Chamberlain wrote:
> > @@ -493,6 +496,12 @@ static int do_blk_trace_setup(struct request_queue *q, 
> > char *name, dev_t dev,
> >      */
> >     strreplace(buts->name, '/', '_');
> >  
> > +   if (q->blk_trace) {
> > +           pr_warn("Concurrent blktraces are not allowed on %s\n",
> > +                   buts->name);
> > +           return -EBUSY;
> > +   }
> > +
> >     bt = kzalloc(sizeof(*bt), GFP_KERNEL);
> >     if (!bt)
> >             return -ENOMEM;
> 
> Is this really sufficient? Shouldn't concurrent do_blk_trace_setup()
> calls that refer to the same request queue be serialized to really
> prevent that debugfs attribute creation fails?

We'd have to add something like a linked list. Right now I'm just
clarifying things which were not clear before. What you describe is
a functional feature change. I'm just trying to fix a bug and clarify
limitations.

> How about using the block device name instead of the partition name in
> the error message since the concurrency context is the block device and
> not the partition?

blk device argument can be NULL here. sg-generic is one case.

 Luis

Reply via email to