From 3c6d321bfc45d3e627c2d35edb616d48bb77f237 Mon Sep 17 00:00:00 2001 From: Matt Wu Date: Fri, 18 Jul 2014 19:54:36 +0800 Subject: FIXME: Mke2fs reports writing failure after dismounting EXT2 volume --- Ext3Fsd/read.c | 16 +++++++++------- Ext3Fsd/write.c | 10 +++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Ext3Fsd/read.c b/Ext3Fsd/read.c index d22a072..9da26ee 100644 --- a/Ext3Fsd/read.c +++ b/Ext3Fsd/read.c @@ -921,21 +921,23 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContext) __leave; } - if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { - - Status = STATUS_TOO_LATE; - bCompleteRequest = TRUE; - __leave; - } - FileObject = IrpContext->FileObject; FcbOrVcb = (PEXT2_FCBVCB) FileObject->FsContext; if (FcbOrVcb->Identifier.Type == EXT2VCB) { + Status = Ext2ReadVolume(IrpContext); bCompleteRequest = FALSE; + } else if (FcbOrVcb->Identifier.Type == EXT2FCB) { + + if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { + Status = STATUS_TOO_LATE; + bCompleteRequest = TRUE; + __leave; + } + Status = Ext2ReadFile(IrpContext); bCompleteRequest = FALSE; } else { diff --git a/Ext3Fsd/write.c b/Ext3Fsd/write.c index 1fb169f..dece824 100644 --- a/Ext3Fsd/write.c +++ b/Ext3Fsd/write.c @@ -1313,11 +1313,6 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpContext) __leave; } - if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { - Status = STATUS_TOO_LATE; - __leave; - } - if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY)) { Status = STATUS_MEDIA_WRITE_PROTECTED; __leave; @@ -1338,6 +1333,11 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpContext) bCompleteRequest = FALSE; } else if (FcbOrVcb->Identifier.Type == EXT2FCB) { + if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { + Status = STATUS_TOO_LATE; + __leave; + } + Status = Ext2WriteFile(IrpContext); if (!NT_SUCCESS(Status)) { DbgBreak(); -- cgit v1.2.3