mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
sys: IRP_MJ_QUERY_INFORMATION: correctly retry IRP completion
This commit is contained in:
parent
2a303827a2
commit
0ec5291c70
@ -478,6 +478,7 @@ NTSTATUS FspFsvolQueryInformationComplete(
|
|||||||
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
|
FSP_FSCTL_TRANSACT_REQ *Request = FspIrpRequest(Irp);
|
||||||
FSP_FSCTL_FILE_INFO FileInfoBuf;
|
FSP_FSCTL_FILE_INFO FileInfoBuf;
|
||||||
const FSP_FSCTL_FILE_INFO *FileInfo;
|
const FSP_FSCTL_FILE_INFO *FileInfo;
|
||||||
|
BOOLEAN Success;
|
||||||
|
|
||||||
if (0 != FspIopRequestContext(Request, RequestFileNode))
|
if (0 != FspIopRequestContext(Request, RequestFileNode))
|
||||||
{
|
{
|
||||||
@ -487,9 +488,14 @@ NTSTATUS FspFsvolQueryInformationComplete(
|
|||||||
FspFileNodeReleaseOwner(FileNode, Full, Request);
|
FspFileNodeReleaseOwner(FileNode, Full, Request);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FspFileNodeTryAcquireExclusive(FileNode, Main))
|
Success = DEBUGRANDTEST(90, TRUE) && FspFileNodeTryAcquireExclusive(FileNode, Main);
|
||||||
|
if (!Success)
|
||||||
|
{
|
||||||
FspIopRetryCompleteIrp(Irp, Response, &Result);
|
FspIopRetryCompleteIrp(Irp, Response, &Result);
|
||||||
|
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
|
|
||||||
if (!FspFileNodeTrySetFileInfo(FileNode, FileObject, &Response->Rsp.QueryInformation.FileInfo,
|
if (!FspFileNodeTrySetFileInfo(FileNode, FileObject, &Response->Rsp.QueryInformation.FileInfo,
|
||||||
(ULONG)(UINT_PTR)FspIopRequestContext(Request, RequestInfoChangeNumber)))
|
(ULONG)(UINT_PTR)FspIopRequestContext(Request, RequestInfoChangeNumber)))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user