Windows NT, 2000, and XP all allow asynchronous implementation in a device
driver and one driver that calls another driver must be able to handle this
return value (just like a driver must be able to handle being called at its
completion routine entry points at DISPATCH_LEVEL.) As I recall, driver
verifier has a mode where it will test this behavior by returning
STATUS_PENDING to every I/O operation.
In particular, the Windows file systems will post operations to work queues
when they experience lock conflicts. For example, here is a piece of code
in fastfat (from dirctrl.c in the Windows XP IFS Kit):
//
// If this is the initial query, then grab exclusive access in
// order to update the search string in the Ccb. We may
// discover that we are not the initial query once we grab the Fcb
// and downgrade our status.
//
if (InitialQuery) {
if (!FatAcquireExclusiveFcb( IrpContext, Dcb )) {
DebugTrace(0, Dbg, “FatQueryDirectory -> Enqueue to Fsp\n”, 0);
Status = FatFsdPostRequest( IrpContext, Irp );
DebugTrace(-1, Dbg, “FatQueryDirectory -> %08lx\n”, Status);
return Status;
}
This is one of three places in the directory control logic where they post
an operation to a worker thread. The reason you would observe this on an MP
system is that you will increase concurrent activity - but this particular
problem could happen even on a UP system with sufficient activity level.
Regards,
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
See the new NTFSD FAQ on the OSR Web Site!
-----Original Message-----
From: Dejan Maksimovic [mailto:xxxxx@alfasp.com]
Sent: Thursday, October 18, 2001 12:20 PM
To: File Systems Developers
Subject: [ntfsd] Re: directory filtering bug
STATUS_PENDING is a common return value for IoCalLDriver when listing a
directory, under XP, as it is on floppies, sometimes.
This will make sure you have good pending handling.
Also, with pending returned, there may a specific problem if you recall
the driver, in case that no file name passes the filter.
For others, just test!
Regards, Dejan.
Rob Fuller wrote:
Please tell us more about this bug. I imagine many of us want to know.
> -----Original Message-----
> From: Dejan Maksimovic [mailto:xxxxx@alfasp.com]
>
> P.S. Get Windows XP, on a dual processor machine. The directory
> filtering can have a bug that is exhibited on XP only.
You are currently subscribed to ntfsd as: xxxxx@alfasp.com
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
–
Kind regards, Dejan M. CEO Alfa Co. www.alfasp.com
E-mail: xxxxx@alfasp.com
ICQ#: 56570367
Alfa File Monitor - File monitoring system for Win32 developers.
Alfa File Protector - File protection and hiding system for Win32
developers.
You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com