--- a/userlibandfileserver/fileserver/sfile/sf_file_cache.h Thu Aug 19 11:14:22 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_file_cache.h Tue Aug 31 16:34:26 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,7 @@
TInt DoReadBuffered(CFsMessageRequest& aMsgRequest, TUint aMode, CFsClientMessageRequest*& aNewRequest);
TInt DoWriteBuffered(CFsMessageRequest& aMsgRequest, CFsClientMessageRequest*& aNewRequest, TUint aMode);
- enum TFlushMode {EFlushSingle, EFlushAll};
+ enum TFlushMode {EFlushSingle, EFlushHalf, EFlushAll};
TInt DoFlushDirty(CFsClientMessageRequest*& aNewRequest, CFsRequest* aOldRequest, TFlushMode aFlushMode);
@@ -157,6 +160,11 @@
TBool iFileCacheReadAsync;
CFsClientMessageRequest* iReadAheadRequest;
+#ifdef DOUBLE_BUFFERED_WRITING
+ // sequential append-write detection
+ TInt iSequentialAppends;
+#endif
+
friend class TClosedFileUtils;
friend class TFsFileWriteDirty;
};