mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 22:47:28 +00:00
[NTFS]
Implement request qeueing (based on FastFAT work) svn path=/trunk/; revision=67878
This commit is contained in:
parent
d71894a0ad
commit
d4a0828949
|
@ -31,8 +31,29 @@
|
|||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
static LONG QueueCount = 0;
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
static WORKER_THREAD_ROUTINE NtfsDoRequest;
|
||||
|
||||
static
|
||||
NTSTATUS
|
||||
NtfsQueueRequest(PNTFS_IRP_CONTEXT IrpContext)
|
||||
{
|
||||
InterlockedIncrement(&QueueCount);
|
||||
DPRINT("NtfsQueueRequest(IrpContext %p), %d\n", IrpContext, QueueCount);
|
||||
|
||||
ASSERT(!(IrpContext->Flags & IRPCONTEXT_QUEUE) &&
|
||||
(IrpContext->Flags & IRPCONTEXT_COMPLETE));
|
||||
IrpContext->Flags |= IRPCONTEXT_CANWAIT;
|
||||
IoMarkIrpPending(IrpContext->Irp);
|
||||
ExInitializeWorkItem(&IrpContext->WorkQueueItem, NtfsDoRequest, IrpContext);
|
||||
ExQueueWorkItem(&IrpContext->WorkQueueItem, CriticalWorkQueue);
|
||||
|
||||
return STATUS_PENDING;
|
||||
}
|
||||
|
||||
static
|
||||
NTSTATUS
|
||||
NtfsDispatch(PNTFS_IRP_CONTEXT IrpContext)
|
||||
|
@ -92,7 +113,7 @@ NtfsDispatch(PNTFS_IRP_CONTEXT IrpContext)
|
|||
/* Reset our status flags before queueing the IRP */
|
||||
IrpContext->Flags |= IRPCONTEXT_COMPLETE;
|
||||
IrpContext->Flags &= ~IRPCONTEXT_QUEUE;
|
||||
UNIMPLEMENTED_DBGBREAK();
|
||||
Status = NtfsQueueRequest(IrpContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -105,6 +126,17 @@ NtfsDispatch(PNTFS_IRP_CONTEXT IrpContext)
|
|||
return Status;
|
||||
}
|
||||
|
||||
static
|
||||
VOID
|
||||
NTAPI
|
||||
NtfsDoRequest(PVOID IrpContext)
|
||||
{
|
||||
InterlockedDecrement(&QueueCount);
|
||||
DPRINT("NtfsDoRequest(IrpContext %p), MajorFunction %x, %d\n",
|
||||
IrpContext, ((PNTFS_IRP_CONTEXT)IrpContext)->MajorFunction, QueueCount);
|
||||
NtfsDispatch((PNTFS_IRP_CONTEXT)IrpContext);
|
||||
}
|
||||
|
||||
/*
|
||||
* FUNCTION: This function manages IRP for various major functions
|
||||
* ARGUMENTS:
|
||||
|
|
Loading…
Reference in a new issue