diff -r 0ff03867bdb6 -r 39b39e1a406e userlibandfileserver/fileserver/sfile/sf_file_cache.h --- a/userlibandfileserver/fileserver/sfile/sf_file_cache.h Wed Jul 21 14:46:58 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_file_cache.h Thu Jul 22 16:46:39 2010 +0100 @@ -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; };