/*++ Copyright (c) Microsoft. All rights reserved. Module Name: lxtfs.h Abstract: This file contains common test functions for file system tests. --*/ #include #define FS_DRVFS_PREFIX "/mnt/c" #define FS_DRVFS_DRIVE "C:" #define FS_DRVFS_NAME "drvfs" #define FS_WSLFS_NAME "wslfs" #define FS_9P_NAME "9p" #define FS_VIRTIOFS_NAME "virtiofs" #define INOTIFY_TEST_EVENTS_BUF_SIZE 50 #define INOTIFY_TEST_FILE1_NAME_ONLY "a.txt" #define INOTIFY_TEST_FILE2_NAME_ONLY "b.txt" #define INOTIFY_TEST_FILE3_NAME_ONLY "c.txt" #define INOTIFY_TEST_FILE1_SLINK_NAME_ONLY "as.txt" #define INOTIFY_TEST_FILE1_HLINK_NAME_ONLY "ah.txt" #define LXT_XATTR_CASE_SENSITIVE "system.wsl_case_sensitive" // // Flags for the utime test. // #define FS_UTIME_NT_PRECISION (0x1) #define FS_UTIME_FAT (0x2) #define FS_UTIME_NO_SYMLINKS (0x4) // // Flags for the getdents alignment test. // #define FS_TEST_GETDENTS64 (0x1) // // Flags for the timestamp test. // #define FS_TIMESTAMP_NOATIME (0x1) // // Flags for the delete tests. // #define FS_DELETE_DRVFS (0x1) #define FS_IS_PLAN9_CACHED() ((g_LxtFsInfo.FsType == LxtFsTypePlan9) && (g_LxtFsInfo.Flags.Cached != 0)) typedef enum _LXT_FS_TYPE { LxtFsTypeLxFs, LxtFsTypeWslFs, LxtFsTypeDrvFs, LxtFsTypePlan9, LxtFsTypeVirtioFs } LXT_FS_TYPE, *PLXT_FS_TYPE; typedef struct _LXT_FS_INFO { LXT_FS_TYPE FsType; union { struct { int DrvFsBehavior : 1; int Cached : 1; int VirtIo : 1; int Dax : 1; }; int AllFlags; } Flags; } LXT_FS_INFO, *PLXT_FS_INFO; int LxtFsCheckDrvFsMount(const char* Source, const char* Target, const char* Options, int ParentId, const char* MountRoot); int LxtFsCreateTestDir(char* Directory); int LxtFsDeleteCurrentWorkingDirectoryCommon(char* BaseDir, int Flags); int LxtFsDeleteOpenFileCommon(char* BaseDir, int Flags); int LxtFsDeleteLoopCommon(const char* BaseDir); int LxtFsGetDentsAlignmentCommon(const char* BaseDir, int Flags); int LxtFsGetFsInfo(const char* Path, PLXT_FS_INFO Info); int LxtFsInotifyEpollCommon(char* BaseDir); int LxtFsInotifyPosixUnlinkRenameCommon(char* BaseDir); int LxtFsInotifyReadAndProcess(int Id, char* ReadBuf, int ReadBufSize, struct inotify_event** Events, int NumEventsIn, int* NumEventsOut, int IgnoreAttribModify); int LxtFsInotifyUnmountBindCommon(char* BaseDir); int LxtFsMountDrvFs(const char* Source, const char* Target, const char* Options); int LxtFsRenameAtCommon(int DirFd1, int DirFd2); int LxtFsRenameDirCommon(char* BaseDir); void LxtFsTestCleanup(const char* TestDir, const char* DrvFsDir, bool UseDrvFs); int LxtFsTestSetup(PLXT_ARGS Args, const char* TestDir, const char* DrvFsDir, bool UseDrvFs); int LxtFsTimestampCommon(const char* BaseDir, int Flags); int LxtFsUtimeBasicCommon(const char* BaseDir, int Flags); void LxtFsUtimeCleanupTestFiles(const char* BaseDir); int LxtFsUtimeCreateTestFiles(const char* BaseDir, int Flags); int LxtFsWritevCommon(char* TestFile); int LxtFsDirSeekCommon(const char* BaseDir); extern LXT_FS_INFO g_LxtFsInfo;