* Calling scsi_done from queuecommand()
@ 2006-01-12 3:57 Zhikun Wang
2006-01-12 7:59 ` Arjan van de Ven
0 siblings, 1 reply; 3+ messages in thread
From: Zhikun Wang @ 2006-01-12 3:57 UTC (permalink / raw)
To: linux-scsi
Hi list,
Can we call scsi_done() to complete the I/O from the queuecommand() ? (e.g. to make queuecommand synchronous).
I try this method in my LsiLogic 22320 SCSI card driver in Redhat9, and i can correctly handle read command. But Write command is stop when i call scsi_done() in the queuecommand. I am very puzzled!
Thanks for any answers!
Regards,
-zkwang
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Calling scsi_done from queuecommand()
2006-01-12 3:57 Calling scsi_done from queuecommand() Zhikun Wang
@ 2006-01-12 7:59 ` Arjan van de Ven
2006-01-12 9:47 ` Zhikun Wang
0 siblings, 1 reply; 3+ messages in thread
From: Arjan van de Ven @ 2006-01-12 7:59 UTC (permalink / raw)
To: Zhikun Wang; +Cc: linux-scsi
On Thu, 2006-01-12 at 11:57 +0800, Zhikun Wang wrote:
> Hi list,
> Can we call scsi_done() to complete the I/O from the queuecommand() ?
yes that should be fine *IF THE COMMAND COMPLETED*. (for example that
can be done for battery backed ram cards)
> (e.g. to make queuecommand synchronous).
> I try this method in my LsiLogic 22320 SCSI card driver
but... that sounds unlikely to be right. That is real scsi, which means
you have to wait a REALLY long time (easily 5 miliseconds) before the
command completes, and you cannot sleep in queuecommand (it's called
from interrupt context). So this sounds really fishy
> in Redhat9,
you do realize you're using a truely antique linux kernel/distribution
there, right? I suggest you go to a far more recent (and an actual
maintained) distribution
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Re: Calling scsi_done from queuecommand()
2006-01-12 7:59 ` Arjan van de Ven
@ 2006-01-12 9:47 ` Zhikun Wang
0 siblings, 0 replies; 3+ messages in thread
From: Zhikun Wang @ 2006-01-12 9:47 UTC (permalink / raw)
To: Arjan van de Ven, linux-scsi
>On Thu, 2006-01-12 at 11:57 +0800, Zhikun Wang wrote:
> Hi list,
> Can we call scsi_done() to complete the I/O from the queuecommand() ?
>>yes that should be fine *IF THE COMMAND COMPLETED*. (for example that
>>can be done for battery backed ram cards)
> (e.g. to make queuecommand synchronous).
> I try this method in my LsiLogic 22320 SCSI card driver
>>but... that sounds unlikely to be right. That is real scsi, which means
>>you have to wait a REALLY long time (easily 5 miliseconds) before the
>>command completes, and you cannot sleep in queuecommand (it's called
>>from interrupt context). So this sounds really fishy
I intend to use a global variable to make queuecommand synchronously. In the <queuecommand function> i set the global variable to 0.
......
global = 0;
......
while(!global)
barrier();
SCpnt->scsi_done(SCpnt);
......
When the command completes, in the <interrupt routine> i set the global variable to 1.
......
global = 1;
......
this method works for read command, but write command will stop at scsi_done routine and then timeout!
i am very puzzled about this!
> in Redhat9,
>>you do realize you're using a truely antique linux kernel/distribution
>>there, right? I suggest you go to a far more recent (and an actual
>>maintained) distribution
i know Redhat9 is out of time, but i must use this kernel/distribution
in my project!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-01-12 9:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-12 3:57 Calling scsi_done from queuecommand() Zhikun Wang
2006-01-12 7:59 ` Arjan van de Ven
2006-01-12 9:47 ` Zhikun Wang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.