ASSERT in FltMgr.sys (checked version)

Calling FltReferenceFileNameInformation() at elevated IRQL – nuts!

OK, what I am doing is making a copy of the pointer to the name info
structure (along with some other info) for later processing. This occurs
inside a post-write operation at elevated IRQL.

I guess I could re-synchronize back to dispatch, but this is the only thing
keeping me from queuing the operation quickly at this point. :frowning:

/ted

Ted,

Rather than calling FltReferenceFileNameInformation why don’t you not
release the FileNameInformation untill you are done with it. This will be
more efficient. We’ll take a look why FltReferenceFileNameInformation is not
callable at dispatch level’s and fix it.

Thanks
Ravinder

This posting is provided “AS IS” with no warranties, and confers no rights.

“Ted Hess” wrote in message news:xxxxx@ntfsd…
> Calling FltReferenceFileNameInformation() at elevated IRQL – nuts!
>
> OK, what I am doing is making a copy of the pointer to the name info
> structure (along with some other info) for later processing. This occurs
> inside a post-write operation at elevated IRQL.
>
> I guess I could re-synchronize back to dispatch, but this is the only
thing
> keeping me from queuing the operation quickly at this point. :frowning:
>
> /ted
>

Ted,

It turns out that you can never reference a name information structure
at DPC level because names are stored in PAGED pool. Could you please
describe what you are trying to accomplish. As Ravinder pointed out, I
don’t see why you would ever need to call the reference API.

It was good this came up because we discovered that we don’t properly
support freeing a name information structure at DPC level (like we do
with contexts). This we will fix.

