Why HWStartIO method is called synchronously?

Hi,

With Storport driver,  the routine HWBuildIO is called  wihtout synchronization i.e. without taking any locks. Hence this routine gets invoked paralelly for multiple commands.

However the routine HWStartIO is only called asynchronously. I.e. A spin lock is acquired by storport before calling this routine and is it released only after completing the execution of this routine. I understood from an article that this is done to avoid the interrupts taking the control away from this routine while this routine is executing.

My question is why it is important not to allow the control to be preempted by the ISR while the HWStartIO is executing? What consequences it will have to allow the control to be preempted in the middle of StartIO? Can i get a practical example anywhere?
raj_ksrtAsked:
Who is Participating?
 
DavidPresidentCommented:
I'll give you a good practical example.  Yesterday I was writing code on a win2k12 host that had 400+ disk drives attached, with multipathing and multiple initiators. Maybe 1200 targets.
Just imagine what would happen if they all tried to do all of their I/O at the same time. HWStartIO is designed for one I/O request, as it gets called once per I/O request.

It would simply be unworkable to allow multiple I/O requests to be in various phases of operation at the same time using multiple programs/threads.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.