openzfsonwindows / openzfs

OpenZFS on Linux and FreeBSD
https://openzfs.github.io/openzfs-docs
Other
478 stars 18 forks source link

Path to passing Windows Hardware Lab Kit #279

Open lundman opened 1 year ago

lundman commented 1 year ago

Presumably we need to at least pass ifstest.exe cleanly. There are somethings we might never pass, as we do not have the same limitations - if it checks that EAs can only be 64KB etc?

Here is a current run:

ifstest.exe

``` C:\src\openzfs>ifstest.exe -g Virus E:\ /n .\TestResults.log /N 356789AB /T /p /m /E -R /j /r c: -d \Ntfs -a \datacoh.exe /u ifstest /U *rw53w52 -------------------------------------------------- +++Microsoft (R) Installable File System Test for Windows XP/2003/Vista+++:: Probe-Header: : -------------------------------------------------- 3 ------------------------------- Group: Security SetDaclSecurityTest. Failed! SetOwnerSecurityTest. Failed! SetGroupSecurityTest. SetSaclSecurityTest. DirectoryTraverseTest. Failed! ------------------------------- Group: OpenCreateGeneral FileSystemDeviceOpenTest. FileFullPathCreationTest. DirectoryFullPathCreationTest. FileRelativePathCreationTest. DirectoryRelativePathCreationTest. FileOpenByIDTest. Failed! NonDirectoryFileOpenTest. Failed! OpenVolumeTest. Failed! CreatePagingFileTest. Failed! FileNameLengthTest. HFHTest. UnicodeOnDiskTest. CaseSensitiveTest. PreserveCaseTest. ShortFileNameTest. ShareAccessTest TestVariant :00010001 Failed! TestVariant :00020002 Failed! AlternateStreamTest. StreamShareTest. Failed! ------------------------------- Group: OpenCreateParameters OpenFileTest. OpenFileDirTest. CreateFileTest. CreateFileDirTest. Failed! OpenAlwaysFileTest. OpenAlwaysFileDirTest. OverwriteFileTest. OverwriteFileAllocTest. Failed! OverwriteFileAttrTest. OverwriteAlwaysFileTest. OverwriteAlwaysAllocTest. Failed! OverwriteAlwaysAttrTest. SupersedeFileTest. SupersedeFileAllocTest. Failed! SupersedeFileAttrTest. FileAllocationSizeTest. Failed! ExecuteAccessTest. ReadOnlyAttributeTest. Failed! HiddenAttributeTest. SystemAttributeTest. ArchiveAttributeTest. NormalAttributeTest. DirectoryAttributeTest. ------------------------------- Group: CloseCleanupDelete UpdateOnCloseTest TestVariant :00000001 Failed! UpdateOnCloseDirTest TestVariant :00000001 Failed! TestVariant :00000001 Failed! TestVariant :00000001 Failed! TestVariant :00000001 Failed! TruncateOnCloseTest. DeleteOnLastCloseTest TestVariant :00000001 Failed! TestVariant :00000002 Failed! TestVariant :00000003 Failed! TunnelingTest. ------------------------------- Group: VolumeInformation VolumeInformationTest. SizeInformationTest. DeviceInformationTest. AttributeInformationTest. ------------------------------- Group: FileInformation BasicInformationTest TestVariant :00010001 Failed! StandardInformationTest TestVariant :00010001 Failed! InternalInformationTest. EaInformationTest. NameInformationTest TestVariant :00020002 Failed! TestVariant :00020002 Failed! AllInformationTest. AllocationInformationTest TestVariant :00010001 Failed! ZeroAllocationInformationTest TestVariant :00010001 Failed! CompressionInformationTest. DispositionInformationTest. EndOfFileInformationTest. LinkInformationTest. SimpleRenameInformationTest TestVariant :00010001 Failed! ConflictingRenameInformationTest TestVariant :00010001 Failed! AlternateNameInformationTest.. FileNetworkOpenInformationTest TestVariant :00010001 Failed! StreamInformationTest. Failed! StreamStandardInformationTest. Failed! HardLinkInformationTest. Failed! TimeStampTest. Failed! StatInformationTest TestVariant :00010001 Failed! QueryInformationByNameTest. ------------------------------- Group: EaInformation CreateEaInformationTest. SetEaInformationTest TestVariant :00010001 Failed! SingleEaEntryTest TestVariant :00010001 Failed! FullEaInformationTest TestVariant :00010001 Failed! ListEaInformationTest TestVariant :00010001 Failed! IndexEaInformationTest TestVariant :00010001 Failed! ------------------------------- Group: DirectoryInformation FileNameDirectoryInformationTest. FileDirectoryInformationTest. FullDirectoryInformationTest. BothDirectoryInformationTest. ------------------------------- Group: FileLocking LockSharedExTest. UnlockRangeTest. LockOverlapTest. LockRangeTest. LockFailImmediateTest. LockOverlappedTest. UnlockAllTest. UnlockRangeOnCloseTest. LockKeyTest. ------------------------------- Group: OpLocks OplockBreakItoIITest. Failed! OplockBreakIItoNoneTest. Failed! OplockBreakIandIIOnCloseTest. Failed! OplockIIWriteBreakingTest. Failed! BatchOplocksTest. Failed! BreakNotifyTest. Failed! CompleteImmediatelyTest. Failed! OplockReadBreakItoIITest OplockLevel1Test. Failed! OplockSetInfoBreakTest. Failed! LockOplockBreakTest. Failed! ------------------------------- Group: ChangeNotification NotificationDeleteTest. Failed! NotificationCloseTest. NotificationFilenameTest. NotificationNonDirectoryTest. NotificationSecurityTest. NotificationCleanupAttribTest. Failed! ------------------------------- Group: DeviceControl DeviceIoControlTest. ------------------------------- Group: FileSystemControlGeneral GetRetrievalPointersTest. Failed! SetCompressionTest. Failed! GetVolumeBitmapTest. Failed! MoveFileTest. Failed! ------------------------------- Group: ReadWrite ReadWriteTest. ReadWriteCoherencyTest. Failed! AppendDataTest. AtomicSeekReadTest. ZeroLengthIOTest. ReadWriteRangeTest. EventAsyncIOTest. ZeroOnExtendTest. AVChangeLogTest. IntegrityTest. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed!. Failed! ------------------------------- Group: SectionsCaching MaintainSectionMappingTest. DataImageCoherencyTest. Failed! ExistingUserMappingTest. Failed! TruncateWithUserMappingTest. Failed! ExtendingWithUserMappingTest. Failed! FlushBuffersRootTest. ------------------------------- Group: ObjectId SetObjectIDTest. Failed! GetObjectIDTest. Failed! SetUniqueObjectIDDuplicateNameTest. Failed! SetUniqueObjectIDNameCollisionTest. Failed! DeleteObjectIDTest. Failed! CreateOrGetObjectIDTest. Failed! ObjectOpenByIDTest. Failed! NameInformationExTest. Failed! SetExtendedObjectIDTest. Failed! SetObjectIDVolumeTest. Failed! GetObjectIDVolumeTest. Failed! EnumObjectIDTest. Failed! NotificationObjectIDAddedTest. Failed! NotificationObjectIDRemovedTest. Failed! NotificationObjectIDDeletedTest. Failed! NotificationObjectIDNotTunnelledTest. NotificationObjectIDTunnelledCollisionTest. Failed! TunnelObjectIDTest. Failed! ------------------------------- Group: MountPoints FileGraftTest. Failed! FileGraftStreamTest. Failed! DirectoryGraftEmptyTest. Failed! DirectoryGraftEmptyFileTest. Failed! DirectoryGraftEmptyStreamTest. Failed! CreateDirectoryExDirectoryTest. CreateDirectoryExVolumeTest. Failed! DirectoryGraftTest. LocalMountPointTest. Failed! ------------------------------- Group: ReparsePoints SetPointInvalidParamTest. Failed! SetPointAccessDeniedTest. Failed! SetPointInvalidBufferSizeTest. SetPointIoReparseDataInvalidTest. SetPointIoReparseTagInvalidTest. SetPointDirectoryNotEmptyTest. Failed! SetPointEASNotSupportedTest. SetPointIoReparseTagMismatchTest. Failed! SetPointAttributeConflictTest. Failed! GetPointInvalidParamTest. Failed! GetPointInvalidUserBufferTest. Failed! GetPointNotReparseTest. Failed! GetPointBufferSmallTest. Failed! DelPointInvalidParmTest. Failed! DelPointAccessDeniedTest. Failed! DelPointInvalidBufferSizeTest. Failed! DelPointIoReparseDataInvalidTest. Failed! DelPointIoReparseTagInvalidTest. Failed! DelPointNotReparseTest. Failed! DelPointIoReparseTagMismatchTest. Failed! DelPointAttributeConflictTest. Failed! FileAttributeReparsePointTest. Failed! OpenReparsePointTest. Failed! EnumReparsePointsTest. Failed! QueryFileAttributeTagInfoTest. Failed! QueryFullAttributesReparseTest. Failed! ChangeNotificationReparseTest. Failed! DeleteFileDirReparsePointTest. Failed! SetPointExInvalidParamTest. Failed! SetPointExAccessDeniedTest. Failed! SetPointExInvalidBufferSizeTest. Failed! SetPointExIoReparseDataInvalidTest. Failed! SetPointExIoReparseTagInvalidTest. Failed! SetPointExDirectoryNotEmptyTest. Failed! SetPointExEASNotSupportedTest. SetPointExIoReparseTagMismatchTest. Failed! SetPointExAttributeConflictTest. ------------------------------- Group: SparseFiles SparseStreamTest. Failed! SparseStreamDirTest. Failed! SparseNonSparseStreamTest. FileInformationSparseAttrTest. Failed! ResetSparseAttrOverwriteTest. Failed! ResetSparseAttrSupersedeTest. Failed! SparseCompressedStreamTest. Failed! SparseMoveFileTest. Failed! SparseZeroDataTest. SparseZeroDataAllocTest. Failed! SparseUserMapZeroTest. SparseAllocatedRangesTest. Failed! SparseUserMappedSectionTest. ------------------------------- Group: Encryption CreateEncryptedFileTest. Failed! CreateEncryptedDirTest. SuperOverEncryptedTest. Failed! DirectoryEncryptedNewFileTest. Failed! DirectoryEncryptedSuperOverTest. Failed! DirectoryEncryptedNewDirTest. EncryptDecryptFileTest. Failed! ReadWriteRawEncryptedTest. EncryptionStatusTest. EncryptionAttributeTest. Failed! EncryptionCompressionTest. Failed! EncryptionDecompressionTest. Failed! ------------------------------- Group: Quotas VolumeQuotaNoneTest. Failed! VolumeQuotaTrackTest. Failed! VolumeQuotaEnforceTest. Failed! VolumeQuotaUserThresholdTest. Failed! VolumeQuotaThresholdTest. Failed! VolumeQuotaUserLimitTest. Failed! VolumeQuotaLimitTest. Failed! QuerySetQueryQuotaTest. Failed! ------------------------------- Group: ChangeJournal DeleteChangeJournalTest. Failed! CreateChangeJournalTest. Failed! ReadChangeJournalTest. Failed! ReadFileChangeJournalTest. Failed! WriteCloseRecordTest. Failed! QueryChangeJournalTest. Failed! ChangeJournalTest. Failed! ChangeJournalTrimTest. Failed! ------------------------------- Group: StreamEnhancements StreamRenameTest. Failed! StreamDeleteTest. Failed! StreamQueryNamesTest. Failed! StreamNotifyNameTest. Failed! StreamNotifySizeTest. Failed! StreamNotifyWriteTest. Failed! ------------------------------- Group: DefragEnhancements MoveDirTest. Failed! MoveViewTest. Failed! ------------------------------- Group: FileSystemControlVolume MountedDirtyTest ```

