IS there any prioity based queuing requests at SCSI PORT level

Hi,

Scenerio:

Suppose there are some 30 Asynchronous read requests
from diffirent threads ( from user mode ) all
opearting at normal priority to a SCSI hard disk. All
these requests are queued at port driver. Now while
these requests are getting processed if a write
request comes from a thread (User mode) whose priority
is higher than normal. In this case do this write
request starve ? Or the write request is queued
before these reads as it has come from high thread
priority. Does this sychronization occur ? … If yes
who and at what level ?

Thanks,
Girish


Do You Yahoo!?
Yahoo! Photos – now, 100 FREE prints!
http://photos.yahoo.com

girish,
though i dont know how a SCSI port driver handles this, this is a common
scenario in NT kernel driver level which can i will try to generalize and
attempt to explain.
the very fact you mention that I/O requests are queued means, the current
thread which generated the read/write request is going to sleep/wait till
the request is processed & completed by a different thread. This can happen
at the driver level, or after you return from the driver some other piece of
code is going to wait by KeWaitForSingleObject(…) or whatever it may be.
NT or any OS as such doesnt dispatch/schedule suspended ( waiting for
resource ) threads, however high their thread priority was before it just
got suspended. So, some OTHER thread is going to process the queue, one by
one , usually a system worker thread running in a system process context,
without caring whether it is a read or write request. So the queue data
structure, whether FIFO or LIFO is THE factor which governs whether a I/O
request is going to starve and nothing else. This thread’s priority, which
is clearing the Q, doesnt matter as long as it gets a time slice from the
CPU at regular time intervals, to complete processing the Q elements

hope this explains a bit

alexander suresh

----- Original Message -----
From: Girish Kumar
To: File Systems Developers
Sent: Wednesday, June 14, 2000 6:09 AM
Subject: [ntfsd] IS there any prioity based queuing requests at SCSI PORT
level

> Hi,
>
> Scenerio:
>
> Suppose there are some 30 Asynchronous read requests
> from diffirent threads ( from user mode ) all
> opearting at normal priority to a SCSI hard disk. All
> these requests are queued at port driver. Now while
> these requests are getting processed if a write
> request comes from a thread (User mode) whose priority
> is higher than normal. In this case do this write
> request starve ? Or the write request is queued
> before these reads as it has come from high thread
> priority. Does this sychronization occur ? … If yes
> who and at what level ?
>
> Thanks,
> Girish
>
>
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Photos – now, 100 FREE prints!
> http://photos.yahoo.com
>
> —
> You are currently subscribed to ntfsd as: xxxxx@mobiliti.com
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
>

Hi,

Scenerio:

Suppose there are some 30 Asynchronous read requests
from diffirent threads ( from user mode ) all
opearting at normal priority to a SCSI hard disk.
All
these requests are queued at port driver. Now while
these requests are getting processed if a write
request comes from a thread (User mode) whose
priority
is higher than normal. In this case do this write
request starve ? Or the write request is queued
before these reads as it has come from high thread
priority. Does this sychronization occur ? … If
yes
who and at what level ?

Thanks,
Girish


Do You Yahoo!?
Send instant messages with Yahoo! Messenger.
http://im.yahoo.com/

> is higher than normal. In this case do this write

request starve ? Or the write request is queued
before these reads as it has come from high thread
priority. Does this sychronization occur ? … If

IIRC the synchronization by IoStartPacket-based queue does NOT pay any
attention to the thread priority.
The queue key is usually the disk sector number - to support elevator seeks,
thus optimizing the hardware access pattern.

Max