tst: memfs: Cleanup now properly update metadata on MainFileNode

This commit is contained in:
Bill Zissimopoulos
2017-01-03 12:07:52 -08:00
parent b5cefc59e9
commit 460726df83
2 changed files with 14 additions and 7 deletions

View File

@ -967,13 +967,19 @@ static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem,
{
MEMFS *Memfs = (MEMFS *)FileSystem->UserContext;
MEMFS_FILE_NODE *FileNode = (MEMFS_FILE_NODE *)FileNode0;
#if defined(MEMFS_NAMED_STREAMS)
MEMFS_FILE_NODE *MainFileNode = 0 != FileNode->MainFileNode ?
FileNode->MainFileNode : FileNode;
#else
MEMFS_FILE_NODE *MainFileNode = FileNode;
#endif
assert(0 != Flags); /* FSP_FSCTL_VOLUME_PARAMS::PostCleanupWhenModifiedOnly ensures this */
if (Flags & FspCleanupSetArchiveBit)
{
if (0 == (FileNode->FileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
FileNode->FileInfo.FileAttributes |= FILE_ATTRIBUTE_ARCHIVE;
if (0 == (MainFileNode->FileInfo.FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
MainFileNode->FileInfo.FileAttributes |= FILE_ATTRIBUTE_ARCHIVE;
}
if (Flags & (FspCleanupSetLastAccessTime | FspCleanupSetLastWriteTime | FspCleanupSetChangeTime))
@ -981,11 +987,11 @@ static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem,
UINT64 SystemTime = MemfsGetSystemTime();
if (Flags & FspCleanupSetLastAccessTime)
FileNode->FileInfo.LastAccessTime = SystemTime;
MainFileNode->FileInfo.LastAccessTime = SystemTime;
if (Flags & FspCleanupSetLastWriteTime)
FileNode->FileInfo.LastWriteTime = SystemTime;
MainFileNode->FileInfo.LastWriteTime = SystemTime;
if (Flags & FspCleanupSetChangeTime)
FileNode->FileInfo.ChangeTime = SystemTime;
MainFileNode->FileInfo.ChangeTime = SystemTime;
}
if (Flags & FspCleanupSetAllocationSize)