We should start to chip away at these.

lundman commented 1 year ago

The OpenCreateGeneral test run

OpenCreateGeneral

``` -------------------------------------------------- +++Microsoft (R) Installable File System Test for Windows XP/2003/Vista+++:: Probe-Header: : +++Test SW Build 0014 Init Friday September 29, 2023 09:43:31+++ -------------------------------------------------- 3Test :FileSystemDeviceOpenTest Group :OpenCreateGeneral Status :80000010 (IFSTEST_TEST_NOT_SUPPORTED) Description :{Msg# OpCreatG!devopen!10} This was a check to ensure that the file system device name was specifed. Use the /d switch on the ifstest.exe command line. Test :FileFullPathCreationTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :DirectoryFullPathCreationTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :FileRelativePathCreationTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :DirectoryRelativePathCreationTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :FileOpenByIDTest Group :OpenCreateGeneral Status :C0000015 (IFSTEST_TEST_ATTRIBUTE_ERROR) LastGeneralValue :00000080 ExpectedGeneralValue :00000027 Description :{Msg# OpCreatG!fopenid!18} The attributes did not match in the file that was opened by ID. Test :NonDirectoryFileOpenTest Group :OpenCreateGeneral Status :C000001E (IFSTEST_TEST_NTAPI_FAILURE_CODE) LastNtStatus :C00000BA STATUS_FILE_IS_A_DIRECTORY ExpectedNtStatus :C00000BA STATUS_FILE_IS_A_DIRECTORY Description :{Msg# OpCreatG!nondirf!13} Attempt to open an existing file with 0 desired access and the DIRECTORY FILE create option. This operation did not return the expected status. Test :OpenVolumeTest Group :OpenCreateGeneral Status :C000001E (IFSTEST_TEST_NTAPI_FAILURE_CODE) LastNtStatus :00000000 STATUS_SUCCESS ExpectedNtStatus :C0000043 STATUS_SHARING_VIOLATION Description :{Msg# OpCreatG!openvol!11} Attempting to open the volume with ShareAccess 0. This can only work if there are NO open handles. We were expecting a failure since we have 1 open handle. Test :CreatePagingFileTest Group :OpenCreateGeneral Status :80000010 (IFSTEST_TEST_NOT_SUPPORTED) Description :{Msg# OpCreatG!crpagef!10} Paging file test not enabled. Use the /p option to enable this test. Test :FileNameLengthTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :HFHTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :UnicodeOnDiskTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :CaseSensitiveTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Description :{Msg# OpCreatG!casesen!14a} Tunneling is not turned on. Disable8dot3 = 0x2, bSNCreateDisabled = 0x1 Test :PreserveCaseTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :ShortFileNameTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :ShareAccessTest Group :OpenCreateGeneral Status :C000001E (IFSTEST_TEST_NTAPI_FAILURE_CODE) LastNtStatus :00000000 STATUS_SUCCESS ExpectedNtStatus :C0000034 STATUS_OBJECT_NAME_NOT_FOUND TestVariant :00010001 TEST_VARIANT_FILE Description :{Msg# OpCreatG!shareacc!34} An unexpected status was returned. The file/dir was opened with DELETE desired access and SHARE DELETE share access. A second attempt to open the file/dir was performed. The attempt used READ ATTRIBUTES desired access and 0 share access. Test :ShareAccessTest Group :OpenCreateGeneral Status :C000001E (IFSTEST_TEST_NTAPI_FAILURE_CODE) LastNtStatus :00000000 STATUS_SUCCESS ExpectedNtStatus :C0000043 STATUS_SHARING_VIOLATION LastGeneralValue :00000001 TestVariant :00020002 TEST_VARIANT_DIR Description :{Msg# OpCreatG!shareacc!11} An unexpected status was returned. The file/dir was opened with READ DATA desired access and 0 share access. A second attempt to open the file/dir was performed. The attempt used READ DATA or LIST DIRECTORY desired access and 0 share access. Test :AlternateStreamTest Group :OpenCreateGeneral Status :00000000 (IFSTEST_SUCCESS) Test :StreamShareTest Group :OpenCreateGeneral Status :C000001E (IFSTEST_TEST_NTAPI_FAILURE_CODE) LastNtStatus :C0000035 STATUS_OBJECT_NAME_COLLISION ExpectedNtStatus :00000000 STATUS_SUCCESS Description :{Msg# OpCreatG!strmshar!17} Failure creating stream 2 \strmshar:stream2. Test :OpenCreateGeneral Group :OpenCreateGeneral Status :40000006 (IFSTEST_INFO_END_OF_GROUP) ```

