Re: [PATCH] remove name length check in a workqueue

Coywolf Qi Hunt
2005-08-11T16:22:59Z

On 8/11/05, Andrew Morton <akpm@osdl.org> wrote:
> James Bottomley <James.Bottomley@SteelEye.com> wrote:
> >
> > On Wed, 2005-08-10 at 10:37 -0700, Andrew Morton wrote:
> > > > and anyway, it doesn't have to be unique;
> > > > set_task_comm just does a strlcpy from the name, so it will be truncated
> > > > (same as for a binary with > 15 character name).
> > >
> > > Yup. But it'd be fairly silly to go adding the /%d, only to have it
> > > truncated off again.
> >
> > Well, but the other alternative is that we hit arbitrary BUG_ON() limits
> > in systems that create numbered workqueues which is rather contrary to
> > our scaleability objectives, isn't it?
>
> Another alternative is to stop passing in such long strings ;)
>
> > > What's the actual problem?
> >
> > What I posted originally; the current SCSI format for a workqueue:
> > scsi_wq_%d hits the bug after the host number rises to 100, which has
> > been seen by some enterprise person with > 100 HBAs.
> >
> > The reason for this name is that the error handler thread is called
> > scsi_eh_%d; so we could rename all our threads to avoid this, but one
> > day someone will come along with a huge enough machine to hit whatever
> > limit we squeeze it down to.
>
> OK, well scsi is using single-threaded workqueues anyway. So we could do:
>
> if (singlethread)
> BUG_ON(strlen(name) > sizeof(task_struct.comm) - 1);
> else
> BUG_ON(strlen(name) > sizeof(task_struct.comm) - 1 - 4);
>
> which gets you 10,000,000 HBAs. Enough?
>
> Ho hum, OK, let's just kill the BUG_ON.

s/BUG_ON/WARN_ON/ ?

--
Coywolf Qi Hunt