> > > SRB_FLAG_BYPASS_FROZEN_QUEUE in this SRB. In this case SCSIPORT jumps
over
> > the IoStartNextPacketByKey and goes with IoStartNextPacket with IRP
you’ve
> > constructed. But I do not think it’s very good idea… Just do not
like
>
> Yes, and this seems to be really working, though can possibly introduce
> nasty problems with w2k’s power management.
Why? Do you have problems with power management in your virtual targets?
Queue management.
Using “bypass queue” SRBs can be possibly incompatible with power
management.
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> I though if there are no free system worker threads my work item callback
will be just called later I never though it can make the system deadlock.
Where did you get this information?
From practice.
Let’s imagine the Cc’s lazy writer (which is an Ex work item) calls your
driver which does ExQueueWorkItem. Let’s also imagine the Cc then waits for
your driver’s completion.
If the worker thread limit is hit - you have a deadlock. Lazy writer waits
for the work item completion, and work item sits on the queue and not
serviced due to thread limit.
This really occurs, at least in NT4.
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> > It is far better to write your own workitem code using
> PsCreateSystemThread(). We have such code and it is quarantined to be
> dead-lock free.
And use KeAttachProcess()/KeDetachProcess)() in own thread?
Sorry, but - for what?
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> If you look at FAST FAT. It uses an internal counter and will not post
more than two (I IRC) work items at a time. This is to keep the FSD from
Daniel Lovinger from MS’s filesystems team once suggested to use as small
number of Ex work items as possible, maybe even using a single Ex work item
and having a list of your private work items to be processed sequentially by
a single Ex work item.
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> > And use KeAttachProcess()/KeDetachProcess)() in own thread?
Sorry, but - for what?
For attaching to system process if the one that I created with
PsCreateSystemThread() was not system. But this is rudimentary…
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> For attaching to system process if the one that I created with
PsCreateSystemThread() was not system. But this is rudimentary…
Pass NULL to PsCreateSystemThread.
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com