The FileID atrribute is odd

LastGeneralValue :00000080
ExpectedGeneralValue :00000027

So ZFS return FILE_ATTRIBUTE_NORMAL but for some reason it expects 27: FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM But perhaps it changed Attributes to 27 as a test, and we fail to keep them. This is more likely to be the issue.

The Access/Sharing is known, we need to call those functions in more combinations, and it is fairly low priority to me.

The only real one to look into here is StreamShareTest where we fail creating strmshar:stream2 but should not.

Update: Using FileTest.exe to query attributes and set them to 0x27, will return 0x27 when queried. But if you close the file, and re-open it, it is 0x80. So we need to store attributes to disk.

Update: The new code stores the FileAttributes to disk, using correct xvattr zfs_setattr() calls as well. Takes care of the largest concern in this group. Sharing Violations are as exciting.

lundman commented 1 year ago

The OpenCreateParameters test run

OpenCreateParameters

``` 3Test :OpenFileTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OpenFileDirTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :CreateFileTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :CreateFileDirTest Group :OpenCreateParameters Status :C000001E (IFSTEST_TEST_NTAPI_FAILURE_CODE) LastNtStatus :00000000 STATUS_SUCCESS ExpectedNtStatus :C0000035 STATUS_OBJECT_NAME_COLLISION Description :{Msg# OpCreatP!crfiled!14} An attempt was made to create an existing file \crfiled in the directory \??\E:\opcreatp. The status returned should have been: object name collision. Check the last NT status returned. Test :OpenAlwaysFileTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OpenAlwaysFileDirTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OverwriteFileTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OverwriteFileAllocTest Group :OpenCreateParameters Status :C0000014 (IFSTEST_TEST_ALLOCATION_SIZE_ERROR) ExpectedGeneralValue :00002710 Description :{Msg# OpCreatP!ovwraloc!13} The allocation size of the file \ovwraloc.dat in the directory \??\E:\opcreatp was not large enough to encompass the requested allocation. Test :OverwriteFileAttrTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OverwriteAlwaysFileTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OverwriteAlwaysAllocTest Group :OpenCreateParameters Status :C0000014 (IFSTEST_TEST_ALLOCATION_SIZE_ERROR) ExpectedGeneralValue :00002710 Description :{Msg# OpCreatP!ovalal!14} The allocation size of the file \lalavo.dat in the directory \??\E:\opcreatp wasnot greater than the requested amount at file creation time. Test :OverwriteAlwaysAttrTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :SupersedeFileTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :SupersedeFileAllocTest Group :OpenCreateParameters Status :C0000014 (IFSTEST_TEST_ALLOCATION_SIZE_ERROR) ExpectedGeneralValue :00002710 Description :{Msg# OpCreatP!supraloc!13} The allocation size of the file \supraloc.dat in the directory \??\E:\opcreatp was not large enough to encompass the requested allocation. Test :SupersedeFileAttrTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :FileAllocationSizeTest Group :OpenCreateParameters Status :C0000014 (IFSTEST_TEST_ALLOCATION_SIZE_ERROR) ExpectedGeneralValue :00007D00 Description :{Msg# OpCreatP!filealoc!13} The queried allocation size of the file \colaelif.dat in the directory \??\E:\opcreatp was not larger than the requested allocation size. Test :ExecuteAccessTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :ReadOnlyAttributeTest Group :OpenCreateParameters Status :C0000017 (IFSTEST_TEST_READONLY_ATTRIBUTE_ERROR) LastGeneralValue :00000080 ExpectedGeneralValue :00000021 Description :{Msg# OpCreatP!roattr!14} The file attributes of the file roattr.dat in the directory \??\E:\opcreatp was incorrect. This file should have had both the readonly and archive bits set. Test :HiddenAttributeTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :SystemAttributeTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :ArchiveAttributeTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :NormalAttributeTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :DirectoryAttributeTest Group :OpenCreateParameters Status :00000000 (IFSTEST_SUCCESS) Test :OpenCreateParameters Group :OpenCreateParameters Status :40000006 (IFSTEST_INFO_END_OF_GROUP) ```