Neal Christiansen
Microsoft File System Filter Group Lead
This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ravinder Thind
Sent: Monday, March 15, 2004 2:31 PM
To: Windows File Systems Devs Interest List
Subject: Re:[ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

Rather than calling FltReferenceFileNameInformation why don’t you not
release the FileNameInformation untill you are done with it. This will
be
more efficient. We’ll take a look why FltReferenceFileNameInformation is
not
callable at dispatch level’s and fix it.

Thanks
Ravinder

This posting is provided “AS IS” with no warranties, and confers no
rights.

“Ted Hess” wrote in message news:xxxxx@ntfsd…
> Calling FltReferenceFileNameInformation() at elevated IRQL – nuts!
>
> OK, what I am doing is making a copy of the pointer to the name info
> structure (along with some other info) for later processing. This
occurs
> inside a post-write operation at elevated IRQL.
>
> I guess I could re-synchronize back to dispatch, but this is the only
thing
> keeping me from queuing the operation quickly at this point. :frowning:
>
> /ted
>


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

I have a name information structure pointer in my stream context. From
time-to-time (say write activity), I want to send some information to a
user-mode component. This information currently contains a reference to the
file name information structure. I just called
FltReferenceFileNameInformation when queueing the item and then released it
when the item has been de-queued and copied to the user-mode buffer. I
suppose I could allocate another buffer and copy the name into it, but this
seemed more eloquent.

I have a number of work-arounds that could be done. One such is NOT queing
the data to the user-mode component if the write completion is at DPC level.
I could defer the queuing operation until some other IO (next pre-Write
dispatch) at non-DPC level occurs. This data is not time critical.

/ted

-----Original Message-----
From: Neal Christiansen [mailto:xxxxx@windows.microsoft.com]
Sent: Monday, March 15, 2004 5:46 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

It turns out that you can never reference a name information structure at
DPC level because names are stored in PAGED pool. Could you please describe
what you are trying to accomplish. As Ravinder pointed out, I don’t see why
you would ever need to call the reference API.

It was good this came up because we discovered that we don’t properly
support freeing a name information structure at DPC level (like we do with
contexts). This we will fix.

Neal Christiansen
Microsoft File System Filter Group Lead
This posting is provided “AS IS” with no warranties, and confers no rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ravinder Thind
Sent: Monday, March 15, 2004 2:31 PM
To: Windows File Systems Devs Interest List
Subject: Re:[ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

Rather than calling FltReferenceFileNameInformation why don’t you not
release the FileNameInformation untill you are done with it. This will be
more efficient. We’ll take a look why FltReferenceFileNameInformation is not
callable at dispatch level’s and fix it.

Thanks
Ravinder

This posting is provided “AS IS” with no warranties, and confers no rights.

“Ted Hess” wrote in message news:xxxxx@ntfsd…
> Calling FltReferenceFileNameInformation() at elevated IRQL – nuts!
>
> OK, what I am doing is making a copy of the pointer to the name info
> structure (along with some other info) for later processing. This
occurs
> inside a post-write operation at elevated IRQL.
>
> I guess I could re-synchronize back to dispatch, but this is the only
thing
> keeping me from queuing the operation quickly at this point. :frowning:
>
> /ted
>


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com To
unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@livevault.com To unsubscribe
send a blank email to xxxxx@lists.osr.com

Ted,

That usage of the name information referencing routine sounds reasonable
since I am assuming it is possible for the stream to get closed (thus
wanting to release the name information structure) before you finishing
copying data from the name information structure.

After reviewing the code for FltReleaseFileNameInformation() we realized
that there is no point in changing this routine to allow it to be called
at DPC level. This is because the name information structure resides in
paged pool. We didn’t want them in non-paged pool because they can
consume a significant amount of memory if there are a lot of open files.
This means it is never safe to access the name information structure at
DPC level. If you don’t agree with this please let me know why.

The documentation for the naming APIs does say that you must be running
at IRQL <= APC_LEVEL but it does not specifically state that the name
information structures themselves reside in paged pool. I have filed a
doc bug to get this fixed.

Neal Christiansen
Microsoft File System Filter Group Lead
This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ted Hess
Sent: Monday, March 15, 2004 3:03 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] ASSERT in FltMgr.sys (checked version)

I have a name information structure pointer in my stream context. From
time-to-time (say write activity), I want to send some information to a
user-mode component. This information currently contains a reference to
the
file name information structure. I just called
FltReferenceFileNameInformation when queueing the item and then released
it
when the item has been de-queued and copied to the user-mode buffer. I
suppose I could allocate another buffer and copy the name into it, but
this
seemed more eloquent.

I have a number of work-arounds that could be done. One such is NOT
queing
the data to the user-mode component if the write completion is at DPC
level.
I could defer the queuing operation until some other IO (next pre-Write
dispatch) at non-DPC level occurs. This data is not time critical.

/ted

-----Original Message-----
From: Neal Christiansen [mailto:xxxxx@windows.microsoft.com]
Sent: Monday, March 15, 2004 5:46 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

It turns out that you can never reference a name information structure
at
DPC level because names are stored in PAGED pool. Could you please
describe
what you are trying to accomplish. As Ravinder pointed out, I don’t see
why
you would ever need to call the reference API.

It was good this came up because we discovered that we don’t properly
support freeing a name information structure at DPC level (like we do
with
contexts). This we will fix.

Neal Christiansen
Microsoft File System Filter Group Lead
This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ravinder Thind
Sent: Monday, March 15, 2004 2:31 PM
To: Windows File Systems Devs Interest List
Subject: Re:[ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

Rather than calling FltReferenceFileNameInformation why don’t you not
release the FileNameInformation untill you are done with it. This will
be
more efficient. We’ll take a look why FltReferenceFileNameInformation is
not
callable at dispatch level’s and fix it.

Thanks
Ravinder

This posting is provided “AS IS” with no warranties, and confers no
rights.

“Ted Hess” wrote in message news:xxxxx@ntfsd…
> Calling FltReferenceFileNameInformation() at elevated IRQL – nuts!
>
> OK, what I am doing is making a copy of the pointer to the name info
> structure (along with some other info) for later processing. This
occurs
> inside a post-write operation at elevated IRQL.
>
> I guess I could re-synchronize back to dispatch, but this is the only
thing
> keeping me from queuing the operation quickly at this point. :frowning:
>
> /ted
>


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com
To
unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@livevault.com To
unsubscribe
send a blank email to xxxxx@lists.osr.com


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Neal -

This should not be a problem. I have a couple of solutions including adding
a ref count to the stream context and queue that instead. My stream context
is in NPP.

/ted

-----Original Message-----
From: Neal Christiansen [mailto:xxxxx@windows.microsoft.com]
Sent: Monday, March 15, 2004 8:07 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

That usage of the name information referencing routine sounds reasonable
since I am assuming it is possible for the stream to get closed (thus
wanting to release the name information structure) before you finishing
copying data from the name information structure.

After reviewing the code for FltReleaseFileNameInformation() we realized
that there is no point in changing this routine to allow it to be called at
DPC level. This is because the name information structure resides in paged
pool. We didn’t want them in non-paged pool because they can consume a
significant amount of memory if there are a lot of open files. This means it
is never safe to access the name information structure at DPC level. If you
don’t agree with this please let me know why.

The documentation for the naming APIs does say that you must be running at
IRQL <= APC_LEVEL but it does not specifically state that the name
information structures themselves reside in paged pool. I have filed a doc
bug to get this fixed.

Neal Christiansen
Microsoft File System Filter Group Lead
This posting is provided “AS IS” with no warranties, and confers no rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ted Hess
Sent: Monday, March 15, 2004 3:03 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] ASSERT in FltMgr.sys (checked version)

I have a name information structure pointer in my stream context. From
time-to-time (say write activity), I want to send some information to a
user-mode component. This information currently contains a reference to the
file name information structure. I just called
FltReferenceFileNameInformation when queueing the item and then released it
when the item has been de-queued and copied to the user-mode buffer. I
suppose I could allocate another buffer and copy the name into it, but this
seemed more eloquent.

I have a number of work-arounds that could be done. One such is NOT queing
the data to the user-mode component if the write completion is at DPC level.
I could defer the queuing operation until some other IO (next pre-Write
dispatch) at non-DPC level occurs. This data is not time critical.

/ted

-----Original Message-----
From: Neal Christiansen [mailto:xxxxx@windows.microsoft.com]
Sent: Monday, March 15, 2004 5:46 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

It turns out that you can never reference a name information structure at
DPC level because names are stored in PAGED pool. Could you please describe
what you are trying to accomplish. As Ravinder pointed out, I don’t see why
you would ever need to call the reference API.

It was good this came up because we discovered that we don’t properly
support freeing a name information structure at DPC level (like we do with
contexts). This we will fix.

Neal Christiansen
Microsoft File System Filter Group Lead
This posting is provided “AS IS” with no warranties, and confers no rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ravinder Thind
Sent: Monday, March 15, 2004 2:31 PM
To: Windows File Systems Devs Interest List
Subject: Re:[ntfsd] ASSERT in FltMgr.sys (checked version)

Ted,

Rather than calling FltReferenceFileNameInformation why don’t you not
release the FileNameInformation untill you are done with it. This will be
more efficient. We’ll take a look why FltReferenceFileNameInformation is not
callable at dispatch level’s and fix it.

Thanks
Ravinder

This posting is provided “AS IS” with no warranties, and confers no rights.

“Ted Hess” wrote in message news:xxxxx@ntfsd…
> Calling FltReferenceFileNameInformation() at elevated IRQL – nuts!
>
> OK, what I am doing is making a copy of the pointer to the name info
> structure (along with some other info) for later processing. This
occurs
> inside a post-write operation at elevated IRQL.
>
> I guess I could re-synchronize back to dispatch, but this is the only
thing
> keeping me from queuing the operation quickly at this point. :frowning:
>
> /ted
>


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com To
unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@livevault.com To unsubscribe
send a blank email to xxxxx@lists.osr.com


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com To
unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@livevault.com To unsubscribe
send a blank email to xxxxx@lists.osr.com