Extended attributes and IFS test

Hello All,

I implemented our FSD behavior for extended attributes to match the behavior
of IFS Kit MS FastFat sample. The FastFat sample does not support extended
attributes on Fat32 volumes. Our FSD cannot support extended attributes as
well (it is an UDF file system). Although we return failure statuses
correctly the IFS test, it blames us for not supporting extended attributes
correctly. I see that MS IFS test is unable to create initial set of files
on our volume, set that includes files with extended attributes. The
behavior of our FSD is IMHO logical, because we can’t create file with
extended attributes if do not support them.

During create operations we are returning STATUS_EAS_NOT_SUPPORTED for non
null pointer to extended attributes buffer, during query/set extended
attributes operations we return STATUS_EAS_NOT_SUPPORTED for regular files
and directories and STATUS_INVALID_PARAMETER for root directory and all
other kinds of opened files. We return zeroed buffer and STATUS_SUCESS in
response to FileEaInformation request. This is the same behavior as the
FastFat sample.

Possibly MS IFS test has a bug in the module that creates initial set of
files. Another possibility is that MS FastFat sample is not complete (?!).

In my opinion if MS IFS test can’t create file with extended attributes then
they should attempt to create files without extended attributes and continue
test with these files. The correct result then will be
IFS_TEST_SUCCESS_NOT_SUPPORTED.

Afterwards, I ran the MS IFS test and Sysinternals File Monitor on MS Fat32
volume and I saw that IFS test issued following requests:
1 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
2 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

3 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
4 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
5 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
6 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsSizeInformation
7 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
8 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
9 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
10 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

11 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
12 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
13 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
14 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

15 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
16 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
17 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
18 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

19 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
20 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
21 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
22 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

23 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
24 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
25 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
26 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

27 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
28 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
29 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
30 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
31 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsVolumeInformation
32 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsSizeInformation
33 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

34 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

35 10:05:12 PM ifstest.exe:1396 IRP_MJ_READ I:
SUCCESS Offset: 0 Length: 512
36 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
37 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
38 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
39 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

40 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
41 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
42 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
43 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

44 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
45 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
46 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
47 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

48 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
49 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
50 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
51 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

52 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
53 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
54 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
55 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

56 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
57 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
58 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
59 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsAttributeInformation

60 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
61 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
62 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:\eainfo
FILE NOT FOUND Options: Open Directory Access: All
63 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:\eainfo
FILE NOT FOUND Options: Open Directory Access: All
64 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
65 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS

This points me that IFS test queries only some volume information. I think
this cannot answer if FSD supports extended attributes or not. Could it be
that IFS test is using a very dirty trick with FSD name (i.e. FAT32)??

May be I am wrong but where? Could somebody point me to right direction?

PS. I am using IFS test from HCT v.12 and Windows XP SP2.

Best regards,
Oleksiy

Hi Oleksiy,

The IFS Kit Fastfat sample is complete. The problem is that the IFS
Test are not capable of functioning fulling on 3rd party file systems.
The tests do rely on the file system name to determine what
functionality should be supported instead of relying solely on what
attributes the volume says it supports.

It’s on our list to get these test to be behave correctly for 3rd party
file systems, but this work hasn’t been completed yet. Until that
happens, when you run the IFS Tests against your file system, you will
get some incorrect failures as you describe below.

Regards,

Molly Brown
Microsoft Corporation

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 Oleksiy Shatylo
Sent: Friday, December 03, 2004 8:23 AM
To: Windows File Systems Devs Interest List
Subject: [ntfsd] Extended attributes and IFS test

Hello All,

I implemented our FSD behavior for extended attributes to match the
behavior of IFS Kit MS FastFat sample. The FastFat sample does not
support extended attributes on Fat32 volumes. Our FSD cannot support
extended attributes as well (it is an UDF file system). Although we
return failure statuses correctly the IFS test, it blames us for not
supporting extended attributes correctly. I see that MS IFS test is
unable to create initial set of files on our volume, set that includes
files with extended attributes. The behavior of our FSD is IMHO logical,
because we can’t create file with extended attributes if do not support
them.

During create operations we are returning STATUS_EAS_NOT_SUPPORTED for
non null pointer to extended attributes buffer, during query/set
extended attributes operations we return STATUS_EAS_NOT_SUPPORTED for
regular files and directories and STATUS_INVALID_PARAMETER for root
directory and all other kinds of opened files. We return zeroed buffer
and STATUS_SUCESS in response to FileEaInformation request. This is the
same behavior as the FastFat sample.

Possibly MS IFS test has a bug in the module that creates initial set of
files. Another possibility is that MS FastFat sample is not complete
(?!).

In my opinion if MS IFS test can’t create file with extended attributes
then they should attempt to create files without extended attributes and
continue test with these files. The correct result then will be
IFS_TEST_SUCCESS_NOT_SUPPORTED.

Afterwards, I ran the MS IFS test and Sysinternals File Monitor on MS
Fat32 volume and I saw that IFS test issued following requests:
1 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
2 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

3 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
4 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
5 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
6 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsSizeInformation
7 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
8 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
9 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
10 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

11 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
12 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
13 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
14 10:05:11 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

15 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
16 10:05:11 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
17 10:05:11 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
18 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

19 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
20 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
21 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
22 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

23 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
24 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
25 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
26 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

27 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
28 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
29 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
30 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
31 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsVolumeInformation
32 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS FileFsSizeInformation
33 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

34 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

35 10:05:12 PM ifstest.exe:1396 IRP_MJ_READ I:
SUCCESS Offset: 0 Length: 512
36 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
37 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
38 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
39 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

40 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
41 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
42 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
43 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

44 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
45 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
46 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
47 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

48 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
49 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
50 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
51 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

52 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
53 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
54 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
55 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

56 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
57 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
58 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE I:
SUCCESS Options: Open Access: All
59 10:05:12 PM ifstest.exe:1396
IRP_MJ_QUERY_VOLUME_INFORMATION I: SUCCESS
FileFsAttributeInformation

60 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
61 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS
62 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE
I:\eainfo
FILE NOT FOUND Options: Open Directory Access: All
63 10:05:12 PM ifstest.exe:1396 IRP_MJ_CREATE
I:\eainfo
FILE NOT FOUND Options: Open Directory Access: All
64 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLEANUP I:
SUCCESS
65 10:05:12 PM ifstest.exe:1396 IRP_MJ_CLOSE I:
SUCCESS

This points me that IFS test queries only some volume information. I
think this cannot answer if FSD supports extended attributes or not.
Could it be that IFS test is using a very dirty trick with FSD name
(i.e. FAT32)??

May be I am wrong but where? Could somebody point me to right direction?

PS. I am using IFS test from HCT v.12 and Windows XP SP2.

Best regards,
Oleksiy


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