userlibandfileserver/fileserver/inc/f32file.h
changeset 132 e4a7b1cbe40c
parent 90 947f0dc9f7a8
child 189 a5496987b1da
--- a/userlibandfileserver/fileserver/inc/f32file.h	Wed May 05 05:11:16 2010 +0100
+++ b/userlibandfileserver/fileserver/inc/f32file.h	Mon May 10 11:40:53 2010 +0100
@@ -680,6 +680,15 @@
     ETrue value means that the drive is finalised
     */
     EIsDriveFinalised,
+    
+    /**
+    Query the volume to ascertain whether File system extensions
+    are supported on this volume.
+    A boolean value is returned within the buffer defined as TPckgBuf<TBool>. 
+    ETrue value means that extensions are supported.
+    EFalse means they are not supported.
+     */
+    EFSysExtensionsSupported,
 	};
 
 /**
@@ -699,27 +708,28 @@
 	{
 public:
 	/**
-	The size of a block in bytes.
-	
-	Reads and writes that are aligned on block boundaries are up to twice as fast as when 
-	mis-aligned.	
-	
-	Read and write operations on certain underlying media is done in blocks.
-	A write operation that modifies only part of a block is less efficient, in general, than
-	one that modifies an entire block. Data throughput degrades linearly for reads and writes in smaller
-	sized units. 
+	The size of a media block in bytes. This is a physical property of a media and returned by the corresponding media driver.
+	This value is usually at least 512 bytes and always a power of 2. For some media types the meaning of this value is 
+    "the min. size of the aligned data buffer which write onto the media doesn't lead to read-modify-write operation."
+    Therefore, reads and writes that are aligned on block boundaries and with lenght of a multiple block size can be much faster.	
+	Read and write operations on certain underlying media is done in blocks. A write operation that modifies only part of a block is less efficient, 
+    in general, than one that modifies an entire block. Data throughput degrades linearly for reads and writes in smaller sized units. 
 	*/
 	TInt iBlockSize;
+	
 	/**
-	The size in bytes of a single disk cluster.
-	
-	Read and write operations that are aligned on cluster boundaries are more efficient.
-	
-	The file system organises and allocates the file data on the disk in clusters where each cluster is
-	one or more blocks. Files that are not zero length occupy at least one cluster of the disk, 
-	so large numbers of very small files use up more disk space than expected. 
+	The size in bytes of a single file system cluster. This is a logical property of the file system. 
+	The file system organises and allocates the data on the disk in clusters where each cluster usually consists of one or more blocks. 
+    Cluster is a minimal unit that the file system allocates on the volume. Thus, a file of 1 byte length occupies 1 cluster.
+
+	Read and write operations that are aligned on cluster boundaries are more efficient from the file system point of view.
+    In some circumstances cluster size can be less than a block size, but it is very inefficient.
+
+    This value is reported by a file system. The value less than 0 indicates a error.
 	*/
 	TInt iClusterSize;
+
+
 	/**
 	The recommended buffer size for optimised reading performance. 
 	
@@ -754,7 +764,7 @@
 
     /** 
     The maximum file size that is supported by the file system mounted on this volume. 
-    Not all file system may provide this parameter;  The value KMaxTUint64 (0xffffffffffffffff) means that this particular file system hasn't 
+    Not all file system may report this parameter;  The value KMaxTUint64 (0xffffffffffffffff) means that this particular file system hasn't 
     provided this information.
     */
     TUint64 iMaxSupportedFileSize;
@@ -1140,7 +1150,32 @@
 	@internalTechnology
 	
 	*/
-	EFileBigFile        =0x00040000
+	EFileBigFile        =0x00040000,
+	
+	/**
+	Using this flag implies that the client is making large sequential reads and/or writes
+	and it is interested in maximising the performance of the large reads and/or writes.
+	
+	The flag gives a hint to the file server and filesystem to adjust to a streaming
+	data pattern and try their best to make it optimal.
+	
+	Some conditions apply:
+	- This does not guarantee that the performance of read/write operations will increase.
+	- Using this flag for other purposes other than data streaming may lead to performance degradation.
+	- This may sacrifice user data integrity for the sake of performance.
+	
+	If a file is opened by Client A with EFileSequential, and the file is then opened
+	without EFileSequential by Client B, then this file mode will be disabled.
+	When the file handle is closed by Client B, then the EFileSequential file mode
+	will be enabled again.
+	Therefore, this mode will only be enabled if all clients set the file as such,
+	otherwise the file mode will be disabled.
+	
+	FAT file system specific information:
+	This flag improves write and file expansion performance whilst decreasing robustness
+	on a "Rugged-FAT" file system, which is applicable to internal non-removable drives.
+	*/
+	EFileSequential		=0x00080000
 
 	};