userlibandfileserver/fileserver/sfat32/sl_fatmisc32.cpp
changeset 291 206a6eaaeb71
parent 271 dc268b18d709
equal deleted inserted replaced
289:55a0a1279a7e 291:206a6eaaeb71
   105 		}
   105 		}
   106 	
   106 	
   107 	ASSERT(iReservedSectors >= (bFat32 ? KDefFat32ResvdSec : KDefFatResvdSec));
   107 	ASSERT(iReservedSectors >= (bFat32 ? KDefFat32ResvdSec : KDefFatResvdSec));
   108 
   108 
   109 	if ((FirstDataSector() & (aEraseBlockSizeInSectors-1)) == 0)
   109 	if ((FirstDataSector() & (aEraseBlockSizeInSectors-1)) == 0)
   110 		{
       
   111 		return KErrNone;
   110 		return KErrNone;
   112 		}
   111 
   113 	else
   112 	
   114 		{
   113     iReservedSectors = reservedSectorsSaved;
   115 		iReservedSectors = reservedSectorsSaved;
   114 	iSectorsPerFat = sectorsPerFatSaved;
   116 		iSectorsPerFat = sectorsPerFatSaved;
   115 	return KErrGeneral;
   117 		return KErrGeneral;
       
   118 		}
       
   119 	}
   116 	}
   120 
   117 
   121 
   118 
   122 //-------------------------------------------------------------------------------------------------------------------
   119 //-------------------------------------------------------------------------------------------------------------------
   123 
   120 
   281 				iCurrentStep=1;
   278 				iCurrentStep=1;
   282 			return;
   279 			return;
   283 			}
   280 			}
   284 		}
   281 		}
   285 
   282 
   286 	// ReMount since MBR may have been rewritten and partition may have moved / changed size
   283     
   287 	TInt ret = LocalDrive()->ForceRemount(0);
   284     {//-- ReMount whole driver stack since MBR may have been rewritten and partition may have moved / changed size.
   288 	if (ret != KErrNone && ret != KErrNotSupported)
   285      
   289 		User::Leave(ret);
   286     //-- this is mostly applicable to SD cards formatting, since SD stack takes care of creating partition table.
       
   287     //-- use KForceMediaChangeReOpenAllMediaDrivers flag that will cause remounting media 
       
   288     //-- drivers associatied with the current partition only and not affecting other ones.
       
   289     const TInt ret = LocalDrive()->ForceRemount((TUint)RFs::KForceMediaChangeReOpenMediaDriver);
       
   290     if(ret != KErrNone && ret != KErrNotSupported)
       
   291 	    User::Leave(ret);
       
   292     }
       
   293 	
   290 
   294 
   291 	// MBR may have changed, so need to re-read iHiddenSectors etc.before BPB is written
   295 	// MBR may have changed, so need to re-read iHiddenSectors etc.before BPB is written
   292 	InitializeFormatDataL();
   296 	InitializeFormatDataL();
   293 
   297 
   294     // Translate bad sector number to cluster number which contains that sector
   298     // Translate bad sector number to cluster number which contains that sector