We fail a ReadOnly test here, so might be related to OpenCreateGeneral test too.

Plenty AllocationSize issues, mostly ignored that feature, since it is "optionally pre-allocate space". But we should throw that in there.

The lacking STATUS_OBJECT_NAME_COLLISION is probably a real problem to fix.

lundman commented 1 year ago

The ReadWrite test run

ReadWrite

``` C:\src\openzfs>ifstest /g ReadWrite E: /v -------------------------------------------------- +++Microsoft (R) Installable File System Test for Windows XP/2003/Vista+++:: Probe-Header: : +++Test SW Build 0014 Init Saturday October 7, 2023 14:45:57+++ -------------------------------------------------- 3Test :ReadWriteTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :ReadWriteCoherencyTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :AppendDataTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :AtomicSeekReadTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :ZeroLengthIOTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :ReadWriteRangeTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :EventAsyncIOTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :ZeroOnExtendTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :AVChangeLogTest Group :ReadWrite Status :00000001 (IFSTEST_SUCCESS_NOT_SUPPORTED) Description :{Msg# readwr!av!11} Filesystem does not support Change Journal Test :IntegrityTest Group :ReadWrite Status :00000000 (IFSTEST_SUCCESS) Test :ReadWrite Group :ReadWrite Status :40000006 (IFSTEST_INFO_END_OF_GROUP) ```

Turns out it expected to be able to set ValidDataLength to slightly larger than filesize, then when issuing reads beyond filesize, everything should be zeros.