sys: FSP_FILE_NODE_NO_PGIO

This commit is contained in:
Bill Zissimopoulos 2022-04-19 15:21:54 +01:00
parent deaf475861
commit df4c19c113
2 changed files with 17 additions and 0 deletions

View File

@ -1434,6 +1434,7 @@ NTSTATUS FspVolumeWork(
PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
/* file objects */ /* file objects */
#define FSP_FILE_NODE_NO_PGIO
#define FspFileNodeKind(FileNode) \ #define FspFileNodeKind(FileNode) \
(((FSP_FILE_NODE *)FileNode)->Header.NodeTypeCode) (((FSP_FILE_NODE *)FileNode)->Header.NodeTypeCode)
#define FspFileNodeIsValid(FileNode) \ #define FspFileNodeIsValid(FileNode) \

View File

@ -407,8 +407,10 @@ VOID FspFileNodeAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags)
if (Flags & FspFileNodeAcquireMain) if (Flags & FspFileNodeAcquireMain)
ExAcquireResourceSharedLite(FileNode->Header.Resource, TRUE); ExAcquireResourceSharedLite(FileNode->Header.Resource, TRUE);
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, TRUE); ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, TRUE);
#endif
FSP_FILE_NODE_SET_FLAGS(); FSP_FILE_NODE_SET_FLAGS();
} }
@ -432,6 +434,7 @@ BOOLEAN FspFileNodeTryAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags, BOOLE
return FALSE; return FALSE;
} }
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
{ {
Result = ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, Wait); Result = ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, Wait);
@ -442,6 +445,7 @@ BOOLEAN FspFileNodeTryAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags, BOOLE
return FALSE; return FALSE;
} }
} }
#endif
if (Result) if (Result)
FSP_FILE_NODE_SET_FLAGS(); FSP_FILE_NODE_SET_FLAGS();
@ -462,8 +466,10 @@ VOID FspFileNodeAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags)
if (Flags & FspFileNodeAcquireMain) if (Flags & FspFileNodeAcquireMain)
ExAcquireResourceExclusiveLite(FileNode->Header.Resource, TRUE); ExAcquireResourceExclusiveLite(FileNode->Header.Resource, TRUE);
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, TRUE); ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, TRUE);
#endif
FSP_FILE_NODE_SET_FLAGS(); FSP_FILE_NODE_SET_FLAGS();
} }
@ -487,6 +493,7 @@ BOOLEAN FspFileNodeTryAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags, BO
return FALSE; return FALSE;
} }
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
{ {
Result = ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, Wait); Result = ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, Wait);
@ -497,6 +504,7 @@ BOOLEAN FspFileNodeTryAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags, BO
return FALSE; return FALSE;
} }
} }
#endif
if (Result) if (Result)
FSP_FILE_NODE_SET_FLAGS(); FSP_FILE_NODE_SET_FLAGS();
@ -513,8 +521,10 @@ VOID FspFileNodeConvertExclusiveToSharedF(FSP_FILE_NODE *FileNode, ULONG Flags)
FSP_FILE_NODE_GET_FLAGS(); FSP_FILE_NODE_GET_FLAGS();
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
ExConvertExclusiveToSharedLite(FileNode->Header.PagingIoResource); ExConvertExclusiveToSharedLite(FileNode->Header.PagingIoResource);
#endif
if (Flags & FspFileNodeAcquireMain) if (Flags & FspFileNodeAcquireMain)
ExConvertExclusiveToSharedLite(FileNode->Header.Resource); ExConvertExclusiveToSharedLite(FileNode->Header.Resource);
@ -534,8 +544,10 @@ VOID FspFileNodeSetOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner)
if (Flags & FspFileNodeAcquireMain) if (Flags & FspFileNodeAcquireMain)
ExSetResourceOwnerPointer(FileNode->Header.Resource, Owner); ExSetResourceOwnerPointer(FileNode->Header.Resource, Owner);
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
ExSetResourceOwnerPointer(FileNode->Header.PagingIoResource, Owner); ExSetResourceOwnerPointer(FileNode->Header.PagingIoResource, Owner);
#endif
} }
VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags) VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags)
@ -548,8 +560,10 @@ VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags)
FSP_FILE_NODE_GET_FLAGS(); FSP_FILE_NODE_GET_FLAGS();
FSP_FILE_NODE_ASSERT_FLAGS_SET(); FSP_FILE_NODE_ASSERT_FLAGS_SET();
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
ExReleaseResourceLite(FileNode->Header.PagingIoResource); ExReleaseResourceLite(FileNode->Header.PagingIoResource);
#endif
if (Flags & FspFileNodeAcquireMain) if (Flags & FspFileNodeAcquireMain)
ExReleaseResourceLite(FileNode->Header.Resource); ExReleaseResourceLite(FileNode->Header.Resource);
@ -569,6 +583,7 @@ VOID FspFileNodeReleaseOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner)
Owner = (PVOID)((UINT_PTR)Owner | 3); Owner = (PVOID)((UINT_PTR)Owner | 3);
#if !defined(FSP_FILE_NODE_NO_PGIO)
if (Flags & FspFileNodeAcquirePgio) if (Flags & FspFileNodeAcquirePgio)
{ {
if (ExIsResourceAcquiredLite(FileNode->Header.PagingIoResource)) if (ExIsResourceAcquiredLite(FileNode->Header.PagingIoResource))
@ -576,6 +591,7 @@ VOID FspFileNodeReleaseOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner)
else else
ExReleaseResourceForThreadLite(FileNode->Header.PagingIoResource, (ERESOURCE_THREAD)Owner); ExReleaseResourceForThreadLite(FileNode->Header.PagingIoResource, (ERESOURCE_THREAD)Owner);
} }
#endif
if (Flags & FspFileNodeAcquireMain) if (Flags & FspFileNodeAcquireMain)
{ {