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:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user