--- 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;
};