directory filtering bug

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: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

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: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

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

I never found how I can make DV return PENDING - does anyone know how?
Also, the pending won’t make a problem I’ve encountered on UP, as it would
on MP machines.
This is specific for IRP_MJ_DIRECTORY_CONTROL - not other calls.

Regards, Dejan.

Tony Mason wrote:

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: 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: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com