userlibandfileserver/fileserver/sfat32/sl_dir_cache.cpp
branchRCL_3
changeset 80 597aaf25e343
parent 62 4a8fed1c0ef6
child 87 2f92ad2dc5db
--- a/userlibandfileserver/fileserver/sfat32/sl_dir_cache.cpp	Sat Feb 20 00:10:51 2010 +0200
+++ b/userlibandfileserver/fileserver/sfat32/sl_dir_cache.cpp	Fri Mar 12 15:50:11 2010 +0200
@@ -159,7 +159,8 @@
 	// allocate as many permanently locked pages as there are threads - plus one
 	// otherwise DoMakePageMRU() won't work properly with only one thread
     //-- At present moment the size of TDrive thread pool is 1 (1 drive thread in a pool)
-	iPermanentlyAllocatedPageCount = 1; 
+	const TUint KThreadCount = 1;
+	iPermanentlyAllocatedPageCount = KThreadCount + 1; 
 
 	if (iPermanentlyAllocatedPageCount > iMinSizeInPages)
 		iMinSizeInPages = iPermanentlyAllocatedPageCount;
@@ -679,6 +680,9 @@
 	{
 //	__PRINT1(_L("MakePageMRU (%lx)"), aPos);
 //	__PRINT4(_L("Current Cache State: iLockedQCount=%d, iUnlockedQCount=%d, iLookupTbl=%d, iMaxSizeInPages=%d"), iLockedQCount, iUnlockedQCount, iLookupTable.Count(), iMaxSizeInPages);
+	// check there are at least two locked pages
+	ASSERT(iLockedQCount > 1);
+	
 	// check the MRU page first, if it is already the MRU page, we can return immediately
 	TInt64 pageStartMedPos = CalcPageStartPos(aPos);
 	if (!iLockedQ.IsEmpty())
@@ -949,46 +953,49 @@
 @see CDynamicDirCache::Control()
 */
 void CDynamicDirCache::Dump()
-	{
-	__PRINT(_L("======== CDynamicDirCache::Dump ========="));
-	if (!iLockedQ.IsEmpty())
-		{
-		TDblQueIter<TDynamicDirCachePage> q(iLockedQ);
-		q.SetToFirst();
-		TInt i = 0;
-		while((TDynamicDirCachePage*)q)
-			{
-			TDynamicDirCachePage* pP = q++;
-			__PRINT5(_L("=== CDynamicDirCache::iLockedQ\t[%4d](pos=%lx, locked=%d, valid=%d, size=%u)"), i++, pP->StartPos(), pP->IsLocked(), pP->IsValid(), pP->PageSizeInBytes());
-			}
-		}
-	if (!iUnlockedQ.IsEmpty())
-		{
-		TDblQueIter<TDynamicDirCachePage> q(iUnlockedQ);
-		q.SetToFirst();
-		TInt i = 0;
-		while((TDynamicDirCachePage*)q)
-			{
-			TDynamicDirCachePage* pP = q++;
-			__PRINT5(_L("=== CDynamicDirCache::iUnlockedQ\t[%4d](pos=%lx, locked=%d, valid=%d, size=%u)"), i++, pP->StartPos(), pP->IsLocked(), pP->IsValid(), pP->PageSizeInBytes());
-			}
-		}
+    {
+    __PRINT(_L("======== CDynamicDirCache::Dump ========="));
+    if (!iLockedQ.IsEmpty())
+        {
+        TDblQueIter<TDynamicDirCachePage> q(iLockedQ);
+        q.SetToFirst();
+        TInt i = 0;
+        while((TDynamicDirCachePage*)q)
+            {
+            TDynamicDirCachePage* pP = q++;
+            __PRINT5(_L("=== CDynamicDirCache::iLockedQ      [%4d](pos=%lx, locked=%d, valid=%d, size=%u)"), i++, pP->StartPos(), pP->IsLocked(), pP->IsValid(), pP->PageSizeInBytes());
+            }
+        }
+    __PRINT(_L("=== CDynamicDirCache:: --------------------"));
 
-	if (iLookupTable.Count())
-		{
-		TInt i = 0;
-		THashSetIter<TLookupEntry> iter(iLookupTable);
-		TLookupEntry* pEntry;
-		pEntry = (TLookupEntry*) iter.Next();
-		while(pEntry)
-			{
-			TDynamicDirCachePage* pP = pEntry->iPage;
-			__PRINT5(_L("=== CDynamicDirCache::iLookupTable\t[%4d](pos=%lx, locked=%d, valid=%d, size=%u)"), i++, pP->StartPos(), pP->IsLocked(), pP->IsValid(), pP->PageSizeInBytes());
-			pEntry = (TLookupEntry*) iter.Next();
-			};
-		}
-	__PRINT(_L("===========================================\n"));
-	}
+    if (!iUnlockedQ.IsEmpty())
+        {
+        TDblQueIter<TDynamicDirCachePage> q(iUnlockedQ);
+        q.SetToFirst();
+        TInt i = 0;
+        while((TDynamicDirCachePage*)q)
+            {
+            TDynamicDirCachePage* pP = q++;
+            __PRINT5(_L("=== CDynamicDirCache::iUnlockedQ    [%4d](pos=%lx, locked=%d, valid=%d, size=%u)"), i++, pP->StartPos(), pP->IsLocked(), pP->IsValid(), pP->PageSizeInBytes());
+            }
+        }
+    __PRINT(_L("=== CDynamicDirCache:: --------------------"));
+
+    if (iLookupTable.Count())
+        {
+        TInt i = 0;
+        THashSetIter<TLookupEntry> iter(iLookupTable);
+        TLookupEntry* pEntry;
+        pEntry = (TLookupEntry*) iter.Next();
+        while(pEntry)
+            {
+            TDynamicDirCachePage* pP = pEntry->iPage;
+            __PRINT5(_L("=== CDynamicDirCache::iLookupTable  [%4d](pos=%lx, locked=%d, valid=%d, size=%u)"), i++, pP->StartPos(), pP->IsLocked(), pP->IsValid(), pP->PageSizeInBytes());
+            pEntry = (TLookupEntry*) iter.Next();
+            };
+        }
+    __PRINT(_L("===========================================\n"));
+    }
 #endif //_DEBUG
 
 /**