On Wed, May 16, 2012 at 1:07 PM, Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> wrote: > + while (!kthread_should_stop()) { > + struct scsi_cmnd *cmnd; > + struct scsi_ram_cmnd *ram_cmnd; > + > + spin_lock_irqsave(host->host_lock, flags); > + if (list_empty(&ram_device->commands)) { > + set_current_state(TASK_INTERRUPTIBLE); > + spin_unlock_irq(host->host_lock); The spin_[un]lock/ variants don't match. > +static int scsi_ram_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd) .... > + if (use_thread) { > + spin_lock_irqsave(shost->host_lock, flags); > + if (list_empty(&ram_device->commands)) > + wake_up_process(ram_device->thread); Didn't look in detail but if the queue is empty then why would you want to wake up the kthread? What if you just wake_up after list_add_tail below? > + list_add_tail(&ram_cmnd->queue, &ram_device->commands); > + spin_unlock_irqrestore(shost->host_lock, flags); > + } else { > + scsi_ram_execute_command(cmnd); > + } Chetan Loke -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html