mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 13:10:39 +00:00
[RDBSS]
- Misc fixes with DPRINTS [RXCE] - In RxFinalizeSrvOpen, always dereference the FCB, it's always referenced on SRV_OPEN creation - Misc fixes with DPRINTS With that revision and r75419, I'm now able to mount a NFS share, browse it, read a file from it, and unmount it. We're OK regarding references counting! CORE-8204 CORE-11327 CORE-13581 svn path=/trunk/; revision=75420
This commit is contained in:
parent
4a4f6e5d9f
commit
51e9c7f51a
2 changed files with 13 additions and 3 deletions
|
@ -5664,6 +5664,11 @@ RxFindOrCreateFcb(
|
||||||
/* If FCB was not found or is not covering full path, prepare for more work */
|
/* If FCB was not found or is not covering full path, prepare for more work */
|
||||||
if (Fcb == NULL || Fcb->FcbTableEntry.Path.Length != NetRootName->Length)
|
if (Fcb == NULL || Fcb->FcbTableEntry.Path.Length != NetRootName->Length)
|
||||||
{
|
{
|
||||||
|
if (Fcb != NULL)
|
||||||
|
{
|
||||||
|
DPRINT1("FCB was found and it's not covering the whole path: %wZ - %wZ\n", &Fcb->FcbTableEntry.Path, NetRootName);
|
||||||
|
}
|
||||||
|
|
||||||
if (!AcquiredExclusive)
|
if (!AcquiredExclusive)
|
||||||
{
|
{
|
||||||
RxReleaseFcbTableLock(&NetRoot->FcbTable);
|
RxReleaseFcbTableLock(&NetRoot->FcbTable);
|
||||||
|
@ -6354,7 +6359,7 @@ RxFspDispatch(
|
||||||
RxContext->LastExecutionThread = PsGetCurrentThread();
|
RxContext->LastExecutionThread = PsGetCurrentThread();
|
||||||
SetFlag(RxContext->Flags, (RX_CONTEXT_FLAG_IN_FSP | RX_CONTEXT_FLAG_WAIT));
|
SetFlag(RxContext->Flags, (RX_CONTEXT_FLAG_IN_FSP | RX_CONTEXT_FLAG_WAIT));
|
||||||
|
|
||||||
DPRINT("Dispatch: MN: %d, Ctxt: %p, IRP: %p, THRD: %lx #%lx", RxContext->MinorFunction,
|
DPRINT("Dispatch: MN: %d, Ctxt: %p, IRP: %p, THRD: %lx #%lx\n", RxContext->MinorFunction,
|
||||||
RxContext, RxContext->CurrentIrp, RxContext->LastExecutionThread,
|
RxContext, RxContext->CurrentIrp, RxContext->LastExecutionThread,
|
||||||
RxContext->SerialNumber);
|
RxContext->SerialNumber);
|
||||||
|
|
||||||
|
|
|
@ -412,6 +412,8 @@ RxAllocateFcbObject(
|
||||||
FsRtlSetupAdvancedHeader(Fcb, &NonPagedFcb->AdvancedFcbHeaderMutex);
|
FsRtlSetupAdvancedHeader(Fcb, &NonPagedFcb->AdvancedFcbHeaderMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DPRINT("Allocated %p\n", Buffer);
|
||||||
|
|
||||||
return Buffer;
|
return Buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3158,11 +3160,10 @@ RxFinalizeSrvOpen(
|
||||||
RemoveEntryList(&ThisSrvOpen->SrvOpenQLinks);
|
RemoveEntryList(&ThisSrvOpen->SrvOpenQLinks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If enclosed allocation, mark the memory zone free and dereference FCB */
|
/* If enclosed allocation, mark the memory zone free */
|
||||||
if (BooleanFlagOn(ThisSrvOpen->Flags, SRVOPEN_FLAG_ENCLOSED_ALLOCATED))
|
if (BooleanFlagOn(ThisSrvOpen->Flags, SRVOPEN_FLAG_ENCLOSED_ALLOCATED))
|
||||||
{
|
{
|
||||||
ClearFlag(Fcb->FcbState, FCB_STATE_SRVOPEN_USED);
|
ClearFlag(Fcb->FcbState, FCB_STATE_SRVOPEN_USED);
|
||||||
RxDereferenceNetFcb(Fcb);
|
|
||||||
}
|
}
|
||||||
/* Otherwise, free the memory */
|
/* Otherwise, free the memory */
|
||||||
else
|
else
|
||||||
|
@ -3170,6 +3171,8 @@ RxFinalizeSrvOpen(
|
||||||
RxFreeFcbObject(ThisSrvOpen);
|
RxFreeFcbObject(ThisSrvOpen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RxDereferenceNetFcb(Fcb);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4089,6 +4092,8 @@ RxFreeFcbObject(
|
||||||
{
|
{
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
DPRINT("Freeing %p\n", Object);
|
||||||
|
|
||||||
/* If that's a FOBX/SRV_OPEN, nothing to do, just free it */
|
/* If that's a FOBX/SRV_OPEN, nothing to do, just free it */
|
||||||
if (NodeType(Object) == RDBSS_NTC_FOBX || NodeType(Object) == RDBSS_NTC_SRVOPEN)
|
if (NodeType(Object) == RDBSS_NTC_FOBX || NodeType(Object) == RDBSS_NTC_SRVOPEN)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue