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