Messages in this thread | | | Date | Fri, 21 Mar 2014 21:31:20 +0100 | From | Oleg Nesterov <> | Subject | Re: please fix FUSION (Was: [v3.13][v3.14][Regression] kthread:makekthread_create()killable) |
| |
On 03/21, Linus Torvalds wrote: > > On Fri, Mar 21, 2014 at 11:34 AM, Oleg Nesterov <oleg@redhat.com> wrote: > > > > Yes, it seems that it actually needs > 30 secs. It spends most of the time > > (30.13286 seconds) in [..] > > So how about taking a completely different approach:
Due to the lack of knowledge I can not comment (or even actually understand) your suggestion.
But it probably falls into the "right fix" category, iow "THE FIX FROM MAINTAINERS" the temporary sigprocmask() hack should wait for.
I can't implement this by the same reason. And of course I won't insist that we need some really stupid (and wrong) solution until someone who understand makes the initialization asynchronous.
> - just say that waiting for devices in the module init sequence for > over 30 seconds is really really wrong. > > - make the damn mptsas driver just register the controller from the > init sequence, and then do device discovery asynchronously. > > The ATA layer does this correctly: it synchronously finds each host, > but then it does > > /* perform each probe asynchronously */ > for (i = 0; i < host->n_ports; i++) { > struct ata_port *ap = host->ports[i]; > async_schedule(async_port_probe, ap); > } > > and I really think SCSI drivers should do the same if they have this > kind of "ports can take forever to probe" behavior. > > What would be the equivalent magic to do this for SCSI? Could we just > make something like scsi_probe_and_add_lun() just always do this, the > same way ata_host_register() does it? > > Linus
| |