From c9e616ea2b73091bbcad1ef80cf01d0b45305819 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 26 Oct 2014 20:20:42 +0000 Subject: [PATCH] [FASTFAT] Implement vfatGrabFCB() (which was defined but never implemented) for increasing the reference count on a FCB. This will make debugging easier. Dedicated to Thomas :-). svn path=/trunk/; revision=65031 --- reactos/drivers/filesystems/fastfat/create.c | 8 +++---- reactos/drivers/filesystems/fastfat/fcb.c | 24 +++++++++++--------- reactos/drivers/filesystems/fastfat/finfo.c | 4 ++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/reactos/drivers/filesystems/fastfat/create.c b/reactos/drivers/filesystems/fastfat/create.c index 9352d1c0820..fb4261b99b7 100644 --- a/reactos/drivers/filesystems/fastfat/create.c +++ b/reactos/drivers/filesystems/fastfat/create.c @@ -365,7 +365,7 @@ VfatOpenFile( DPRINT("'%wZ'\n", &FileObject->RelatedFileObject->FileName); *ParentFcb = FileObject->RelatedFileObject->FsContext; - (*ParentFcb)->RefCount++; + vfatGrabFCB(DeviceExt, *ParentFcb); } else { @@ -391,7 +391,7 @@ VfatOpenFile( if (*ParentFcb) { - (*ParentFcb)->RefCount++; + vfatGrabFCB(DeviceExt, *ParentFcb); } /* try first to find an existing FCB in memory */ @@ -497,7 +497,7 @@ VfatCreateFile( pFcb = DeviceExt->VolumeFcb; vfatAttachFCBToFileObject(DeviceExt, pFcb, FileObject); - pFcb->RefCount++; + vfatGrabFCB(DeviceExt, pFcb); Irp->IoStatus.Information = FILE_OPENED; return STATUS_SUCCESS; @@ -562,7 +562,7 @@ VfatCreateFile( if (Status == STATUS_SUCCESS) { - ParentFcb->RefCount++; + vfatGrabFCB(DeviceExt, ParentFcb); vfatReleaseFCB(DeviceExt, TargetFcb); Irp->IoStatus.Information = FILE_EXISTS; } diff --git a/reactos/drivers/filesystems/fastfat/fcb.c b/reactos/drivers/filesystems/fastfat/fcb.c index 251821bcf59..0b5f24a345b 100644 --- a/reactos/drivers/filesystems/fastfat/fcb.c +++ b/reactos/drivers/filesystems/fastfat/fcb.c @@ -287,6 +287,14 @@ vfatFCBIsRoot( return FCB->PathNameU.Length == sizeof(WCHAR) && FCB->PathNameU.Buffer[0] == L'\\' ? TRUE : FALSE; } +VOID +vfatGrabFCB( + PDEVICE_EXTENSION pVCB, + PVFATFCB pFCB) +{ + ++pFCB->RefCount; +} + VOID vfatReleaseFCB( PDEVICE_EXTENSION pVCB, @@ -338,7 +346,7 @@ vfatAddFCBToTable( } if (pFCB->parentFcb) { - pFCB->parentFcb->RefCount++; + vfatGrabFCB(pVCB, pFCB->parentFcb); } } @@ -403,12 +411,6 @@ vfatUpdateFCB( */ vfatReleaseFCB(pVCB, OldParent); - /* In case we were moving accross directories, reset caching on old parent */ - //if (OldParent != ParentFcb) - //{ - // CcUninitializeCacheMap(OldParent->FileObject, NULL, NULL); - //} - return STATUS_SUCCESS; } @@ -455,7 +457,7 @@ vfatGrabFCBFromTable( DPRINT("'%wZ' '%wZ'\n", &FileNameU, FcbNameU); if (RtlEqualUnicodeString(&FileNameU, FcbNameU, TRUE)) { - rcFCB->RefCount++; + vfatGrabFCB(pVCB, rcFCB); return rcFCB; } } @@ -489,7 +491,7 @@ vfatFCBInitializeCacheFromVolume( fileObject->FsContext = fcb; fileObject->FsContext2 = newCCB; fcb->FileObject = fileObject; - fcb->RefCount++; + vfatGrabFCB(vcb, fcb); _SEH2_TRY { @@ -655,7 +657,7 @@ vfatMakeFCBFromDirEntry( rcFCB->RFCB.FileSize.QuadPart = Size; rcFCB->RFCB.ValidDataLength.QuadPart = Size; rcFCB->RFCB.AllocationSize.QuadPart = ROUND_UP(Size, vcb->FatInfo.BytesPerCluster); - rcFCB->RefCount++; + vfatGrabFCB(vcb, rcFCB); if (vfatFCBIsDirectory(rcFCB)) { vfatFCBInitializeCacheFromVolume(vcb, rcFCB); @@ -817,7 +819,7 @@ vfatGetFCBForFile( { *pFCB = FCB; *pParentFCB = FCB->parentFcb; - (*pParentFCB)->RefCount++; + vfatGrabFCB(pVCB, *pParentFCB); return STATUS_SUCCESS; } diff --git a/reactos/drivers/filesystems/fastfat/finfo.c b/reactos/drivers/filesystems/fastfat/finfo.c index b5199dac18d..2bea14d17b0 100644 --- a/reactos/drivers/filesystems/fastfat/finfo.c +++ b/reactos/drivers/filesystems/fastfat/finfo.c @@ -426,7 +426,7 @@ vfatPrepareTargetForRename( /* Effectively delete old file to allow renaming */ VfatDelEntry(DeviceExt, TargetFcb, NULL); - (*ParentFCB)->RefCount++; + vfatGrabFCB(DeviceExt, *ParentFCB); vfatReleaseFCB(DeviceExt, TargetFcb); *Deleted = TRUE; } @@ -720,7 +720,7 @@ VfatSetRenameInformation( { /* Try to find target */ ParentFCB = FCB->parentFcb; - ParentFCB->RefCount++; + vfatGrabFCB(DeviceObject, ParentFCB); Status = vfatPrepareTargetForRename(DeviceObject, &ParentFCB, &NewFile, -- 2.17.1