userlibandfileserver/fileserver/sfile/sf_file.cpp
changeset 247 d8d70de2bd36
parent 201 43365a9b78a3
child 259 57b9594f5772
equal deleted inserted replaced
201:43365a9b78a3 247:d8d70de2bd36
   967 
   967 
   968     ASSERT(aFsOp == EFsFileWrite || aFsOp == EFsFileWriteDirty);
   968     ASSERT(aFsOp == EFsFileWrite || aFsOp == EFsFileWriteDirty);
   969     if(aFsOp == EFsFileWrite)
   969     if(aFsOp == EFsFileWrite)
   970         {//-- this call is originated from explicit file write operation. Set 'Archive' attribute and new file time.
   970         {//-- this call is originated from explicit file write operation. Set 'Archive' attribute and new file time.
   971         aFile->SetArchiveAttribute(); //-- it will also set KEntryAttModified
   971         aFile->SetArchiveAttribute(); //-- it will also set KEntryAttModified
   972         }
       
   973     else
       
   974         {//-- don't touch data and attributes if it is cache flushing dirty data
       
   975         aFile->iAtt |= KEntryAttModified;
       
   976         }
   972         }
   977 
   973 
   978 
   974 
   979 	return KErrNone;
   975 	return KErrNone;
   980 	}
   976 	}
  1585 	if((!(share->IsFileModeBig())) && ((TUint64)size > KMaxLegacyFileSize))
  1581 	if((!(share->IsFileModeBig())) && ((TUint64)size > KMaxLegacyFileSize))
  1586 		return (KErrTooBig);
  1582 		return (KErrTooBig);
  1587 	
  1583 	
  1588 	CFileCB& file=share->File();
  1584 	CFileCB& file=share->File();
  1589 
  1585 
  1590 	// flush the write cache
       
  1591 	CFileCache* fileCache = share->File().FileCache();
       
  1592 	if (fileCache && (r = fileCache->FlushDirty(aRequest)) != CFsRequest::EReqActionComplete)
       
  1593 		return r;
       
  1594 	
       
  1595 	if (size==file.Size64())
  1586 	if (size==file.Size64())
       
  1587 		{
       
  1588 		file.SetCachedSize64(size);	// Ensure the cache size doesn't exceeed the physical size
  1596 		return(KErrNone);
  1589 		return(KErrNone);
       
  1590 		}
  1597 	
  1591 	
  1598 	TBool fileHasGrown = size > file.Size64();
  1592 	TBool fileHasGrown = size > file.Size64();
  1599 	if (fileHasGrown)
  1593 	if (fileHasGrown)
  1600 		{
  1594 		{
  1601 		r = CheckDiskSpace(size - file.Size64(), aRequest);
  1595 		r = CheckDiskSpace(size - file.Size64(), aRequest);