diff -r e880629062dd -r e4a7b1cbe40c userlibandfileserver/fileserver/inc/f32file.h --- 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. + 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 };