Question regarding FILE_IDs and reparse points

Hi

I have a question about FILE_ID’s across volumes. I am using FILE_ID’s
and volume id to store a list of files on which I need to perform
specific operations. This is OK till I hit reparse points.

say the file being opened is : c:\foo\bar\foobar.txt,
in MJ_CREATE I am looking for file_id_of(c:\foo\bar\foobar.txt) but if
c:\foo\bar happens to be a reparse point/volume mount pointing to d:,
I should actually be looking at FILE_ID of d:\foobar.txt. I don’t know
in MJ_CREATE, whether the path actually involves a reparse point.

What is a good way to solve this problem? Is there a VFS like
implementation for Windows? If yes, I would like to understand how do
they mimic the inode/vnode behaviour without falling into these traps.

Any help would be highly appreciated.

Thanks

Hello,
In the MJ_CREATE you will get a complete path even one of the component is
actually a reparse point. So if your c:\foo\bar points to d:\ you will still
see a request of c:\foo\bar\file.txt in your MJ_CREATE. The FSD will
complete the IRP with STATUS_REPARSE as the error code and will fill in the
target path I think in IRP->Tail->AuxilaryBuffer. The target path will be
d:\file.txt. After seeing STATUS_REPARSE as the error code, Iomgr will
reissue the request to D:. You can actually monitor for the STATUS_REPARSE
error code to determine if you have encounterd any reparse point. Make sure
that you only look for MountPoints and not any other type of reparse point.
-Kiran

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of NTFSD-List
Sent: Thursday, May 05, 2005 11:36 PM
To: Windows File Systems Devs Interest List
Subject: [ntfsd] Question regarding FILE_IDs and reparse points

Hi

I have a question about FILE_ID’s across volumes. I am using FILE_ID’s and
volume id to store a list of files on which I need to perform specific
operations. This is OK till I hit reparse points.

say the file being opened is : c:\foo\bar\foobar.txt, in MJ_CREATE I am
looking for file_id_of(c:\foo\bar\foobar.txt) but if c:\foo\bar happens to
be a reparse point/volume mount pointing to d:, I should actually be
looking at FILE_ID of d:\foobar.txt. I don’t know in MJ_CREATE, whether the
path actually involves a reparse point.

What is a good way to solve this problem? Is there a VFS like implementation
for Windows? If yes, I would like to understand how do they mimic the
inode/vnode behaviour without falling into these traps.

Any help would be highly appreciated.

Thanks


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

You are currently subscribed to ntfsd as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

I understand … but I want to find out if a path component contains a
volume mount point without sending the CREATE_IRP to the FSD. I would
guess I need to send down some IRP which doesn’t have any side-affects
(probably something like GET_INFORMATION or something)? Is there any
other way to find out if a pathname contains a valid volume mount
point.

Thanks

On 5/5/05, Kiran Joshi wrote:
> Hello,
> In the MJ_CREATE you will get a complete path even one of the component is
> actually a reparse point. So if your c:\foo\bar points to d:\ you will still
> see a request of c:\foo\bar\file.txt in your MJ_CREATE. The FSD will
> complete the IRP with STATUS_REPARSE as the error code and will fill in the
> target path I think in IRP->Tail->AuxilaryBuffer. The target path will be
> d:\file.txt. After seeing STATUS_REPARSE as the error code, Iomgr will
> reissue the request to D:. You can actually monitor for the STATUS_REPARSE
> error code to determine if you have encounterd any reparse point. Make sure
> that you only look for MountPoints and not any other type of reparse point.
> -Kiran
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of NTFSD-List
> Sent: Thursday, May 05, 2005 11:36 PM
> To: Windows File Systems Devs Interest List
> Subject: [ntfsd] Question regarding FILE_IDs and reparse points
>
> Hi
>
> I have a question about FILE_ID’s across volumes. I am using FILE_ID’s and
> volume id to store a list of files on which I need to perform specific
> operations. This is OK till I hit reparse points.
>
> say the file being opened is : c:\foo\bar\foobar.txt, in MJ_CREATE I am
> looking for file_id_of(c:\foo\bar\foobar.txt) but if c:\foo\bar happens to
> be a reparse point/volume mount pointing to d:, I should actually be
> looking at FILE_ID of d:\foobar.txt. I don’t know in MJ_CREATE, whether the
> path actually involves a reparse point.
>
> What is a good way to solve this problem? Is there a VFS like implementation
> for Windows? If yes, I would like to understand how do they mimic the
> inode/vnode behaviour without falling into these traps.
>
> Any help would be highly appreciated.
>
> Thanks
>
> —
> Questions? First check the IFS FAQ at
> https://www.osronline.com/article.cfm?id=17
>
> You are currently subscribed to ntfsd as: unknown lmsubst tag argument: ‘’
> 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@gmail.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

You will be able to query the existing mount points from mount manager, but
still you will face problems with junctions which the mount manager does not
track.
-Kiran

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of NTFSD-List
Sent: Friday, May 06, 2005 12:34 PM
To: Windows File Systems Devs Interest List
Subject: Re: [ntfsd] Question regarding FILE_IDs and reparse points

I understand … but I want to find out if a path component contains a volume
mount point without sending the CREATE_IRP to the FSD. I would guess I need
to send down some IRP which doesn’t have any side-affects (probably
something like GET_INFORMATION or something)? Is there any other way to
find out if a pathname contains a valid volume mount point.

Thanks

On 5/5/05, Kiran Joshi wrote:
> Hello,
> In the MJ_CREATE you will get a complete path even one of the
> component is actually a reparse point. So if your c:\foo\bar points to
> d:\ you will still see a request of c:\foo\bar\file.txt in your
> MJ_CREATE. The FSD will complete the IRP with STATUS_REPARSE as the
> error code and will fill in the target path I think in
> IRP->Tail->AuxilaryBuffer. The target path will be d:\file.txt. After
> seeing STATUS_REPARSE as the error code, Iomgr will reissue the
> request to D:. You can actually monitor for the STATUS_REPARSE error
> code to determine if you have encounterd any reparse point. Make sure that
you only look for MountPoints and not any other type of reparse point.
> -Kiran
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of NTFSD-List
> Sent: Thursday, May 05, 2005 11:36 PM
> To: Windows File Systems Devs Interest List
> Subject: [ntfsd] Question regarding FILE_IDs and reparse points
>
> Hi
>
> I have a question about FILE_ID’s across volumes. I am using FILE_ID’s
> and volume id to store a list of files on which I need to perform
> specific operations. This is OK till I hit reparse points.
>
> say the file being opened is : c:\foo\bar\foobar.txt, in MJ_CREATE I
> am looking for file_id_of(c:\foo\bar\foobar.txt) but if c:\foo\bar
> happens to be a reparse point/volume mount pointing to d:, I should
> actually be looking at FILE_ID of d:\foobar.txt. I don’t know in
> MJ_CREATE, whether the path actually involves a reparse point.
>
> What is a good way to solve this problem? Is there a VFS like
> implementation for Windows? If yes, I would like to understand how do
> they mimic the inode/vnode behaviour without falling into these traps.
>
> Any help would be highly appreciated.
>
> Thanks
>
> —
> Questions? First check the IFS FAQ at
> https://www.osronline.com/article.cfm?id=17
>
> You are currently subscribed to ntfsd as: unknown lmsubst tag argument: ‘’
> 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@gmail.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: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com