mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
- Implement locking for Cc flush (the one used in NT5.2 results in a hang, might be because of a misused PagingIoResource).
- If an acquire/release operation is not implemented, FSD must return STATUS_INVALID_DEVICE_REQUEST, not some other error code. - Fix a typo in the debug message. svn path=/trunk/; revision=36731
This commit is contained in:
@@ -198,7 +198,7 @@ FindFile (
|
||||
|
||||
DPRINT ("FindFile(Parent %p, FileToFind '%wZ', DirIndex: %d)\n",
|
||||
Parent, FileToFindU, DirContext->DirIndex);
|
||||
DPRINT ("FindFile: Path %wZ)\n",&Parent->PathNameU);
|
||||
DPRINT ("FindFile: Path %wZ\n",&Parent->PathNameU);
|
||||
|
||||
PathNameBufferLength = LONGNAME_MAX_LENGTH * sizeof(WCHAR);
|
||||
PathNameBuffer = ExAllocatePoolWithTag(NonPagedPool, PathNameBufferLength + sizeof(WCHAR), TAG_VFAT);
|
||||
|
||||
@@ -175,7 +175,7 @@ VfatAcquireForModWrite(IN PFILE_OBJECT FileObject,
|
||||
IN PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
DPRINT("VfatAcquireForModWrite\n");
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
return STATUS_INVALID_DEVICE_REQUEST;
|
||||
}
|
||||
|
||||
static BOOLEAN NTAPI
|
||||
@@ -296,16 +296,34 @@ static NTSTATUS NTAPI
|
||||
VfatAcquireForCcFlush(IN PFILE_OBJECT FileObject,
|
||||
IN PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext;
|
||||
|
||||
DPRINT("VfatAcquireForCcFlush\n");
|
||||
return STATUS_INVALID_DEVICE_REQUEST;
|
||||
|
||||
/* Make sure it is not a volume lock */
|
||||
ASSERT(!(Fcb->Flags & FCB_IS_VOLUME));
|
||||
|
||||
/* Acquire the resource */
|
||||
ExAcquireResourceExclusiveLite(&(Fcb->MainResource), TRUE);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static NTSTATUS NTAPI
|
||||
VfatReleaseForCcFlush(IN PFILE_OBJECT FileObject,
|
||||
IN PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext;
|
||||
|
||||
DPRINT("VfatReleaseForCcFlush\n");
|
||||
return STATUS_INVALID_DEVICE_REQUEST;
|
||||
|
||||
/* Make sure it is not a volume lock */
|
||||
ASSERT(!(Fcb->Flags & FCB_IS_VOLUME));
|
||||
|
||||
/* Release the resource */
|
||||
ExReleaseResourceLite(&(Fcb->MainResource));
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
BOOLEAN NTAPI
|
||||
@@ -378,7 +396,6 @@ VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch)
|
||||
FastIoDispatch->ReleaseFileForNtCreateSection = VfatReleaseFileForNtCreateSection;
|
||||
FastIoDispatch->FastIoDetachDevice = VfatFastIoDetachDevice;
|
||||
FastIoDispatch->FastIoQueryNetworkOpenInfo = VfatFastIoQueryNetworkOpenInfo;
|
||||
FastIoDispatch->AcquireForModWrite = VfatAcquireForModWrite;
|
||||
FastIoDispatch->MdlRead = VfatMdlRead;
|
||||
FastIoDispatch->MdlReadComplete = VfatMdlReadComplete;
|
||||
FastIoDispatch->PrepareMdlWrite = VfatPrepareMdlWrite;
|
||||
@@ -388,6 +405,7 @@ VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch)
|
||||
FastIoDispatch->MdlReadCompleteCompressed = VfatMdlReadCompleteCompressed;
|
||||
FastIoDispatch->MdlWriteCompleteCompressed = VfatMdlWriteCompleteCompressed;
|
||||
FastIoDispatch->FastIoQueryOpen = VfatFastIoQueryOpen;
|
||||
FastIoDispatch->AcquireForModWrite = VfatAcquireForModWrite;
|
||||
FastIoDispatch->ReleaseForModWrite = VfatReleaseForModWrite;
|
||||
FastIoDispatch->AcquireForCcFlush = VfatAcquireForCcFlush;
|
||||
FastIoDispatch->ReleaseForCcFlush = VfatReleaseForCcFlush;
|
||||
|
||||
Reference in New Issue
Block a user