- #
- # ms-nfs41client SRVOpen collapse support
- # does NOT work because we do not know where we can get the |open_state| from
- #
- diff --git a/sys/nfs41sys_openclose.c b/sys/nfs41sys_openclose.c
- index d0cc36f..111ec82 100644
- --- a/sys/nfs41sys_openclose.c
- +++ b/sys/nfs41sys_openclose.c
- @@ -1079,8 +1079,35 @@ out:
- NTSTATUS nfs41_CollapseOpen(
- IN OUT PRX_CONTEXT RxContext)
- {
- - NTSTATUS status = STATUS_MORE_PROCESSING_REQUIRED;
- + NTSTATUS status;
- +
- DbgEn();
- +
- + PMRX_SRV_OPEN SrvOpen = RxContext->pRelevantSrvOpen;
- + PNFS41_FOBX nfs41_fobx = NULL;
- +
- + RxContext->pFobx = (PMRX_FOBX)RxCreateNetFobx(RxContext, SrvOpen);
- +
- + if (RxContext->pFobx == NULL) {
- + status = STATUS_INSUFFICIENT_RESOURCES;
- + goto out;
- + }
- +
- + RxContext->pFobx->OffsetOfNextEaToReturn = 1; /* FIXME: Why ? */
- + status = STATUS_SUCCESS;
- +
- + nfs41_fobx = (PNFS41_FOBX)(RxContext->pFobx)->Context;
- + /*
- + * FIXME: Where should we get the |open_state| from ? We either
- + * need another fobx or a FileObject
- + */
- + nfs41_fobx->nfs41_open_state = NULL/*xxx->open_state*/;
- + if (nfs41_fobx->sec_ctx.ClientToken == NULL) {
- + status = nfs41_get_sec_ctx(SecurityImpersonation, &nfs41_fobx->sec_ctx);
- + if (status)
- + goto out;
- + }
- +out:
- DbgEx();
- return status;
- }
- @@ -1088,9 +1115,10 @@ NTSTATUS nfs41_CollapseOpen(
- NTSTATUS nfs41_ShouldTryToCollapseThisOpen(
- IN OUT PRX_CONTEXT RxContext)
- {
- - if (RxContext->pRelevantSrvOpen == NULL)
- - return STATUS_SUCCESS;
- - else return STATUS_MORE_PROCESSING_REQUIRED;
- + NTSTATUS status = STATUS_SUCCESS;
- + DbgEn();
- + DbgEx();
- + return status;
- }
- NTSTATUS map_close_errors(
ms-nfs41client SRVOpen collapse support
Posted by Anonymous on Sat 19th Apr 2025 19:06
raw | new post
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.