Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matt-wu/Ext3Fsd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Wu <matt@ext2fsd.com>2014-07-18 15:54:36 +0400
committerMatt Wu <matt@ext2fsd.com>2014-07-18 15:54:36 +0400
commit3c6d321bfc45d3e627c2d35edb616d48bb77f237 (patch)
treeccf0e3e74ef8d13414c2d2b46cc388af66c3f842
parent982843f889ebcac93c802ba329e9f8e61aabc82a (diff)
FIXME: Mke2fs reports writing failure after dismounting EXT2 volume
-rw-r--r--Ext3Fsd/read.c16
-rw-r--r--Ext3Fsd/write.c10
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();