From 4c9b6600ea5cddbdcd69d2cabd1b7a97426cea8d Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 24 May 2015 15:26:15 +0000 Subject: [PATCH] [NTFS] Use non-paged lookaside list for IRP context allocation svn path=/trunk/; revision=67883 --- reactos/drivers/filesystems/ntfs/dispatch.c | 2 +- reactos/drivers/filesystems/ntfs/misc.c | 4 +--- reactos/drivers/filesystems/ntfs/ntfs.c | 4 ++++ reactos/drivers/filesystems/ntfs/ntfs.h | 1 + 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/dispatch.c b/reactos/drivers/filesystems/ntfs/dispatch.c index 27bbad45864..91cea558f51 100644 --- a/reactos/drivers/filesystems/ntfs/dispatch.c +++ b/reactos/drivers/filesystems/ntfs/dispatch.c @@ -117,7 +117,7 @@ NtfsDispatch(PNTFS_IRP_CONTEXT IrpContext) } else { - ExFreePoolWithTag(IrpContext, 'PRIN'); + ExFreeToNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList, IrpContext); } IoSetTopLevelIrp(NULL); diff --git a/reactos/drivers/filesystems/ntfs/misc.c b/reactos/drivers/filesystems/ntfs/misc.c index 12bfdc27239..a163e0fd230 100644 --- a/reactos/drivers/filesystems/ntfs/misc.c +++ b/reactos/drivers/filesystems/ntfs/misc.c @@ -70,9 +70,7 @@ NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject, TRACE_(NTFS, "NtfsAllocateIrpContext()\n"); - IrpContext = (PNTFS_IRP_CONTEXT)ExAllocatePoolWithTag(NonPagedPool, - sizeof(NTFS_IRP_CONTEXT), - 'PRIN'); + IrpContext = (PNTFS_IRP_CONTEXT)ExAllocateFromNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList); if (IrpContext == NULL) return NULL; diff --git a/reactos/drivers/filesystems/ntfs/ntfs.c b/reactos/drivers/filesystems/ntfs/ntfs.c index 5ba10c832ac..cbb53a8db26 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.c +++ b/reactos/drivers/filesystems/ntfs/ntfs.c @@ -96,6 +96,10 @@ DriverEntry(PDRIVER_OBJECT DriverObject, NtfsGlobalData->FastIoDispatch.FastIoWrite = NtfsFastIoWrite; DriverObject->FastIoDispatch = &NtfsGlobalData->FastIoDispatch; + /* Initialize lookaside list for IRP contexts */ + ExInitializeNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList, + NULL, NULL, 0, sizeof(NTFS_IRP_CONTEXT), 'PRIN', 0); + /* Driver can't be unloaded */ DriverObject->DriverUnload = NULL; diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index e9f2ee52240..530f4f085f1 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -137,6 +137,7 @@ typedef struct CACHE_MANAGER_CALLBACKS CacheMgrCallbacks; ULONG Flags; FAST_IO_DISPATCH FastIoDispatch; + NPAGED_LOOKASIDE_LIST IrpContextLookasideList; } NTFS_GLOBAL_DATA, *PNTFS_GLOBAL_DATA; -- 2.17.1