Chunk server: do not trust logical chunk file size, load and verify chunk file header, and use chunk size stored in the header with "size" rpc, unless parameter chunkServer.chunkSizeSkipHeaderVerifyFlag set to non zero. The read rpc typically comes after the size rpc, therefore not loading chunk file header should not make any difference in the typical case. The only exception to this rule is chunk files with logical size 0, though such chunk should be extremely rare. The meta server can use size rpc (only with replicated files) to determine the logical file size. This should rarely occur as well and if it does, then reporting invalid chunk size will be impossible to recover from as the logical file size will not be updated until the file is written past logical EOF.
Chunk server: ensure that all open files are closed when stopping disk io queue, in order to ensure no file descriptor "leaks", and that the corresponding host file system can be unmounted.
Common library: implement SetUseNonBlockingIo() buffered log writer method in order to allow to explicitly set non blocking io.
Meta and chunk servers: set non blocking io with buffered log writer. The intention is not to modify the [stderr] file descriptor mode in all other cases, particularly with java, where enabling non blocking mode can result in hard to track down bugs / incompatibility with other code that can use stderr file descriptor.
Client library: chunk reader propagate possible "clear text allowed" flag change with read lease renew.
Client library: fix handling of entries with no replicas in VerifyDataChecksumsFid() method. Make meta server rcp id names consistent.
Tools: implement upservers command in qfs admin.
Test scripts: make recovery test work with the size rpc now loading chunk file headers. Use qfs admin "upservers" to wait for all (both) chunk servers to connect to the meta server before starting the test.