diff -r c1f20ce4abcf -r 3e88ff8f41d5 userlibandfileserver/fileserver/sfile/sf_drv.cpp --- a/userlibandfileserver/fileserver/sfile/sf_drv.cpp Tue Aug 31 16:34:26 2010 +0300 +++ b/userlibandfileserver/fileserver/sfile/sf_drv.cpp Wed Sep 01 12:34:56 2010 +0100 @@ -17,9 +17,8 @@ #include "sf_std.h" #include "sf_file_cache.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "sf_drvTraces.h" -#endif + + //const TInt KMaxNotifierAttempts=4; // not used anywhere static TPtrC StripBackSlash(const TDesC& aName) @@ -283,12 +282,12 @@ if (!aMount.IsDismounted() && !aMount.ProxyDriveDismounted()) { aMount.SetDrive(this); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREMOUNT1, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReMount, EF32TraceUidFileSys, DriveNumber()); //-- actually, this is asking CMountCB to see if it belongs to the current media. iReason = aMount.ReMount(); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREMOUNT1RET, "success %d", iReason); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReMountRet, EF32TraceUidFileSys, iReason); if (iReason == KErrNone) // ReMount succeeded { @@ -324,13 +323,13 @@ apMount = NULL; - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber()); //-- construct a new CmountCB object. //-- on return pMountsFs will be the pointer to the factory object of CFileSystem that produced this mount apMount = FSys().NewMountExL(this, &pMountsFs, aForceMount, aFsNameHash); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTLRET, "r %d CMountCB %x", (TUint) KErrNone, (TUint) apMount); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, KErrNone, apMount); __PRINT2(_L("TDrive::MountMediaL created mount:0x%x FileSys:0x%x"), apMount, pMountsFs); ASSERT(pMountsFs && apMount); @@ -399,10 +398,10 @@ */ TInt TDrive::MountControl(TInt aLevel, TInt aOption, TAny* aParam) { - OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMOUNTCONTROL, "drive %d aLevel %d aOption %x aParam %x", (TUint) DriveNumber(), (TUint) aLevel, (TUint) aOption, (TUint) aParam); + TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBMountControl, EF32TraceUidFileSys, DriveNumber(), aLevel, aOption, aParam); TInt r = CurrentMount().MountControl(aLevel, aOption, aParam); - - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMOUNTCONTROLRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBMountControlRet, EF32TraceUidFileSys, r); + return r; } @@ -431,9 +430,9 @@ //-- the caller will be suspended until aFreeSpaceRequired bytes is available or scanning process finishes { TUint64 freeSpaceReq = aFreeSpaceRequired; - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFREESPACE, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFreeSpace, EF32TraceUidFileSys, DriveNumber()); nRes = CurrentMount().RequestFreeSpace(freeSpaceReq); - OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFREESPACERET, "r %d FreeSpace %x:%x", (TUint) nRes, (TUint) I64HIGH(freeSpaceReq), (TUint) I64LOW(freeSpaceReq)); + TRACERET3(UTF::EBorder, UTraceModuleFileSys::ECMountCBFreeSpaceRet, EF32TraceUidFileSys, nRes, I64LOW(freeSpaceReq), I64HIGH(freeSpaceReq)); if(nRes == KErrNone) { return (freeSpaceReq >= aFreeSpaceRequired) ? KErrNone : KErrDiskFull; @@ -463,10 +462,11 @@ nRes = CheckMount(); if(nRes != KErrNone) return nRes; + //-- 1. Try mount-specific request first. It won't block this call as CMountCB::VolumeL() can do if some background activity is going on the mount - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMESIZE, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeSize, EF32TraceUidFileSys, DriveNumber()); nRes = CurrentMount().MountedVolumeSize(aSize); - OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMESIZERET, "r %d aSize %x:%x", (TUint) nRes, (TUint) I64HIGH(aSize), (TUint) I64LOW(aSize)); + TRACERET3(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeSize, EF32TraceUidFileSys, nRes, I64LOW(aSize), I64HIGH(aSize)); if(nRes == KErrNone) return nRes; @@ -499,9 +499,9 @@ return nRes; //-- 1. Try mount-specific request first. It won't block this call as CMountCB::VolumeL() can do - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCURRENTFREESPACE, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCurrentFreeSpace, EF32TraceUidFileSys, DriveNumber()); nRes = CurrentMount().GetCurrentFreeSpaceAvailable(aFreeDiskSpace); - OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCURRENTFREESPACERET, "r %d FreeSpace %x:%x", (TUint) nRes, (TUint) I64HIGH(aFreeDiskSpace), (TUint) I64LOW(aFreeDiskSpace)); + TRACERET3(UTF::EBorder, UTraceModuleFileSys::ECMountCBCurrentFreeSpaceRet, EF32TraceUidFileSys, nRes, I64LOW(aFreeDiskSpace), I64HIGH(aFreeDiskSpace)); if(nRes == KErrNone) return nRes; @@ -539,9 +539,9 @@ if(IsWriteProtected()) return(KErrAccessDenied); - OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT2, "drive %d aOperation %d aParam1 %x aParam2 %x", (TUint) DriveNumber(), (TUint) aOperation, (TUint) aParam1, (TUint) aParam2); + TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount2, EF32TraceUidFileSys, DriveNumber(), aOperation, aParam1, aParam2); TRAP(r,CurrentMount().FinaliseMountL(aOperation, aParam1, aParam2)); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT2RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount2Ret, EF32TraceUidFileSys, r); // Pass FinaliseDrive notification down to media driver TInt driveNumber = DriveNumber(); @@ -574,10 +574,9 @@ if(IsWriteProtected()) return(KErrAccessDenied); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT1, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount1, EF32TraceUidFileSys, DriveNumber()); TRAP(r,CurrentMount().FinaliseMountL()); - - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT1RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount1Ret, EF32TraceUidFileSys, r); return r; } @@ -825,7 +824,7 @@ // Check that the sharing rules are obeyed. // { - // Check the correct share modes are passed in + switch (aReqShare) { case EFileShareExclusive: @@ -834,46 +833,47 @@ case EFileShareReadersOrWriters: break; default: - return KErrArgument; + return(KErrArgument); } - - // Check the share mode of the file switch (aFile.iShare) { case EFileShareExclusive: - return KErrInUse; + return(KErrInUse); case EFileShareReadersOnly: case EFileShareAny: if (aReqShare != aFile.iShare && aReqShare != EFileShareReadersOrWriters) - { - return KErrInUse; - } + return(KErrInUse); break; case EFileShareReadersOrWriters: - if (aReqShare == EFileShareExclusive) - { - return KErrInUse; - } + if (aReqShare==EFileShareExclusive) + return(KErrInUse); // - // If the file is currently opened as EFileShareReadersOrWriters then + // If the file is currently open as EFileShareReadersOrWriters then // promote the share to the requested share mode. - // - // If the requested share is EFileShareReadersOnly, verify that no - // other share has the file opened for writing. // + // If the requested share is EFileShareReadersOnly, verfiy that no + // other share has the file open for writing. + // + if (aReqShare == EFileShareReadersOnly) { - TDblQueIter fileShareIter(aFile.FileShareList()); - CFileShare* pFileShare; - while ((pFileShare = fileShareIter++) != NULL) + FileShares->Lock(); + TInt count = FileShares->Count(); + while(count--) { - if(pFileShare->iMode & EFileWrite) + CFileShare* share = (CFileShare*)(*FileShares)[count]; + if (&share->File() == &aFile) { - return KErrInUse; + if(share->iMode & EFileWrite) + { + FileShares->Unlock(); + return KErrInUse; + } } } + FileShares->Unlock(); } break; @@ -881,9 +881,9 @@ Fault(EDrvIllegalShareValue); break; } - - return KErrNone; + return(KErrNone); } + void TDrive::DriveInfo(TDriveInfo& anInfo) // // Get the drive info. @@ -896,9 +896,10 @@ if(iFSys) { - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMDRIVEINFO, "this %x aDriveNumber %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemDriveInfo, EF32TraceUidFileSys, &FSys(), DriveNumber()); FSys().DriveInfo(anInfo,DriveNumber()); - OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMDRIVEINFORET, "type %d driveAtt %x mediaAtt %x", (TUint) anInfo.iType, (TUint) anInfo.iDriveAtt, (TUint) anInfo.iMediaAtt); + TRACE3(UTF::EBorder, UTraceModuleFileSys::ECFileSystemDriveInfoRet, EF32TraceUidFileSys, + anInfo.iType, anInfo.iDriveAtt, anInfo.iMediaAtt); } anInfo.iDriveAtt=Att(); @@ -918,10 +919,12 @@ aVolume.iUniqueID=m.iUniqueID; aVolume.iSize=m.iSize; - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMEL, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeL, EF32TraceUidFileSys, DriveNumber()); TRAP(r,m.VolumeL(aVolume)) - OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMELRETA, "r %d iSize %x:%x iFree %x:%x", (TUint) r, (TUint) I64HIGH(aVolume.iSize), (TUint) I64LOW(aVolume.iSize), (TUint) I64HIGH(aVolume.iFree), (TUint) I64LOW(aVolume.iFree)); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMELRETB, "iUniqueID %x iFileCacheFlags %x", (TUint) aVolume.iUniqueID, (TUint) aVolume.iFileCacheFlags); + TRACE7(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeLRet, EF32TraceUidFileSys, + r, aVolume.iUniqueID, I64LOW(aVolume.iSize), I64HIGH(aVolume.iSize), + I64LOW(aVolume.iFree), I64HIGH(aVolume.iFree), aVolume.iFileCacheFlags); + } return(r); } @@ -935,11 +938,12 @@ __CHECK_DRIVETHREAD(iDriveNumber); aBuf=aName.AllocL(); TPtr volumeName=aBuf->Des(); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETVOLUMEL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_EVOLUMENAME, "VolumeName %S", aName.Ptr(), aName.Length()<<1); - + + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetVolumeL, EF32TraceUidFileSys, DriveNumber(), aName); CurrentMount().SetVolumeL(volumeName); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETVOLUMELRET, "r %d", KErrNone); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetVolumeLRet, EF32TraceUidFileSys, KErrNone); + + delete &CurrentMount().VolumeName(); CurrentMount().SetVolumeName(aBuf); } @@ -974,12 +978,14 @@ return(KErrAccessDenied); TParse newDirName; newDirName.Set(aName,NULL,NULL); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMKDIRL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMKDIRLYS_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1); + + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBMkDirL, EF32TraceUidFileSys, DriveNumber(), aName); TRAP(r,CurrentMount().MkDirL(newDirName.FullName())) - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMKDIRLRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBMkDirLRet, EF32TraceUidFileSys, r); + return(r); } + TInt TDrive::RmDir(const TDesC& aName) // // Remove a directory. @@ -996,10 +1002,11 @@ return(KErrPathNotFound); if ((entry.iAtt&KEntryAttReadOnly) || IsWriteProtected()) return(KErrAccessDenied); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRMDIRL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRMDIRLYS_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1); + + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBRmDirL, EF32TraceUidFileSys, DriveNumber(), aName); TRAP(r,CurrentMount().RmDirL(aName)) - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRMDIRLRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBRmDirLRet, EF32TraceUidFileSys, r); + return(r); } @@ -1020,10 +1027,12 @@ if (IsWriteProtected()) return(KErrAccessDenied); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL1, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL1_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1); + + //-- filesystems' CMountCB::DeleteL() implementations shall check the entry attributes themeselves. + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBDeleteL, EF32TraceUidFileSys, DriveNumber(), aName); TRAP(r,CurrentMount().DeleteL(aName)) - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL1_RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDeleteLRet, EF32TraceUidFileSys, r); + return r; } @@ -1094,11 +1103,11 @@ // remove from closed queue LocateClosedFile(anOldName, EFalse); LocateClosedFile(aNewName, EFalse); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMEL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMELYS_EOLDNAME, "OldName %S", oldEntryName.Ptr(), oldEntryName.Length()<<1); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMELYS_ENEWNAME, "NewName %S", newEntryName.Ptr(), newEntryName.Length()<<1); + + TRACEMULT3(UTF::EBorder, UTraceModuleFileSys::ECMountCBRenameL, EF32TraceUidFileSys, DriveNumber(), oldEntryName,newEntryName); TRAP(r,CurrentMount().RenameL(oldEntryName,newEntryName)) - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMELRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBRenameLRet, EF32TraceUidFileSys, r); + return(r); } @@ -1132,11 +1141,11 @@ // remove from closed queue LocateClosedFile(anOldName, EFalse); LocateClosedFile(aNewName, EFalse); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACEL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACEL_EOLDNAME, "OldName %S", anOldName.Ptr(), anOldName.Length()<<1); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACEL_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1); + + TRACEMULT3(UTF::EBorder, UTraceModuleFileSys::ECMountCBReplaceL, EF32TraceUidFileSys, DriveNumber(), anOldName, aNewName); TRAP(r,CurrentMount().ReplaceL(anOldName,aNewName)) - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACELRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReplaceLRet, EF32TraceUidFileSys, r); + return(r); } @@ -1165,8 +1174,7 @@ // Get entry details // { - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBENTRYL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBENTRYL_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1); + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBEntryL, EF32TraceUidFileSys, DriveNumber(), aName); CurrentMount().EntryL(aName,anEntry); // If the file is already open then read the file attributes directly from the file @@ -1194,7 +1202,11 @@ } - OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBENTRYLRET, "att %x modified %x:%x size %x:%x", (TUint) anEntry.iAtt, (TUint) I64HIGH(anEntry.iModified.Int64()), (TUint) I64LOW(anEntry.iModified.Int64()), (TUint) I64HIGH(anEntry.FileSize()), (TUint) anEntry.FileSize()); + TRACE5(UTF::EBorder, UTraceModuleFileSys::ECMountCBEntryLRet, EF32TraceUidFileSys, + KErrNone, anEntry.iAtt, + I64LOW(anEntry.iModified.Int64()), I64HIGH(anEntry.iModified.Int64()), + anEntry.iSize); + } TInt TDrive::CheckAttributes(TUint& aSetAttMask,TUint& aClearAttMask) @@ -1227,11 +1239,11 @@ TTime nullTime(0); if (aTime!=nullTime) aSetAttMask|=KEntryAttModified; - OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETENTRYL, "drive %d aTime %x:%x aSetAttMask %x aClearAttMask %x", (TUint) DriveNumber(), (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()), (TUint) aSetAttMask, (TUint) aClearAttMask); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETENTRYL_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1); + + TRACEMULT6(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetEntryL, EF32TraceUidFileSys, + DriveNumber(), aName, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()), aSetAttMask, aClearAttMask); TRAP(r,CurrentMount().SetEntryL(entryName,aTime,aSetAttMask,aClearAttMask)) - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETENTRYLRET, "r %d", r); - + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetEntryLRet, EF32TraceUidFileSys, r); // If the file is already open then write the file attributes directly to the file TFileName foldedName; TUint32 nameHash=0; @@ -1373,89 +1385,88 @@ if ((aMode & EDeleteOnClose) && (anOpen!=EFileCreate)) User::Leave(KErrArgument); - CFileCB* pFile=LocateFile(aName); + CFileCB* pF=LocateFile(aName); CFileCache* pFileCache = NULL; - TBool openFile=EFalse; // True if file is being opened for the first time - if (pFile!=NULL) // File is already opened on the drive + TBool openFile=EFalse; + if (pF!=NULL) { - if (pFile->iShare==EFileShareReadersOnly && (aMode&EFileWrite)) + if (pF->iShare==EFileShareReadersOnly && (aMode&EFileWrite)!=0) User::Leave(KErrInUse); if (anOpen==EFileCreate) User::Leave(KErrAlreadyExists); - TInt r=ValidateShare(*pFile,share); + TInt r=ValidateShare(*pF,share); if (r!=KErrNone) User::Leave(r); - if ((r=pFile->Open())!=KErrNone) + if ((r=pF->Open())!=KErrNone) User::Leave(r); - - aFileCB=pFile; - pFileCache = pFile->FileCache(); + aFileCB=pF; + pFileCache = pF->FileCache(); } else { - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFILEL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFileL, EF32TraceUidFileSys, &FSys(), DriveNumber()); + //-- construct CFileCB object, belonging to the corresponding mount - pFile = aFileCB = CurrentMount().NewFileL(); - - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFILELRET, "r %d CFileCB %x", (TUint) r, (TUint) pFile); + pF = aFileCB = CurrentMount().NewFileL(); + + TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFileLRet, EF32TraceUidFileSys, r, pF); TDrive* createdDrive=!aRequest->SubstedDrive() ? this : aRequest->SubstedDrive(); HBufC* fileName = CreateFileNameL(aName); - pFile->InitL(this, createdDrive, fileName); - - pFile->iShare = share; - pFile->SetSequentialMode(aMode & EFileSequential); + pF->InitL(this, createdDrive, fileName); + + + pF->iShare = share; openFile=ETrue; - CurrentMount().iMountQ.AddLast(*pFile); - Files->AddL(pFile,ETrue); - __PRINT1(_L("TDrive::FileOpenL - CFileCB->IsSequentialMode = %d"), pFile->IsSequentialMode()); + CurrentMount().iMountQ.AddLast(*pF); + Files->AddL(pF,ETrue); } - CFileShare* pFileShare=aFileShare=new(ELeave) CFileShare(pFile); + CFileShare* pS=aFileShare=new(ELeave) CFileShare(pF); // We need to call CFileCB::PromoteShare immediately after the CFileShare // instance is created since the destructor calls CFileCB::DemoteShare() // which checks the share count is non-zero - pFileShare->iMode=aMode; - pFile->PromoteShare(pFileShare); - - pFileShare->InitL(); + pS->iMode=aMode; + pF->PromoteShare(pS); + + pS->InitL(); aFileCB=NULL; - FileShares->AddL(pFileShare,ETrue); - aHandle=aRequest->Session()->Handles().AddL(pFileShare,ETrue); + FileShares->AddL(pS,ETrue); + aHandle=aRequest->Session()->Handles().AddL(pS,ETrue); if (openFile) { - OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFILEOPENL, "drive %d aMode %x anOpen %d aFile %x", (TUint) DriveNumber(), (TUint) aMode, (TUint) anOpen, (TUint) pFile); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFILEOPENL_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1); - CurrentMount().FileOpenL(aName,aMode,anOpen,pFile); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFILEOPENLRET, "r %d", KErrNone); + TRACEMULT5(UTF::EBorder, UTraceModuleFileSys::ECMountCBFileOpenL, EF32TraceUidFileSys, DriveNumber(), aName, aMode, (TUint) anOpen, (TUint) pF); + CurrentMount().FileOpenL(aName,aMode,anOpen,pF); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFileOpenLRet, EF32TraceUidFileSys, KErrNone); + // Delete on close may now be safely flagged if required. // The file did not exist on the media prior to the // CMountCB::FileOpenL() call for the case of a create. if ((aMode & EDeleteOnClose) && (anOpen==EFileCreate)) - pFile->SetDeleteOnClose(); - - TBool localBufferSuppport = (CurrentMount().LocalBufferSupport(pFile) == KErrNone)?(TBool)ETrue:(TBool)EFalse; - pFile->SetLocalBufferSupport(localBufferSuppport); + pF->SetDeleteOnClose(); + + TBool localBufferSuppport = (CurrentMount().LocalBufferSupport(pF) == KErrNone)?(TBool)ETrue:(TBool)EFalse; + pF->SetLocalBufferSupport(localBufferSuppport); if (localBufferSuppport) { - // If file exists on closed queue resurrect it or discard it, + // if file exists on closed queue resurrect it or discard it, // depending on the file open mode pFileCache = LocateClosedFile(aName, anOpen == EFileOpen?(TBool)ETrue:(TBool)EFalse); if (pFileCache) { - pFileCache = pFileCache->ReNewL(*pFileShare); // NB may return NULL if caching not enabled + pFileCache = pFileCache->ReNewL(*pS); // NB may return NULL if caching not enabled } else { - pFileCache = CFileCache::NewL(*pFileShare); // NB may return NULL if caching not enabled + pFileCache = CFileCache::NewL(*pS); // NB may return NULL if caching not enabled } if (pFileCache) - // Set the cached size to be the same as the uncached size - pFile->SetCachedSize64(pFile->Size64()); + // set the cached size to be the same as the uncached size + pF->SetCachedSize64(pF->Size64()); } else { @@ -1463,9 +1474,9 @@ } } - // Initialize share mode flags + // initialize share mode flags if (pFileCache != NULL) - pFileCache->Init(*pFileShare); + pFileCache->Init(*pS); } TInt TDrive::FileOpen(CFsRequest* aRequest,TInt& aHandle,const TDesC& aName,TUint aMode,TFileOpen anOpen) @@ -1477,7 +1488,7 @@ CFileCB* pF=NULL; CFileShare* pS=NULL; aHandle=0; - TRAPD(r,FileOpenL(aRequest,aHandle,aName,aMode,anOpen,pF,pS)); + TRAPD(r,FileOpenL(aRequest,aHandle,aName,aMode,anOpen,pF,pS)) // Allow files > 2GB-1 to be opened only if EFileBigFile is specified in iMode if (r == KErrNone && pS && ((TUint64)pS->File().Size64() > KMaxLegacyFileSize) && (!(pS->IsFileModeBig()))) @@ -1502,10 +1513,11 @@ // Open a directory listing. Leave on error. // { - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWDIRL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewDirL, EF32TraceUidFileSys, &FSys(), DriveNumber()); + CDirCB* pD = aDir = CurrentMount().NewDirL(); //-- construct CDirCB object, belonging to the corresponding mount - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWDIRLRET, "r %d CDirCB %x", (TUint) KErrNone, (TUint) pD); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewDirLRet, EF32TraceUidFileSys, KErrNone, pD); pD->InitL(this); // modify resource counter after initialisation to ensure correct cleanup AddResource(CurrentMount()); @@ -1513,10 +1525,10 @@ pD->iUidType=aUidType; Dirs->AddL(pD,ETrue); aHandle=aSession->Handles().AddL(pD,ETrue); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDIROPENL, "drive %d aDir %x", (TUint) DriveNumber(), (TUint) pD); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDIROPENL_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1); + + TRACEMULT3(UTF::EBorder, UTraceModuleFileSys::ECMountCBDirOpenL, EF32TraceUidFileSys, DriveNumber(), aName, (TUint) pD); CurrentMount().DirOpenL(aName,pD); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDIROPENLRET, "r %d", KErrNone); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDirOpenLRet, EF32TraceUidFileSys, KErrNone); } TInt TDrive::DirOpen(CSessionFs* aSession,TInt& aHandle,const TDesC& aName,TUint anAtt,const TUidType& aUidType) @@ -1575,11 +1587,13 @@ if (r!=KErrNone) return(r); TPtrC entryName(StripBackSlash(aName)); + TRACETHREADID(aMessage); - OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREADFILESECTIONL, "drive %d clientThreadId %x aPos %x:%x aLength %d", (TUint) DriveNumber(), (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREADFILESECTIONL_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1); + TRACEMULT7(UTF::EBorder, UTraceModuleFileSys::ECMountCBReadFileSectionL, EF32TraceUidFileSys, + DriveNumber(), aName, I64LOW(aPos), I64HIGH(aPos), (TUint) aTrg, aLength, I64LOW(threadId)); TRAP(r,ReadSectionL(entryName,aPos,aTrg,aLength,aMessage)); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREADFILESECTIONLRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReadFileSectionLRet, EF32TraceUidFileSys, r); + if (r==KErrHidden) r=KErrNotFound; else if (r==KErrPathHidden) @@ -1611,9 +1625,9 @@ TRAP(r,FlushCachedFileInfoL()); if (r==KErrNone) { - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK1, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk1, EF32TraceUidFileSys, DriveNumber()); r=CurrentMount().CheckDisk(); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK1RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk1Ret, EF32TraceUidFileSys, r); } return(r); } @@ -1628,9 +1642,9 @@ TRAP(r,FlushCachedFileInfoL()); if (r==KErrNone) { - OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK2, "drive %d aOperation %d aParam1 %x aParam2 %x", (TUint) DriveNumber(), (TUint) aOperation, (TUint) aParam1, (TUint) aParam2); + TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk2, EF32TraceUidFileSys, DriveNumber(), aOperation, aParam1, aParam2); r=CurrentMount().CheckDisk(aOperation, aParam1, aParam2); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK2RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk2Ret, EF32TraceUidFileSys, r); } return(r); @@ -1652,9 +1666,10 @@ // Empty closed file queue TClosedFileUtils::Remove(DriveNumber()); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE1, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive1, EF32TraceUidFileSys, DriveNumber()); r = CurrentMount().ScanDrive(); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE1RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive1Ret, EF32TraceUidFileSys, r); + return r; } @@ -1678,9 +1693,10 @@ // Empty closed file queue TClosedFileUtils::Remove(DriveNumber()); - OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE2, "drive %d aOperation %d aParam1 %x aParam2 %x", (TUint) DriveNumber(), (TUint) aOperation, (TUint) aParam1, (TUint) aParam2); + TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive2, EF32TraceUidFileSys, DriveNumber(), aOperation, aParam1, aParam2); r = CurrentMount().ScanDrive(aOperation, aParam1, aParam2); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE2RET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive2Ret, EF32TraceUidFileSys, r); + return r; } @@ -1694,11 +1710,11 @@ if (r!=KErrNone) return(r); TPtrC entryName(StripBackSlash(aName)); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL_ELONGNAME, "LongName %S", entryName.Ptr(), entryName.Length()<<1); + + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetShortNameL, EF32TraceUidFileSys, DriveNumber(), entryName); TRAP(r,CurrentMount().GetShortNameL(entryName,aShortName)); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL_ESHORTNAME, "ShortName %S", aShortName.Ptr(), aShortName.Length()<<1); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL_ECMOUNTCBGETSHORTNAMELRET, "r %d", r); + TRACERETMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetShortNameLRet, EF32TraceUidFileSys, r, aShortName); + return(r); } @@ -1711,11 +1727,11 @@ if (r!=KErrNone) return(r); TPtrC entryName(StripBackSlash(aShortName)); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMEL, "drive %d", DriveNumber()); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMEL_ESHORTNAME, "ShortName %S", entryName.Ptr(), entryName.Length()<<1); + + TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetLongNameL, EF32TraceUidFileSys, DriveNumber(), entryName); TRAP(r,CurrentMount().GetLongNameL(entryName,aLongName)); - OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMEL_ELONGNAME, "LongName %S", aLongName.Ptr(), aLongName.Length()<<1); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMELRET, "r %d", r); + TRACERETMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetLongNameLRet, EF32TraceUidFileSys, r, aLongName); + return(r); } @@ -1879,18 +1895,22 @@ return(KErrNotReady); TInt r; CMountCB* pM=NULL; - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL1, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber()); TRAP(r,pM=FSys().NewMountL()); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL1RET, "r %d CMountCB %x", (TUint) r, (TUint) pM); + TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM); if(r!=KErrNone) return(r); pM->SetDrive(this); - OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFORCEREMOUNTDRIVE, "drive %d aMountInfo %x aMountInfoMessageHandle %x aFlags %x", (TUint) DriveNumber(), (TUint) aMountInfo, (TUint) aMountInfoMessageHandle, (TUint) aFlags); + + TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBForceRemountDrive, EF32TraceUidFileSys, + DriveNumber(), aMountInfo, aMountInfoMessageHandle, aFlags); r=pM->ForceRemountDrive(aMountInfo,aMountInfoMessageHandle,aFlags); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFORCEREMOUNTDRIVERET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBForceRemountDriveRet, EF32TraceUidFileSys, r); + pM->Close(); return(r); } + TBool TDrive::IsExtensionMounted(CProxyDriveFactory* aFactory) // // return ETrue if extension mounted on the drive @@ -1903,6 +1923,7 @@ } return(EFalse); } + TInt TDrive::MountExtension(CProxyDriveFactory* aFactory,TBool aIsPrimary) // // Mount an extension @@ -1926,7 +1947,7 @@ if(iFSys==NULL) return(KErrNotReady); TBool extSupported = iFSys->IsExtensionSupported(); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMISEXTENSIONSUPPORTED1, "%x r %d", (TUint) iFSys, (TUint) extSupported); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemIsExtensionSupported, EF32TraceUidFileSys, extSupported); if(!extSupported) return(KErrNotSupported); if(IsExtensionMounted(aFactory)) @@ -2014,16 +2035,17 @@ return(KErrNotReady); TInt r; CMountCB* pM=NULL; - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL2, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber()); TRAP(r,pM=FSys().NewMountL()); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL2RET, "r %d CMountCB %x", (TUint) r, (TUint) pM); + TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM); if(r!=KErrNone) return(r); pM->SetDrive(this); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBLOCK, "drive %d aStore %d", (TUint) DriveNumber(), (TUint) aStore); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECMountCBLock, EF32TraceUidFileSys, DriveNumber(), aStore); r=pM->Lock(aOld,aNew,aStore); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBLOCKRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBLockRet, EF32TraceUidFileSys, r); + pM->Close(); return(r); } @@ -2039,9 +2061,9 @@ return(KErrNotReady); TInt r; CMountCB* pM=NULL; - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL3, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber()); TRAP(r,pM=FSys().NewMountL()); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL3RET, "r %d CMountCB %x", (TUint) r, (TUint) pM); + TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM); if(r!=KErrNone) return(r); @@ -2050,9 +2072,10 @@ pM->SetDrive(this); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBUNLOCK, "drive %d aStore %d", (TUint) DriveNumber(), (TUint) aStore); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECMountCBUnlock, EF32TraceUidFileSys, DriveNumber(), aStore); r=pM->Unlock(aPassword,aStore); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBUNLOCKRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBUnlockRet, EF32TraceUidFileSys, r); + pM->Close(); return(r); } @@ -2068,9 +2091,9 @@ return(KErrNotReady); TInt r; CMountCB* pM=NULL; - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL4, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber()); TRAP(r,pM=FSys().NewMountL()); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL4RET, "r %d CMountCB %x", (TUint) r, (TUint) pM); + TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM); if(r!=KErrNone) return(r); pM->SetDrive(this); @@ -2084,9 +2107,10 @@ if (info.iMediaAtt & KMediaAttLocked) UnlockDevice(aPassword, EFalse); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCLEARPASSWORD, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBClearPassword, EF32TraceUidFileSys, DriveNumber()); r=pM->ClearPassword(aPassword); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCLEARPASSWORDRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBClearPasswordRet, EF32TraceUidFileSys, r); + pM->Close(); return(r); } @@ -2102,16 +2126,17 @@ return(KErrNotReady); TInt r; CMountCB* pM=NULL; - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL5, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber()); TRAP(r,pM=FSys().NewMountL()); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL5RET, "r %d CMountCB %x", (TUint) r, (TUint) pM); + TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM); if(r!=KErrNone) return(r); pM->SetDrive(this); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBERASEPASSWORD, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBErasePassword, EF32TraceUidFileSys, DriveNumber()); r=pM->ErasePassword(); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBERASEPASSWORDRET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBErasePasswordRet, EF32TraceUidFileSys, r); + pM->Close(); return(r); } @@ -2196,9 +2221,8 @@ /** - Gracefully dismounts the current mount. This is method is called from outside, so do some finalisation work on mount. +Dismounts the current mount. This is method is called from outside, so do some finalisation work on mount. After calling this function there is no current mount on the drive. - */ EXPORT_C void TDrive::Dismount() { @@ -2208,12 +2232,10 @@ if (!iCurrentMount) return; - //-- try to do the best flushing file caches TRAP_IGNORE(FlushCachedFileInfoL()); //-- try our best to finalise the mount (the mount can decide to do some job during finalisation, e.g. write some data) - //-- finalise the mount in RO mode, we are dismounting the FS anyway - TRAP_IGNORE(iCurrentMount->FinaliseMountL(RFs::EFinal_RO)); + TRAP_IGNORE(iCurrentMount->FinaliseMountL()); DoDismount(); } @@ -2222,7 +2244,8 @@ /** - Dismounts the current mount by force. +Forcibly dismounts the current mount and prevents it being remounted. +After calling this function there is no current mount on the drive. */ void TDrive::ForceDismount() { @@ -2234,15 +2257,7 @@ return; TRAP_IGNORE(FlushCachedFileInfoL()); - - //-- try our best to finalise the mount (the mount can decide to do some job during finalisation, e.g. write some data) - //-- finalise the mount in RO mode, we are dismounting the FS anyway - TRAP_IGNORE(iCurrentMount->FinaliseMountL(RFs::EFinal_RO)); - - //-- mark the mount as 'Dismounted'; this invalidates all object handles until the mount is successfully "remounted". - //-- if there are still some objects opened on this mount, CMountCB::Close() won't destroy it until all objects are closed. - iCurrentMount->SetDismounted(); - + iCurrentMount->SetDismounted(); //! this affects TDrive::ReMount() DoDismount(); } @@ -2260,9 +2275,10 @@ if (!iCurrentMount) return; - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDISMOUNTED, "drive %d", DriveNumber()); + TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDismounted, EF32TraceUidFileSys, DriveNumber()); iCurrentMount->Dismounted(); - OstTrace0(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDISMOUNTEDRET, ""); + TRACE0(UTF::EBorder, UTraceModuleFileSys::ECMountCBDismountedRet, EF32TraceUidFileSys); + iCurrentMount->Close(); iCurrentMount=NULL; } @@ -2359,6 +2375,7 @@ } + TInt TDrive::ControlIO(const RMessagePtr2& aMessage,TInt aCommand,TAny* aParam1,TAny* aParam2) // // General purpose test interface - .FSY specific. @@ -2368,9 +2385,10 @@ if(r==KErrNone || (r==KErrInUse && iReason==KErrNone)) { TRACETHREADID(aMessage); - OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCONTROLIO, "drive %d aCommand %d aParam1 %x aParam2 %x clientThreadId %x", (TUint) DriveNumber(), (TUint) aCommand, (TUint) aParam1, (TUint) aParam2, (TUint) threadId); + TRACE5(UTF::EBorder, UTraceModuleFileSys::ECMountCBControlIO, EF32TraceUidFileSys, + DriveNumber(), aCommand, aParam1, aParam2, I64LOW(threadId)); r=CurrentMount().ControlIO(aMessage,aCommand,aParam1,aParam2); - OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCONTROLIORET, "r %d", r); + TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBControlIORet, EF32TraceUidFileSys, r); } return(r); } @@ -2587,10 +2605,11 @@ { ASSERT(!(apLDFormatInfo && apVolFormatParam)); //-- these parameters are mutually exclusive - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFORMATL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFormatL, EF32TraceUidFileSys, &FSys(), DriveNumber()); + CFormatCB* pFormat = CurrentMount().NewFormatL(); - OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFORMATLRET, "r %d CFormatCB %x", (TUint) KErrNone, (TUint) pFormat); + TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFormatLRet, EF32TraceUidFileSys, KErrNone, pFormat); Formats->AddL(pFormat, ETrue); pFormat->InitL(this, aFmtMode);