diff -r 55a0a1279a7e -r 206a6eaaeb71 userlibandfileserver/fileserver/sfat32/sl_fatmisc32.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_fatmisc32.cpp Wed Oct 13 13:34:03 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_fatmisc32.cpp Mon Oct 18 15:31:10 2010 +0100 @@ -107,15 +107,12 @@ ASSERT(iReservedSectors >= (bFat32 ? KDefFat32ResvdSec : KDefFatResvdSec)); if ((FirstDataSector() & (aEraseBlockSizeInSectors-1)) == 0) - { return KErrNone; - } - else - { - iReservedSectors = reservedSectorsSaved; - iSectorsPerFat = sectorsPerFatSaved; - return KErrGeneral; - } + + + iReservedSectors = reservedSectorsSaved; + iSectorsPerFat = sectorsPerFatSaved; + return KErrGeneral; } @@ -283,10 +280,17 @@ } } - // ReMount since MBR may have been rewritten and partition may have moved / changed size - TInt ret = LocalDrive()->ForceRemount(0); - if (ret != KErrNone && ret != KErrNotSupported) - User::Leave(ret); + + {//-- ReMount whole driver stack since MBR may have been rewritten and partition may have moved / changed size. + + //-- this is mostly applicable to SD cards formatting, since SD stack takes care of creating partition table. + //-- use KForceMediaChangeReOpenAllMediaDrivers flag that will cause remounting media + //-- drivers associatied with the current partition only and not affecting other ones. + const TInt ret = LocalDrive()->ForceRemount((TUint)RFs::KForceMediaChangeReOpenMediaDriver); + if(ret != KErrNone && ret != KErrNotSupported) + User::Leave(ret); + } + // MBR may have changed, so need to re-read iHiddenSectors etc.before BPB is written InitializeFormatDataL();