Changeset 78486 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- May 13, 2019 11:21:46 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/utils/fs/FsPerf.cpp
r78379 r78486 273 273 kCmdOpt_FStat, 274 274 kCmdOpt_NoFStat, 275 #ifdef RT_OS_WINDOWS 276 kCmdOpt_NtQueryInfoFile, 277 kCmdOpt_NoNtQueryInfoFile, 278 kCmdOpt_NtQueryVolInfoFile, 279 kCmdOpt_NoNtQueryVolInfoFile, 280 #endif 275 281 kCmdOpt_FChMod, 276 282 kCmdOpt_NoFChMod, … … 348 354 static const RTGETOPTDEF g_aCmdOptions[] = 349 355 { 350 { "--dir", 'd', RTGETOPT_REQ_STRING }, 351 { "--relative-dir", 'r', RTGETOPT_REQ_NOTHING }, 352 { "--comms-dir", 'c', RTGETOPT_REQ_STRING }, 353 { "--comms-slave", 'C', RTGETOPT_REQ_NOTHING }, 354 { "--seconds", 's', RTGETOPT_REQ_UINT32 }, 355 { "--milliseconds", 'm', RTGETOPT_REQ_UINT64 }, 356 357 { "--enable-all", 'e', RTGETOPT_REQ_NOTHING }, 358 { "--disable-all", 'z', RTGETOPT_REQ_NOTHING }, 359 360 { "--many-files", kCmdOpt_ManyFiles, RTGETOPT_REQ_UINT32 }, 361 { "--no-many-files", kCmdOpt_NoManyFiles, RTGETOPT_REQ_NOTHING }, 362 { "--files-per-dir", kCmdOpt_ManyTreeFilesPerDir, RTGETOPT_REQ_UINT32 }, 363 { "--subdirs-per-dir", kCmdOpt_ManyTreeSubdirsPerDir, RTGETOPT_REQ_UINT32 }, 364 { "--tree-depth", kCmdOpt_ManyTreeDepth, RTGETOPT_REQ_UINT32 }, 365 366 { "--open", kCmdOpt_Open, RTGETOPT_REQ_NOTHING }, 367 { "--no-open", kCmdOpt_NoOpen, RTGETOPT_REQ_NOTHING }, 368 { "--fstat", kCmdOpt_FStat, RTGETOPT_REQ_NOTHING }, 369 { "--no-fstat", kCmdOpt_NoFStat, RTGETOPT_REQ_NOTHING }, 370 { "--fchmod", kCmdOpt_FChMod, RTGETOPT_REQ_NOTHING }, 371 { "--no-fchmod", kCmdOpt_NoFChMod, RTGETOPT_REQ_NOTHING }, 372 { "--futimes", kCmdOpt_FUtimes, RTGETOPT_REQ_NOTHING }, 373 { "--no-futimes", kCmdOpt_NoFUtimes, RTGETOPT_REQ_NOTHING }, 374 { "--stat", kCmdOpt_Stat, RTGETOPT_REQ_NOTHING }, 375 { "--no-stat", kCmdOpt_NoStat, RTGETOPT_REQ_NOTHING }, 376 { "--chmod", kCmdOpt_ChMod, RTGETOPT_REQ_NOTHING }, 377 { "--no-chmod", kCmdOpt_NoChMod, RTGETOPT_REQ_NOTHING }, 378 { "--utimes", kCmdOpt_Utimes, RTGETOPT_REQ_NOTHING }, 379 { "--no-utimes", kCmdOpt_NoUtimes, RTGETOPT_REQ_NOTHING }, 380 { "--rename", kCmdOpt_Rename, RTGETOPT_REQ_NOTHING }, 381 { "--no-rename", kCmdOpt_NoRename, RTGETOPT_REQ_NOTHING }, 382 { "--dir-open", kCmdOpt_DirOpen, RTGETOPT_REQ_NOTHING }, 383 { "--no-dir-open", kCmdOpt_NoDirOpen, RTGETOPT_REQ_NOTHING }, 384 { "--dir-enum", kCmdOpt_DirEnum, RTGETOPT_REQ_NOTHING }, 385 { "--no-dir-enum", kCmdOpt_NoDirEnum, RTGETOPT_REQ_NOTHING }, 386 { "--mk-rm-dir", kCmdOpt_MkRmDir, RTGETOPT_REQ_NOTHING }, 387 { "--no-mk-rm-dir", kCmdOpt_NoMkRmDir, RTGETOPT_REQ_NOTHING }, 388 { "--stat-vfs", kCmdOpt_StatVfs, RTGETOPT_REQ_NOTHING }, 389 { "--no-stat-vfs", kCmdOpt_NoStatVfs, RTGETOPT_REQ_NOTHING }, 390 { "--rm", kCmdOpt_Rm, RTGETOPT_REQ_NOTHING }, 391 { "--no-rm", kCmdOpt_NoRm, RTGETOPT_REQ_NOTHING }, 392 { "--chsize", kCmdOpt_ChSize, RTGETOPT_REQ_NOTHING }, 393 { "--no-chsize", kCmdOpt_NoChSize, RTGETOPT_REQ_NOTHING }, 394 { "--read-tests", kCmdOpt_ReadTests, RTGETOPT_REQ_NOTHING }, 395 { "--no-read-tests", kCmdOpt_NoReadTests, RTGETOPT_REQ_NOTHING }, 396 { "--read-perf", kCmdOpt_ReadPerf, RTGETOPT_REQ_NOTHING }, 397 { "--no-read-perf", kCmdOpt_NoReadPerf, RTGETOPT_REQ_NOTHING }, 356 { "--dir", 'd', RTGETOPT_REQ_STRING }, 357 { "--relative-dir", 'r', RTGETOPT_REQ_NOTHING }, 358 { "--comms-dir", 'c', RTGETOPT_REQ_STRING }, 359 { "--comms-slave", 'C', RTGETOPT_REQ_NOTHING }, 360 { "--seconds", 's', RTGETOPT_REQ_UINT32 }, 361 { "--milliseconds", 'm', RTGETOPT_REQ_UINT64 }, 362 363 { "--enable-all", 'e', RTGETOPT_REQ_NOTHING }, 364 { "--disable-all", 'z', RTGETOPT_REQ_NOTHING }, 365 366 { "--many-files", kCmdOpt_ManyFiles, RTGETOPT_REQ_UINT32 }, 367 { "--no-many-files", kCmdOpt_NoManyFiles, RTGETOPT_REQ_NOTHING }, 368 { "--files-per-dir", kCmdOpt_ManyTreeFilesPerDir, RTGETOPT_REQ_UINT32 }, 369 { "--subdirs-per-dir", kCmdOpt_ManyTreeSubdirsPerDir, RTGETOPT_REQ_UINT32 }, 370 { "--tree-depth", kCmdOpt_ManyTreeDepth, RTGETOPT_REQ_UINT32 }, 371 372 { "--open", kCmdOpt_Open, RTGETOPT_REQ_NOTHING }, 373 { "--no-open", kCmdOpt_NoOpen, RTGETOPT_REQ_NOTHING }, 374 { "--fstat", kCmdOpt_FStat, RTGETOPT_REQ_NOTHING }, 375 { "--no-fstat", kCmdOpt_NoFStat, RTGETOPT_REQ_NOTHING }, 376 #ifdef RT_OS_WINDOWS 377 { "--nt-query-info-file", kCmdOpt_NtQueryInfoFile, RTGETOPT_REQ_NOTHING }, 378 { "--no-nt-query-info-file", kCmdOpt_NoNtQueryInfoFile, RTGETOPT_REQ_NOTHING }, 379 { "--nt-query-vol-info-file", kCmdOpt_NtQueryVolInfoFile, RTGETOPT_REQ_NOTHING }, 380 { "--no-nt-query-vol-info-file",kCmdOpt_NoNtQueryVolInfoFile, RTGETOPT_REQ_NOTHING }, 381 #endif 382 { "--fchmod", kCmdOpt_FChMod, RTGETOPT_REQ_NOTHING }, 383 { "--no-fchmod", kCmdOpt_NoFChMod, RTGETOPT_REQ_NOTHING }, 384 { "--futimes", kCmdOpt_FUtimes, RTGETOPT_REQ_NOTHING }, 385 { "--no-futimes", kCmdOpt_NoFUtimes, RTGETOPT_REQ_NOTHING }, 386 { "--stat", kCmdOpt_Stat, RTGETOPT_REQ_NOTHING }, 387 { "--no-stat", kCmdOpt_NoStat, RTGETOPT_REQ_NOTHING }, 388 { "--chmod", kCmdOpt_ChMod, RTGETOPT_REQ_NOTHING }, 389 { "--no-chmod", kCmdOpt_NoChMod, RTGETOPT_REQ_NOTHING }, 390 { "--utimes", kCmdOpt_Utimes, RTGETOPT_REQ_NOTHING }, 391 { "--no-utimes", kCmdOpt_NoUtimes, RTGETOPT_REQ_NOTHING }, 392 { "--rename", kCmdOpt_Rename, RTGETOPT_REQ_NOTHING }, 393 { "--no-rename", kCmdOpt_NoRename, RTGETOPT_REQ_NOTHING }, 394 { "--dir-open", kCmdOpt_DirOpen, RTGETOPT_REQ_NOTHING }, 395 { "--no-dir-open", kCmdOpt_NoDirOpen, RTGETOPT_REQ_NOTHING }, 396 { "--dir-enum", kCmdOpt_DirEnum, RTGETOPT_REQ_NOTHING }, 397 { "--no-dir-enum", kCmdOpt_NoDirEnum, RTGETOPT_REQ_NOTHING }, 398 { "--mk-rm-dir", kCmdOpt_MkRmDir, RTGETOPT_REQ_NOTHING }, 399 { "--no-mk-rm-dir", kCmdOpt_NoMkRmDir, RTGETOPT_REQ_NOTHING }, 400 { "--stat-vfs", kCmdOpt_StatVfs, RTGETOPT_REQ_NOTHING }, 401 { "--no-stat-vfs", kCmdOpt_NoStatVfs, RTGETOPT_REQ_NOTHING }, 402 { "--rm", kCmdOpt_Rm, RTGETOPT_REQ_NOTHING }, 403 { "--no-rm", kCmdOpt_NoRm, RTGETOPT_REQ_NOTHING }, 404 { "--chsize", kCmdOpt_ChSize, RTGETOPT_REQ_NOTHING }, 405 { "--no-chsize", kCmdOpt_NoChSize, RTGETOPT_REQ_NOTHING }, 406 { "--read-tests", kCmdOpt_ReadTests, RTGETOPT_REQ_NOTHING }, 407 { "--no-read-tests", kCmdOpt_NoReadTests, RTGETOPT_REQ_NOTHING }, 408 { "--read-perf", kCmdOpt_ReadPerf, RTGETOPT_REQ_NOTHING }, 409 { "--no-read-perf", kCmdOpt_NoReadPerf, RTGETOPT_REQ_NOTHING }, 398 410 #ifdef FSPERF_TEST_SENDFILE 399 { "--sendfile", kCmdOpt_SendFile,RTGETOPT_REQ_NOTHING },400 { "--no-sendfile", kCmdOpt_NoSendFile,RTGETOPT_REQ_NOTHING },411 { "--sendfile", kCmdOpt_SendFile, RTGETOPT_REQ_NOTHING }, 412 { "--no-sendfile", kCmdOpt_NoSendFile, RTGETOPT_REQ_NOTHING }, 401 413 #endif 402 414 #ifdef RT_OS_LINUX 403 { "--splice", kCmdOpt_Splice,RTGETOPT_REQ_NOTHING },404 { "--no-splice", kCmdOpt_NoSplice,RTGETOPT_REQ_NOTHING },415 { "--splice", kCmdOpt_Splice, RTGETOPT_REQ_NOTHING }, 416 { "--no-splice", kCmdOpt_NoSplice, RTGETOPT_REQ_NOTHING }, 405 417 #endif 406 { "--write-tests", kCmdOpt_WriteTests,RTGETOPT_REQ_NOTHING },407 { "--no-write-tests", kCmdOpt_NoWriteTests,RTGETOPT_REQ_NOTHING },408 { "--write-perf", kCmdOpt_WritePerf,RTGETOPT_REQ_NOTHING },409 { "--no-write-perf", kCmdOpt_NoWritePerf,RTGETOPT_REQ_NOTHING },410 { "--seek", kCmdOpt_Seek,RTGETOPT_REQ_NOTHING },411 { "--no-seek", kCmdOpt_NoSeek,RTGETOPT_REQ_NOTHING },412 { "--fsync", kCmdOpt_FSync,RTGETOPT_REQ_NOTHING },413 { "--no-fsync", kCmdOpt_NoFSync,RTGETOPT_REQ_NOTHING },414 { "--mmap", kCmdOpt_MMap,RTGETOPT_REQ_NOTHING },415 { "--no-mmap", kCmdOpt_NoMMap,RTGETOPT_REQ_NOTHING },416 { "--ignore-no-cache", kCmdOpt_IgnoreNoCache,RTGETOPT_REQ_NOTHING },417 { "--no-ignore-no-cache", kCmdOpt_NoIgnoreNoCache,RTGETOPT_REQ_NOTHING },418 { "--io-file-size", kCmdOpt_IoFileSize,RTGETOPT_REQ_UINT64 },419 { "--set-block-size", kCmdOpt_SetBlockSize,RTGETOPT_REQ_UINT32 },420 { "--add-block-size", kCmdOpt_AddBlockSize,RTGETOPT_REQ_UINT32 },421 { "--copy", kCmdOpt_Copy,RTGETOPT_REQ_NOTHING },422 { "--no-copy", kCmdOpt_NoCopy,RTGETOPT_REQ_NOTHING },423 { "--remote", kCmdOpt_Remote,RTGETOPT_REQ_NOTHING },424 { "--no-remote", kCmdOpt_NoRemote,RTGETOPT_REQ_NOTHING },425 426 { "--show-duration", kCmdOpt_ShowDuration,RTGETOPT_REQ_NOTHING },427 { "--no-show-duration", kCmdOpt_NoShowDuration,RTGETOPT_REQ_NOTHING },428 { "--show-iterations", kCmdOpt_ShowIterations,RTGETOPT_REQ_NOTHING },429 { "--no-show-iterations", kCmdOpt_NoShowIterations,RTGETOPT_REQ_NOTHING },430 431 { "--quiet", 'q',RTGETOPT_REQ_NOTHING },432 { "--verbose", 'v',RTGETOPT_REQ_NOTHING },433 { "--version", 'V',RTGETOPT_REQ_NOTHING },434 { "--help", 'h',RTGETOPT_REQ_NOTHING } /* for Usage() */418 { "--write-tests", kCmdOpt_WriteTests, RTGETOPT_REQ_NOTHING }, 419 { "--no-write-tests", kCmdOpt_NoWriteTests, RTGETOPT_REQ_NOTHING }, 420 { "--write-perf", kCmdOpt_WritePerf, RTGETOPT_REQ_NOTHING }, 421 { "--no-write-perf", kCmdOpt_NoWritePerf, RTGETOPT_REQ_NOTHING }, 422 { "--seek", kCmdOpt_Seek, RTGETOPT_REQ_NOTHING }, 423 { "--no-seek", kCmdOpt_NoSeek, RTGETOPT_REQ_NOTHING }, 424 { "--fsync", kCmdOpt_FSync, RTGETOPT_REQ_NOTHING }, 425 { "--no-fsync", kCmdOpt_NoFSync, RTGETOPT_REQ_NOTHING }, 426 { "--mmap", kCmdOpt_MMap, RTGETOPT_REQ_NOTHING }, 427 { "--no-mmap", kCmdOpt_NoMMap, RTGETOPT_REQ_NOTHING }, 428 { "--ignore-no-cache", kCmdOpt_IgnoreNoCache, RTGETOPT_REQ_NOTHING }, 429 { "--no-ignore-no-cache", kCmdOpt_NoIgnoreNoCache, RTGETOPT_REQ_NOTHING }, 430 { "--io-file-size", kCmdOpt_IoFileSize, RTGETOPT_REQ_UINT64 }, 431 { "--set-block-size", kCmdOpt_SetBlockSize, RTGETOPT_REQ_UINT32 }, 432 { "--add-block-size", kCmdOpt_AddBlockSize, RTGETOPT_REQ_UINT32 }, 433 { "--copy", kCmdOpt_Copy, RTGETOPT_REQ_NOTHING }, 434 { "--no-copy", kCmdOpt_NoCopy, RTGETOPT_REQ_NOTHING }, 435 { "--remote", kCmdOpt_Remote, RTGETOPT_REQ_NOTHING }, 436 { "--no-remote", kCmdOpt_NoRemote, RTGETOPT_REQ_NOTHING }, 437 438 { "--show-duration", kCmdOpt_ShowDuration, RTGETOPT_REQ_NOTHING }, 439 { "--no-show-duration", kCmdOpt_NoShowDuration, RTGETOPT_REQ_NOTHING }, 440 { "--show-iterations", kCmdOpt_ShowIterations, RTGETOPT_REQ_NOTHING }, 441 { "--no-show-iterations", kCmdOpt_NoShowIterations, RTGETOPT_REQ_NOTHING }, 442 443 { "--quiet", 'q', RTGETOPT_REQ_NOTHING }, 444 { "--verbose", 'v', RTGETOPT_REQ_NOTHING }, 445 { "--version", 'V', RTGETOPT_REQ_NOTHING }, 446 { "--help", 'h', RTGETOPT_REQ_NOTHING } /* for Usage() */ 435 447 }; 436 448 … … 451 463 /** @name Selected subtest 452 464 * @{ */ 453 static bool g_fManyFiles = true; 454 static bool g_fOpen = true; 455 static bool g_fFStat = true; 456 static bool g_fFChMod = true; 457 static bool g_fFUtimes = true; 458 static bool g_fStat = true; 459 static bool g_fChMod = true; 460 static bool g_fUtimes = true; 461 static bool g_fRename = true; 462 static bool g_fDirOpen = true; 463 static bool g_fDirEnum = true; 464 static bool g_fMkRmDir = true; 465 static bool g_fStatVfs = true; 466 static bool g_fRm = true; 467 static bool g_fChSize = true; 468 static bool g_fReadTests = true; 469 static bool g_fReadPerf = true; 465 static bool g_fManyFiles = true; 466 static bool g_fOpen = true; 467 static bool g_fFStat = true; 468 #ifdef RT_OS_WINDOWS 469 static bool g_fNtQueryInfoFile = true; 470 static bool g_fNtQueryVolInfoFile = true; 471 #endif 472 static bool g_fFChMod = true; 473 static bool g_fFUtimes = true; 474 static bool g_fStat = true; 475 static bool g_fChMod = true; 476 static bool g_fUtimes = true; 477 static bool g_fRename = true; 478 static bool g_fDirOpen = true; 479 static bool g_fDirEnum = true; 480 static bool g_fMkRmDir = true; 481 static bool g_fStatVfs = true; 482 static bool g_fRm = true; 483 static bool g_fChSize = true; 484 static bool g_fReadTests = true; 485 static bool g_fReadPerf = true; 470 486 #ifdef FSPERF_TEST_SENDFILE 471 static bool g_fSendFile = true;487 static bool g_fSendFile = true; 472 488 #endif 473 489 #ifdef RT_OS_LINUX 474 static bool g_fSplice = true;490 static bool g_fSplice = true; 475 491 #endif 476 static bool g_fWriteTests = true;477 static bool g_fWritePerf = true;478 static bool g_fSeek = true;479 static bool g_fFSync = true;480 static bool g_fMMap = true;481 static bool g_fCopy = true;482 static bool g_fRemote = true;492 static bool g_fWriteTests = true; 493 static bool g_fWritePerf = true; 494 static bool g_fSeek = true; 495 static bool g_fFSync = true; 496 static bool g_fMMap = true; 497 static bool g_fCopy = true; 498 static bool g_fRemote = true; 483 499 /** @} */ 484 500 … … 2088 2104 } 2089 2105 2106 #ifdef RT_OS_WINDOWS 2107 /** 2108 * Nt(Query|Set|QueryDir)Information(File|) information class info. 2109 */ 2110 static const struct 2111 { 2112 const char *pszName; 2113 int enmValue; 2114 bool fQuery; 2115 bool fSet; 2116 bool fQueryDir; 2117 uint8_t cbMin; 2118 } g_aNtQueryInfoFileClasses[] = 2119 { 2120 #define E(a_enmValue, a_fQuery, a_fSet, a_fQueryDir, a_cbMin) \ 2121 { #a_enmValue, a_enmValue, a_fQuery, a_fSet, a_fQueryDir, a_cbMin } 2122 { "invalid0", 0, false, false, false, 0 }, 2123 E(FileDirectoryInformation, false, false, true, sizeof(FILE_DIRECTORY_INFORMATION)), // 0x00, 0x00, 0x48 2124 E(FileFullDirectoryInformation, false, false, true, sizeof(FILE_FULL_DIR_INFORMATION)), // 0x00, 0x00, 0x48 2125 E(FileBothDirectoryInformation, false, false, true, sizeof(FILE_BOTH_DIR_INFORMATION)), // 0x00, 0x00, 0x60 2126 E(FileBasicInformation, true, true, false, sizeof(FILE_BASIC_INFORMATION)), 2127 E(FileStandardInformation, true, false, false, sizeof(FILE_STANDARD_INFORMATION)), 2128 E(FileInternalInformation, true, false, false, sizeof(FILE_INTERNAL_INFORMATION)), 2129 E(FileEaInformation, true, false, false, sizeof(FILE_EA_INFORMATION)), 2130 E(FileAccessInformation, true, false, false, sizeof(FILE_ACCESS_INFORMATION)), 2131 E(FileNameInformation, true, false, false, sizeof(FILE_NAME_INFORMATION)), 2132 E(FileRenameInformation, false, true, false, sizeof(FILE_RENAME_INFORMATION)), 2133 E(FileLinkInformation, false, true, false, sizeof(FILE_LINK_INFORMATION)), 2134 E(FileNamesInformation, false, false, true, sizeof(FILE_NAMES_INFORMATION)), // 0x00, 0x00, 0x10 2135 E(FileDispositionInformation, false, true, false, sizeof(FILE_DISPOSITION_INFORMATION)), // 0x00, 0x01, 2136 E(FilePositionInformation, true, true, false, sizeof(FILE_POSITION_INFORMATION)), // 0x08, 0x08, 2137 E(FileFullEaInformation, false, false, false, sizeof(FILE_FULL_EA_INFORMATION)), // 0x00, 0x00, 2138 E(FileModeInformation, true, true, false, sizeof(FILE_MODE_INFORMATION)), // 0x04, 0x04, 2139 E(FileAlignmentInformation, true, false, false, sizeof(FILE_ALIGNMENT_INFORMATION)), // 0x04, 0x00, 2140 E(FileAllInformation, true, false, false, sizeof(FILE_ALL_INFORMATION)), // 0x68, 0x00, 2141 E(FileAllocationInformation, false, true, false, sizeof(FILE_ALLOCATION_INFORMATION)), // 0x00, 0x08, 2142 E(FileEndOfFileInformation, false, true, false, sizeof(FILE_END_OF_FILE_INFORMATION)), // 0x00, 0x08, 2143 E(FileAlternateNameInformation, true, false, false, sizeof(FILE_NAME_INFORMATION)), // 0x08, 0x00, 2144 E(FileStreamInformation, true, false, false, sizeof(FILE_STREAM_INFORMATION)), // 0x20, 0x00, 2145 E(FilePipeInformation, true, true, false, sizeof(FILE_PIPE_INFORMATION)), // 0x08, 0x08, 2146 E(FilePipeLocalInformation, true, false, false, sizeof(FILE_PIPE_LOCAL_INFORMATION)), // 0x28, 0x00, 2147 E(FilePipeRemoteInformation, true, true, false, sizeof(FILE_PIPE_REMOTE_INFORMATION)), // 0x10, 0x10, 2148 E(FileMailslotQueryInformation, true, false, false, sizeof(FILE_MAILSLOT_QUERY_INFORMATION)), // 0x18, 0x00, 2149 E(FileMailslotSetInformation, false, true, false, sizeof(FILE_MAILSLOT_SET_INFORMATION)), // 0x00, 0x08, 2150 E(FileCompressionInformation, true, false, false, sizeof(FILE_COMPRESSION_INFORMATION)), // 0x10, 0x00, 2151 E(FileObjectIdInformation, true, true, true, sizeof(FILE_OBJECTID_INFORMATION)), // 0x48, 0x48, 2152 E(FileCompletionInformation, false, true, false, sizeof(FILE_COMPLETION_INFORMATION)), // 0x00, 0x10, 2153 E(FileMoveClusterInformation, false, true, false, sizeof(FILE_MOVE_CLUSTER_INFORMATION)), // 0x00, 0x18, 2154 E(FileQuotaInformation, true, true, true, sizeof(FILE_QUOTA_INFORMATION)), // 0x38, 0x38, 0x38 2155 E(FileReparsePointInformation, true, false, true, sizeof(FILE_REPARSE_POINT_INFORMATION)), // 0x10, 0x00, 0x10 2156 E(FileNetworkOpenInformation, true, false, false, sizeof(FILE_NETWORK_OPEN_INFORMATION)), // 0x38, 0x00, 2157 E(FileAttributeTagInformation, true, false, false, sizeof(FILE_ATTRIBUTE_TAG_INFORMATION)), // 0x08, 0x00, 2158 E(FileTrackingInformation, false, true, false, sizeof(FILE_TRACKING_INFORMATION)), // 0x00, 0x10, 2159 E(FileIdBothDirectoryInformation, false, false, true, sizeof(FILE_ID_BOTH_DIR_INFORMATION)), // 0x00, 0x00, 0x70 2160 E(FileIdFullDirectoryInformation, false, false, true, sizeof(FILE_ID_FULL_DIR_INFORMATION)), // 0x00, 0x00, 0x58 2161 E(FileValidDataLengthInformation, false, true, false, sizeof(FILE_VALID_DATA_LENGTH_INFORMATION)), // 0x00, 0x08, 2162 E(FileShortNameInformation, false, true, false, sizeof(FILE_NAME_INFORMATION)), // 0x00, 0x08, 2163 E(FileIoCompletionNotificationInformation, true, true, false, sizeof(FILE_IO_COMPLETION_NOTIFICATION_INFORMATION)), // 0x04, 0x04, 2164 E(FileIoStatusBlockRangeInformation, false, true, false, sizeof(IO_STATUS_BLOCK) /*?*/), // 0x00, 0x10, 2165 E(FileIoPriorityHintInformation, true, true, false, sizeof(FILE_IO_PRIORITY_HINT_INFORMATION)), // 0x04, 0x04, 2166 E(FileSfioReserveInformation, true, true, false, sizeof(FILE_SFIO_RESERVE_INFORMATION)), // 0x14, 0x14, 2167 E(FileSfioVolumeInformation, true, false, false, sizeof(FILE_SFIO_VOLUME_INFORMATION)), // 0x0C, 0x00, 2168 E(FileHardLinkInformation, true, false, false, sizeof(FILE_LINKS_INFORMATION)), // 0x20, 0x00, 2169 E(FileProcessIdsUsingFileInformation, true, false, false, sizeof(FILE_PROCESS_IDS_USING_FILE_INFORMATION)), // 0x10, 0x00, 2170 E(FileNormalizedNameInformation, true, false, false, sizeof(FILE_NAME_INFORMATION)), // 0x08, 0x00, 2171 E(FileNetworkPhysicalNameInformation, true, false, false, sizeof(FILE_NETWORK_PHYSICAL_NAME_INFORMATION)), // 0x08, 0x00, 2172 E(FileIdGlobalTxDirectoryInformation, false, false, true, sizeof(FILE_ID_GLOBAL_TX_DIR_INFORMATION)), // 0x00, 0x00, 0x60 2173 E(FileIsRemoteDeviceInformation, true, false, false, sizeof(FILE_IS_REMOTE_DEVICE_INFORMATION)), // 0x01, 0x00, 2174 E(FileUnusedInformation, false, false, false, 0), // 0x00, 0x00, 2175 E(FileNumaNodeInformation, true, false, false, sizeof(FILE_NUMA_NODE_INFORMATION)), // 0x02, 0x00, 2176 E(FileStandardLinkInformation, true, false, false, sizeof(FILE_STANDARD_LINK_INFORMATION)), // 0x0C, 0x00, 2177 E(FileRemoteProtocolInformation, true, false, false, sizeof(FILE_REMOTE_PROTOCOL_INFORMATION)), // 0x74, 0x00, 2178 E(FileRenameInformationBypassAccessCheck, false, false, false, 0 /*kernel mode only*/), // 0x00, 0x00, 2179 E(FileLinkInformationBypassAccessCheck, false, false, false, 0 /*kernel mode only*/), // 0x00, 0x00, 2180 E(FileVolumeNameInformation, true, false, false, sizeof(FILE_VOLUME_NAME_INFORMATION)), // 0x08, 0x00, 2181 E(FileIdInformation, true, false, false, sizeof(FILE_ID_INFORMATION)), // 0x18, 0x00, 2182 E(FileIdExtdDirectoryInformation, false, false, true, sizeof(FILE_ID_EXTD_DIR_INFORMATION)), // 0x00, 0x00, 0x60 2183 E(FileReplaceCompletionInformation, false, true, false, sizeof(FILE_COMPLETION_INFORMATION)), // 0x00, 0x10, 2184 E(FileHardLinkFullIdInformation, true, false, false, sizeof(FILE_LINK_ENTRY_FULL_ID_INFORMATION)), // 0x24, 0x00, 2185 E(FileIdExtdBothDirectoryInformation, false, false, true, sizeof(FILE_ID_EXTD_BOTH_DIR_INFORMATION)), // 0x00, 0x00, 0x78 2186 E(FileDispositionInformationEx, false, true, false, sizeof(FILE_DISPOSITION_INFORMATION_EX)), // 0x00, 0x04, 2187 E(FileRenameInformationEx, false, true, false, sizeof(FILE_RENAME_INFORMATION)), // 0x00, 0x18, 2188 E(FileRenameInformationExBypassAccessCheck, false, false, false, 0 /*kernel mode only*/), // 0x00, 0x00, 2189 E(FileDesiredStorageClassInformation, true, true, false, sizeof(FILE_DESIRED_STORAGE_CLASS_INFORMATION)), // 0x08, 0x08, 2190 E(FileStatInformation, true, false, false, sizeof(FILE_STAT_INFORMATION)), // 0x48, 0x00, 2191 E(FileMemoryPartitionInformation, false, true, false, 0x10), // 0x00, 0x10, 2192 E(FileStatLxInformation, true, false, false, sizeof(FILE_STAT_LX_INFORMATION)), // 0x60, 0x00, 2193 E(FileCaseSensitiveInformation, true, true, false, sizeof(FILE_CASE_SENSITIVE_INFORMATION)), // 0x04, 0x04, 2194 E(FileLinkInformationEx, false, true, false, sizeof(FILE_LINK_INFORMATION)), // 0x00, 0x18, 2195 E(FileLinkInformationExBypassAccessCheck, false, false, false, 0 /*kernel mode only*/), // 0x00, 0x00, 2196 E(FileStorageReserveIdInformation, true, true, false, 0x04), // 0x04, 0x04, 2197 E(FileCaseSensitiveInformationForceAccessCheck, true, true, false, sizeof(FILE_CASE_SENSITIVE_INFORMATION)), // 0x04, 0x04, 2198 #undef E 2199 }; 2200 2201 void fsPerfNtQueryInfoFileWorker(HANDLE hNtFile1) 2202 { 2203 /** @todo may run out of buffer for really long paths? */ 2204 union 2205 { 2206 uint8_t ab[4096]; 2207 FILE_ACCESS_INFORMATION Access; 2208 FILE_ALIGNMENT_INFORMATION Align; 2209 FILE_ALL_INFORMATION All; 2210 FILE_ALLOCATION_INFORMATION Alloc; 2211 FILE_ATTRIBUTE_TAG_INFORMATION AttribTag; 2212 FILE_BASIC_INFORMATION Basic; 2213 FILE_BOTH_DIR_INFORMATION BothDir; 2214 FILE_CASE_SENSITIVE_INFORMATION CaseSensitivity; 2215 FILE_COMPLETION_INFORMATION Completion; 2216 FILE_COMPRESSION_INFORMATION Compression; 2217 FILE_DESIRED_STORAGE_CLASS_INFORMATION StorageClass; 2218 FILE_DIRECTORY_INFORMATION Dir; 2219 FILE_DISPOSITION_INFORMATION Disp; 2220 FILE_DISPOSITION_INFORMATION_EX DispEx; 2221 FILE_EA_INFORMATION Ea; 2222 FILE_END_OF_FILE_INFORMATION EndOfFile; 2223 FILE_FULL_DIR_INFORMATION FullDir; 2224 FILE_FULL_EA_INFORMATION FullEa; 2225 FILE_ID_BOTH_DIR_INFORMATION IdBothDir; 2226 FILE_ID_EXTD_BOTH_DIR_INFORMATION ExtIdBothDir; 2227 FILE_ID_EXTD_DIR_INFORMATION ExtIdDir; 2228 FILE_ID_FULL_DIR_INFORMATION IdFullDir; 2229 FILE_ID_GLOBAL_TX_DIR_INFORMATION IdGlobalTx; 2230 FILE_ID_INFORMATION IdInfo; 2231 FILE_INTERNAL_INFORMATION Internal; 2232 FILE_IO_COMPLETION_NOTIFICATION_INFORMATION IoCompletion; 2233 FILE_IO_PRIORITY_HINT_INFORMATION IoPrioHint; 2234 FILE_IS_REMOTE_DEVICE_INFORMATION IsRemoteDev; 2235 FILE_LINK_ENTRY_FULL_ID_INFORMATION LinkFullId; 2236 FILE_LINK_INFORMATION Link; 2237 FILE_MAILSLOT_QUERY_INFORMATION MailslotQuery; 2238 FILE_MAILSLOT_SET_INFORMATION MailslotSet; 2239 FILE_MODE_INFORMATION Mode; 2240 FILE_MOVE_CLUSTER_INFORMATION MoveCluster; 2241 FILE_NAME_INFORMATION Name; 2242 FILE_NAMES_INFORMATION Names; 2243 FILE_NETWORK_OPEN_INFORMATION NetOpen; 2244 FILE_NUMA_NODE_INFORMATION Numa; 2245 FILE_OBJECTID_INFORMATION ObjId; 2246 FILE_PIPE_INFORMATION Pipe; 2247 FILE_PIPE_LOCAL_INFORMATION PipeLocal; 2248 FILE_PIPE_REMOTE_INFORMATION PipeRemote; 2249 FILE_POSITION_INFORMATION Pos; 2250 FILE_PROCESS_IDS_USING_FILE_INFORMATION Pids; 2251 FILE_QUOTA_INFORMATION Quota; 2252 FILE_REMOTE_PROTOCOL_INFORMATION RemoteProt; 2253 FILE_RENAME_INFORMATION Rename; 2254 FILE_REPARSE_POINT_INFORMATION Reparse; 2255 FILE_SFIO_RESERVE_INFORMATION SfiRes; 2256 FILE_SFIO_VOLUME_INFORMATION SfioVol; 2257 FILE_STANDARD_INFORMATION Std; 2258 FILE_STANDARD_LINK_INFORMATION StdLink; 2259 FILE_STAT_INFORMATION Stat; 2260 FILE_STAT_LX_INFORMATION StatLx; 2261 FILE_STREAM_INFORMATION Stream; 2262 FILE_TRACKING_INFORMATION Tracking; 2263 FILE_VALID_DATA_LENGTH_INFORMATION ValidDataLen; 2264 FILE_VOLUME_NAME_INFORMATION VolName; 2265 } uBuf; 2266 2267 IO_STATUS_BLOCK const VirginIos = RTNT_IO_STATUS_BLOCK_INITIALIZER; 2268 for (unsigned i = 0; i < RT_ELEMENTS(g_aNtQueryInfoFileClasses); i++) 2269 { 2270 FILE_INFORMATION_CLASS const enmClass = (FILE_INFORMATION_CLASS)g_aNtQueryInfoFileClasses[i].enmValue; 2271 const char * const pszClass = g_aNtQueryInfoFileClasses[i].pszName; 2272 2273 memset(&uBuf, 0xff, sizeof(uBuf)); 2274 IO_STATUS_BLOCK Ios = RTNT_IO_STATUS_BLOCK_INITIALIZER; 2275 ULONG cbBuf = sizeof(uBuf); 2276 NTSTATUS rcNt = NtQueryInformationFile(hNtFile1, &Ios, &uBuf, cbBuf, enmClass); 2277 if (NT_SUCCESS(rcNt)) 2278 { 2279 if (Ios.Status == VirginIos.Status || Ios.Information == VirginIos.Information) 2280 RTTestIFailed("%s/%#x: I/O status block was not modified: %#x %#zx", pszClass, cbBuf, Ios.Status, Ios.Information); 2281 else if (!g_aNtQueryInfoFileClasses[i].fQuery) 2282 RTTestIFailed("%s/%#x: This isn't supposed to be queriable! (rcNt=%#x)", pszClass, cbBuf, rcNt); 2283 else 2284 { 2285 ULONG const cbActualMin = enmClass != FileStorageReserveIdInformation ? Ios.Information : 4; /* weird */ 2286 2287 switch (enmClass) 2288 { 2289 case FileNameInformation: 2290 case FileAlternateNameInformation: 2291 case FileShortNameInformation: 2292 case FileNormalizedNameInformation: 2293 case FileNetworkPhysicalNameInformation: 2294 if ( RT_UOFFSETOF_DYN(FILE_NAME_INFORMATION, FileName[uBuf.Name.FileNameLength / sizeof(WCHAR)]) 2295 != cbActualMin) 2296 RTTestIFailed("%s/%#x: Wrong FileNameLength=%#x vs cbActual=%#x", 2297 pszClass, cbActualMin, uBuf.Name.FileNameLength, cbActualMin); 2298 if (uBuf.Name.FileName[uBuf.Name.FileNameLength / sizeof(WCHAR) - 1] == '\0') 2299 RTTestIFailed("%s/%#x: Zero terminated name!", pszClass, cbActualMin); 2300 if (g_uVerbosity > 1) 2301 RTTestIPrintf(RTTESTLVL_ALWAYS, "%+34s/%#x: FileNameLength=%#x FileName='%.*ls'\n", 2302 pszClass, cbActualMin, uBuf.Name.FileNameLength, 2303 uBuf.Name.FileNameLength / sizeof(WCHAR), uBuf.Name.FileName); 2304 break; 2305 2306 case FileVolumeNameInformation: 2307 if (RT_UOFFSETOF_DYN(FILE_VOLUME_NAME_INFORMATION, 2308 DeviceName[uBuf.VolName.DeviceNameLength / sizeof(WCHAR)]) != cbActualMin) 2309 RTTestIFailed("%s/%#x: Wrong DeviceNameLength=%#x vs cbActual=%#x", 2310 pszClass, cbActualMin, uBuf.VolName.DeviceNameLength, cbActualMin); 2311 if (uBuf.VolName.DeviceName[uBuf.VolName.DeviceNameLength / sizeof(WCHAR) - 1] == '\0') 2312 RTTestIFailed("%s/%#x: Zero terminated name!", pszClass, cbActualMin); 2313 if (g_uVerbosity > 1) 2314 RTTestIPrintf(RTTESTLVL_ALWAYS, "%+34s/%#x: DeviceNameLength=%#x DeviceName='%.*ls'\n", 2315 pszClass, cbActualMin, uBuf.VolName.DeviceNameLength, 2316 uBuf.VolName.DeviceNameLength / sizeof(WCHAR), uBuf.VolName.DeviceName); 2317 break; 2318 default: 2319 break; 2320 } 2321 2322 ULONG const cbMin = g_aNtQueryInfoFileClasses[i].cbMin; 2323 ULONG const cbMax = RT_MIN(cbActualMin + 64, sizeof(uBuf)); 2324 for (cbBuf = 0; cbBuf < cbMax; cbBuf++) 2325 { 2326 memset(&uBuf, 0xfe, sizeof(uBuf)); 2327 RTNT_IO_STATUS_BLOCK_REINIT(&Ios); 2328 rcNt = NtQueryInformationFile(hNtFile1, &Ios, &uBuf, cbBuf, enmClass); 2329 if (!ASMMemIsAllU8(&uBuf.ab[cbBuf], sizeof(uBuf) - cbBuf, 0xfe)) 2330 RTTestIFailed("%s/%#x: Touched memory beyond end of buffer (rcNt=%#x)", pszClass, cbBuf, rcNt); 2331 if (cbBuf < cbMin) 2332 { 2333 if (rcNt != STATUS_INFO_LENGTH_MISMATCH) 2334 RTTestIFailed("%s/%#x: %#x, expected STATUS_INFO_LENGTH_MISMATCH", pszClass, cbBuf, rcNt); 2335 if (Ios.Status != VirginIos.Status || Ios.Information != VirginIos.Information) 2336 RTTestIFailed("%s/%#x: I/O status block was modified (STATUS_INFO_LENGTH_MISMATCH): %#x %#zx", 2337 pszClass, cbBuf, Ios.Status, Ios.Information); 2338 } 2339 else if (cbBuf < cbActualMin) 2340 { 2341 if ( rcNt != STATUS_BUFFER_OVERFLOW 2342 /* RDR2/w10 returns success if the buffer can hold exactly the share name: */ 2343 && !( rcNt == STATUS_SUCCESS 2344 && enmClass == FileNetworkPhysicalNameInformation) 2345 ) 2346 RTTestIFailed("%s/%#x: %#x, expected STATUS_BUFFER_OVERFLOW", pszClass, cbBuf, rcNt); 2347 } 2348 else 2349 { 2350 if ( !ASMMemIsAllU8(&uBuf.ab[cbActualMin], sizeof(uBuf) - cbActualMin, 0xfe) 2351 && enmClass != FileStorageReserveIdInformation /* NTFS bug? */ ) 2352 RTTestIFailed("%s/%#x: Touched memory beyond returned length (cbActualMin=%#x, rcNt=%#x)", 2353 pszClass, cbBuf, cbActualMin, rcNt); 2354 2355 } 2356 } 2357 } 2358 } 2359 else 2360 { 2361 if (!g_aNtQueryInfoFileClasses[i].fQuery) 2362 { 2363 if (rcNt != STATUS_INVALID_INFO_CLASS) 2364 RTTestIFailed("%s/%#x: %#x, expected STATUS_INVALID_INFO_CLASS", pszClass, cbBuf, rcNt); 2365 } 2366 else if ( rcNt != STATUS_INVALID_INFO_CLASS 2367 && rcNt != STATUS_INVALID_PARAMETER 2368 && !(rcNt == STATUS_OBJECT_NAME_NOT_FOUND && enmClass == FileAlternateNameInformation) 2369 && !( rcNt == STATUS_ACCESS_DENIED 2370 && ( enmClass == FileIoPriorityHintInformation 2371 || enmClass == FileSfioReserveInformation 2372 || enmClass == FileStatLxInformation)) 2373 && !(rcNt == STATUS_NO_SUCH_DEVICE && enmClass == FileNumaNodeInformation) 2374 && !( rcNt == STATUS_NOT_SUPPORTED /* RDR2/W10-17763 */ 2375 && ( enmClass == FileMailslotQueryInformation 2376 || enmClass == FileObjectIdInformation 2377 || enmClass == FileReparsePointInformation 2378 || enmClass == FileSfioVolumeInformation 2379 || enmClass == FileHardLinkInformation 2380 || enmClass == FileStandardLinkInformation 2381 || enmClass == FileHardLinkFullIdInformation 2382 || enmClass == FileDesiredStorageClassInformation 2383 || enmClass == FileStatInformation 2384 || enmClass == FileCaseSensitiveInformation 2385 || enmClass == FileStorageReserveIdInformation 2386 || enmClass == FileCaseSensitiveInformationForceAccessCheck)) 2387 ) 2388 RTTestIFailed("%s/%#x: %#x", pszClass, cbBuf, rcNt); 2389 if (Ios.Status != VirginIos.Status || Ios.Information != VirginIos.Information) 2390 RTTestIFailed("%s/%#x: I/O status block was modified: %#x %#zx", pszClass, cbBuf, Ios.Status, Ios.Information); 2391 if (!ASMMemIsAllU8(&uBuf, sizeof(uBuf), 0xff)) 2392 RTTestIFailed("%s/%#x: Buffer was touched in failure case!", pszClass, cbBuf); 2393 } 2394 } 2395 } 2396 2397 2398 void fsPerfNtQueryInfoFile(void) 2399 { 2400 RTTestISub("NtQueryInformationFile"); 2401 2402 /* On a regular file: */ 2403 RTFILE hFile1; 2404 RTTESTI_CHECK_RC_RETV(RTFileOpen(&hFile1, InDir(RT_STR_TUPLE("file2qif")), 2405 RTFILE_O_CREATE_REPLACE | RTFILE_O_DENY_NONE | RTFILE_O_WRITE), VINF_SUCCESS); 2406 fsPerfNtQueryInfoFileWorker((HANDLE)RTFileToNative(hFile1)); 2407 RTTESTI_CHECK_RC(RTFileClose(hFile1), VINF_SUCCESS); 2408 2409 /* On a directory: */ 2410 HANDLE hDir1 = INVALID_HANDLE_VALUE; 2411 RTTESTI_CHECK_RC(RTNtPathOpenDir(InDir(RT_STR_TUPLE("")), GENERIC_READ, 2412 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 2413 FILE_OPEN, 0, &hDir1, NULL), VINF_SUCCESS); 2414 } 2415 2416 2417 void fsPerfNtQueryVolInfoFile(void) 2418 { 2419 /** @todo */ 2420 } 2421 2422 #endif /* RT_OS_WINDOWS */ 2090 2423 2091 2424 void fsPerfFChMod(void) … … 5752 6085 5753 6086 case 'e': 5754 g_fManyFiles = true; 5755 g_fOpen = true; 5756 g_fFStat = true; 5757 g_fFChMod = true; 5758 g_fFUtimes = true; 5759 g_fStat = true; 5760 g_fChMod = true; 5761 g_fUtimes = true; 5762 g_fRename = true; 5763 g_fDirOpen = true; 5764 g_fDirEnum = true; 5765 g_fMkRmDir = true; 5766 g_fStatVfs = true; 5767 g_fRm = true; 5768 g_fChSize = true; 5769 g_fReadTests = true; 5770 g_fReadPerf = true; 6087 g_fManyFiles = true; 6088 g_fOpen = true; 6089 g_fFStat = true; 6090 #ifdef RT_OS_WINDOWS 6091 g_fNtQueryInfoFile = true; 6092 g_fNtQueryVolInfoFile = true; 6093 #endif 6094 g_fFChMod = true; 6095 g_fFUtimes = true; 6096 g_fStat = true; 6097 g_fChMod = true; 6098 g_fUtimes = true; 6099 g_fRename = true; 6100 g_fDirOpen = true; 6101 g_fDirEnum = true; 6102 g_fMkRmDir = true; 6103 g_fStatVfs = true; 6104 g_fRm = true; 6105 g_fChSize = true; 6106 g_fReadTests = true; 6107 g_fReadPerf = true; 5771 6108 #ifdef FSPERF_TEST_SENDFILE 5772 g_fSendFile = true;6109 g_fSendFile = true; 5773 6110 #endif 5774 6111 #ifdef RT_OS_LINUX 5775 g_fSplice = true;6112 g_fSplice = true; 5776 6113 #endif 5777 g_fWriteTests = true;5778 g_fWritePerf = true;5779 g_fSeek = true;5780 g_fFSync = true;5781 g_fMMap = true;5782 g_fCopy = true;5783 g_fRemote = true;6114 g_fWriteTests = true; 6115 g_fWritePerf = true; 6116 g_fSeek = true; 6117 g_fFSync = true; 6118 g_fMMap = true; 6119 g_fCopy = true; 6120 g_fRemote = true; 5784 6121 break; 5785 6122 5786 6123 case 'z': 5787 g_fManyFiles = false; 5788 g_fOpen = false; 5789 g_fFStat = false; 5790 g_fFChMod = false; 5791 g_fFUtimes = false; 5792 g_fStat = false; 5793 g_fChMod = false; 5794 g_fUtimes = false; 5795 g_fRename = false; 5796 g_fDirOpen = false; 5797 g_fDirEnum = false; 5798 g_fMkRmDir = false; 5799 g_fStatVfs = false; 5800 g_fRm = false; 5801 g_fChSize = false; 5802 g_fReadTests = false; 5803 g_fReadPerf = false; 6124 g_fManyFiles = false; 6125 g_fOpen = false; 6126 g_fFStat = false; 6127 #ifdef RT_OS_WINDOWS 6128 g_fNtQueryInfoFile = false; 6129 g_fNtQueryVolInfoFile = false; 6130 #endif 6131 g_fFChMod = false; 6132 g_fFUtimes = false; 6133 g_fStat = false; 6134 g_fChMod = false; 6135 g_fUtimes = false; 6136 g_fRename = false; 6137 g_fDirOpen = false; 6138 g_fDirEnum = false; 6139 g_fMkRmDir = false; 6140 g_fStatVfs = false; 6141 g_fRm = false; 6142 g_fChSize = false; 6143 g_fReadTests = false; 6144 g_fReadPerf = false; 5804 6145 #ifdef FSPERF_TEST_SENDFILE 5805 g_fSendFile = false;6146 g_fSendFile = false; 5806 6147 #endif 5807 6148 #ifdef RT_OS_LINUX 5808 g_fSplice = false;6149 g_fSplice = false; 5809 6150 #endif 5810 g_fWriteTests = false;5811 g_fWritePerf = false;5812 g_fSeek = false;5813 g_fFSync = false;5814 g_fMMap = false;5815 g_fCopy = false;5816 g_fRemote = false;6151 g_fWriteTests = false; 6152 g_fWritePerf = false; 6153 g_fSeek = false; 6154 g_fFSync = false; 6155 g_fMMap = false; 6156 g_fCopy = false; 6157 g_fRemote = false; 5817 6158 break; 5818 6159 … … 5822 6163 CASE_OPT(Open); 5823 6164 CASE_OPT(FStat); 6165 #ifdef RT_OS_WINDOWS 6166 CASE_OPT(NtQueryInfoFile); 6167 CASE_OPT(NtQueryVolInfoFile); 6168 #endif 5824 6169 CASE_OPT(FChMod); 5825 6170 CASE_OPT(FUtimes); … … 6002 6347 if (g_fFStat) 6003 6348 fsPerfFStat(); 6349 #ifdef RT_OS_WINDOWS 6350 if (g_fNtQueryInfoFile) 6351 fsPerfNtQueryInfoFile(); 6352 if (g_fNtQueryVolInfoFile) 6353 fsPerfNtQueryVolInfoFile(); 6354 #endif 6004 6355 if (g_fFChMod) 6005 6356 fsPerfFChMod();
Note:
See TracChangeset
for help on using the changeset viewer.