[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <C1438B59050E1B4C9482FF3266AD6BA32D8DA54B73@gretna.indigovision.com>
Date: Tue, 6 Sep 2011 15:40:44 +0100
From: Bruce Stenning <b.stenning@...igovision.com>
To: Tejun Heo <htejun@...il.com>
CC: Mark Lord <kernel@...savvy.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-ide@...r.kernel.org" <linux-ide@...r.kernel.org>,
Jeff Garzik <jgarzik@...ox.com>
Subject: RE: sata_mv port lockup on hotplug (kernel 2.6.38.2)
I wrote:
> Is it attempting to wake the scsi_eh_3 thread while scsi_error_handler
> is still processing an EH, which then calls scsi_restart_operations and
> puts the scsi_eh_3 thread back to sleep again?
It does look to me as if there is a potential race between the scsi_eh thread
and the wake-up mechanism.
host_eh_scheduled is read here in scsi_error_handler:
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
if ((shost->host_failed == 0 && shost->host_eh_scheduled == 0) ||
For scheduling an EH, scsi_schedule_eh takes the shost->host_lock, increments
shost->host_eh_scheduled, and then wakes the EH thread. If this happens
between the scsi_eh thread reading host_eh_scheduled and sending itself to
sleep, then nothing will wake up the thread and host_eh_scheduled will not
be inspected again.
Is there some mechanism that I've missed to prevent this from happening?
Bruce.
Latest News at: http://www.indigovision.com/index.php/en/news.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists