1
0
mirror of https://github.com/bobranten/Ext4Fsd.git synced 2025-10-29 13:18:30 -05:00

set mount time and write time in the superblock

This commit is contained in:
Bo Branten
2024-09-04 00:48:48 +02:00
parent f5e57d52cb
commit 834d118c0d
2 changed files with 18 additions and 15 deletions

View File

@@ -2279,6 +2279,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT IrpContext,
USHORT Buffer[2];
ULONG ChangeCount = 0, features;
CC_FILE_SIZES FileSizes;
LARGE_INTEGER SysTime, LinuxTime;
int i, has_huge_files;
BOOLEAN VcbResourceInitialized = FALSE;
@@ -2709,6 +2710,12 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT IrpContext,
/* query parameters from registry */
Ext2PerformRegistryVolumeParams(Vcb);
/* update fs mount time */
KeQuerySystemTime(&SysTime);
Ext2TimeToSecondsSince1970(&SysTime, &LinuxTime.LowPart, &LinuxTime.HighPart);
Vcb->SuperBlock->s_mtime = LinuxTime.LowPart;
Vcb->SuperBlock->s_mtime_hi = (UCHAR)LinuxTime.HighPart;
SetLongFlag(Vcb->Flags, VCB_INITIALIZED);
} __finally {

View File

@@ -33,6 +33,8 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpContext)
BOOLEAN GlobalResourceAcquired = FALSE;
LARGE_INTEGER SysTime, LinuxTime;
__try {
Status = STATUS_SUCCESS;
@@ -64,27 +66,21 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpContext)
if (IsMounted(Vcb)) {
/* update fs write time */
KeQuerySystemTime(&SysTime);
Ext2TimeToSecondsSince1970(&SysTime, &LinuxTime.LowPart, &LinuxTime.HighPart);
Vcb->SuperBlock->s_wtime = LinuxTime.LowPart;
Vcb->SuperBlock->s_wtime_hi = (UCHAR)LinuxTime.HighPart;
/* update mount count */
Vcb->SuperBlock->s_mnt_count++;
if (Vcb->SuperBlock->s_mnt_count >
Vcb->SuperBlock->s_max_mnt_count ) {
Vcb->SuperBlock->s_mnt_count =
Vcb->SuperBlock->s_max_mnt_count;
}
Ext2SaveSuper(IrpContext, Vcb);
/* flush dirty cache for all files */
Status = Ext2FlushFiles(IrpContext, Vcb, TRUE);
if (!NT_SUCCESS(Status)) {
DbgBreak();
}
Ext2FlushFiles(IrpContext, Vcb, TRUE);
/* flush volume stream's cache to disk */
Status = Ext2FlushVolume(IrpContext, Vcb, TRUE);
if (!NT_SUCCESS(Status) && Status != STATUS_MEDIA_WRITE_PROTECTED) {
DbgBreak();
}
Ext2FlushVolume(IrpContext, Vcb, TRUE);
/* send shutdown request to underlying disk */
Ext2DiskShutDown(Vcb);
@@ -115,4 +111,4 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpContext)
}
return Status;
}
}