diff -r 73ea206103e6 -r 43365a9b78a3 userlibandfileserver/fileserver/sfile/sf_file_cache.h --- a/userlibandfileserver/fileserver/sfile/sf_file_cache.h Wed Jun 23 19:44:53 2010 +0300 +++ b/userlibandfileserver/fileserver/sfile/sf_file_cache.h Tue Jul 06 15:50:07 2010 +0300 @@ -28,6 +28,9 @@ //#define _DEBUG_READ_AHEAD +// if writing sequentially, start flushing dirty data when the cache is half full +//#define DOUBLE_BUFFERED_WRITING + NONSHARABLE_CLASS(CFileCache) : public CFsDispatchObject { @@ -75,7 +78,8 @@ TInt DoReadBuffered(CFsMessageRequest& aMsgRequest, TUint aMode, CFsClientMessageRequest*& aNewRequest); TInt DoWriteBuffered(CFsMessageRequest& aMsgRequest, CFsClientMessageRequest*& aNewRequest, TUint aMode); - TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TBool aFlushAll); + enum TFlushMode {EFlushSingle, EFlushHalf, EFlushAll}; + TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TFlushMode aFlushMode); inline TInt SegmentSize() const; @@ -156,6 +160,11 @@ TBool iFileCacheReadAsync; CFsClientMessageRequest* iReadAheadRequest; +#ifdef DOUBLE_BUFFERED_WRITING + // sequential append-write detection + TInt iSequentialAppends; +#endif + friend class TClosedFileUtils; friend class TFsFileWriteDirty; };