VirtualBox

Changeset 78486 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
May 13, 2019 11:21:46 PM (6 years ago)
Author:
vboxsync
Message:

FsPerf,iprt/nt/nt.h: Buffer size testcase for NtQueryInformationFile. bugref:9172

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/utils/fs/FsPerf.cpp

    r78379 r78486  
    273273    kCmdOpt_FStat,
    274274    kCmdOpt_NoFStat,
     275#ifdef RT_OS_WINDOWS
     276    kCmdOpt_NtQueryInfoFile,
     277    kCmdOpt_NoNtQueryInfoFile,
     278    kCmdOpt_NtQueryVolInfoFile,
     279    kCmdOpt_NoNtQueryVolInfoFile,
     280#endif
    275281    kCmdOpt_FChMod,
    276282    kCmdOpt_NoFChMod,
     
    348354static const RTGETOPTDEF g_aCmdOptions[] =
    349355{
    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 },
    398410#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 },
    401413#endif
    402414#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 },
    405417#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() */
    435447};
    436448
     
    451463/** @name Selected subtest
    452464 * @{ */
    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;
     465static bool         g_fManyFiles            = true;
     466static bool         g_fOpen                 = true;
     467static bool         g_fFStat                = true;
     468#ifdef RT_OS_WINDOWS
     469static bool         g_fNtQueryInfoFile      = true;
     470static bool         g_fNtQueryVolInfoFile   = true;
     471#endif
     472static bool         g_fFChMod               = true;
     473static bool         g_fFUtimes              = true;
     474static bool         g_fStat                 = true;
     475static bool         g_fChMod                = true;
     476static bool         g_fUtimes               = true;
     477static bool         g_fRename               = true;
     478static bool         g_fDirOpen              = true;
     479static bool         g_fDirEnum              = true;
     480static bool         g_fMkRmDir              = true;
     481static bool         g_fStatVfs              = true;
     482static bool         g_fRm                   = true;
     483static bool         g_fChSize               = true;
     484static bool         g_fReadTests            = true;
     485static bool         g_fReadPerf             = true;
    470486#ifdef FSPERF_TEST_SENDFILE
    471 static bool         g_fSendFile  = true;
     487static bool         g_fSendFile             = true;
    472488#endif
    473489#ifdef RT_OS_LINUX
    474 static bool         g_fSplice    = true;
     490static bool         g_fSplice               = true;
    475491#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;
     492static bool         g_fWriteTests           = true;
     493static bool         g_fWritePerf            = true;
     494static bool         g_fSeek                 = true;
     495static bool         g_fFSync                = true;
     496static bool         g_fMMap                 = true;
     497static bool         g_fCopy                 = true;
     498static bool         g_fRemote               = true;
    483499/** @} */
    484500
     
    20882104}
    20892105
     2106#ifdef RT_OS_WINDOWS
     2107/**
     2108 * Nt(Query|Set|QueryDir)Information(File|) information class info.
     2109 */
     2110static 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
     2201void 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
     2398void 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
     2417void fsPerfNtQueryVolInfoFile(void)
     2418{
     2419    /** @todo */
     2420}
     2421
     2422#endif /* RT_OS_WINDOWS */
    20902423
    20912424void fsPerfFChMod(void)
     
    57526085
    57536086            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;
    57716108#ifdef FSPERF_TEST_SENDFILE
    5772                 g_fSendFile  = true;
     6109                g_fSendFile             = true;
    57736110#endif
    57746111#ifdef RT_OS_LINUX
    5775                 g_fSplice    = true;
     6112                g_fSplice               = true;
    57766113#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;
    57846121                break;
    57856122
    57866123            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;
    58046145#ifdef FSPERF_TEST_SENDFILE
    5805                 g_fSendFile  = false;
     6146                g_fSendFile             = false;
    58066147#endif
    58076148#ifdef RT_OS_LINUX
    5808                 g_fSplice    = false;
     6149                g_fSplice               = false;
    58096150#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;
    58176158                break;
    58186159
     
    58226163            CASE_OPT(Open);
    58236164            CASE_OPT(FStat);
     6165#ifdef RT_OS_WINDOWS
     6166            CASE_OPT(NtQueryInfoFile);
     6167            CASE_OPT(NtQueryVolInfoFile);
     6168#endif
    58246169            CASE_OPT(FChMod);
    58256170            CASE_OPT(FUtimes);
     
    60026347                if (g_fFStat)
    60036348                    fsPerfFStat();
     6349#ifdef RT_OS_WINDOWS
     6350                if (g_fNtQueryInfoFile)
     6351                    fsPerfNtQueryInfoFile();
     6352                if (g_fNtQueryVolInfoFile)
     6353                    fsPerfNtQueryVolInfoFile();
     6354#endif
    60046355                if (g_fFChMod)
    60056356                    fsPerfFChMod();
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette