Qcdio library: fix lazy poll vector compaction by resetting compaction flag upon compaction completion.
Cmake and qfskrb: implement explicit Heimdal Kerberos flavor, and location of krb5.h include file detection.
Cmake and qfskrb library: move the rest of the kerberos library detection logic into cmake side.
Chunk server: fix record appender assertion. The assertion is incorrect with client threads enabled. Since the assertion accesses chunk manager with no mutex acquired, besides strait assertion failure, it could cause segmentation faults due to races with other threads modifying chunk manager state, and in particular chunk table.
Chunk server: record append state machine: do not attempt to flush data in the case after re-lock in the case if the state is not open. With client threads it is possible that prior append completion changed the append state machine state, and/or discarded pending data. An attempt to re-calculate flush limit with incorrect delta, before flushing, will result in incorrect pending append total calculation,   resulting in [non immediate in the worst case] assertion failure.
Chunk server: fix write append state machine first fwd op flag initialization, presently flag has only effect on trace message log level. Remove extraneous space in client state machine trace message.
Client library: implement get data location variant which returns "block" size and data locations for all "blocks" for the specified file and byte range. The block size is equal to the "chunk block size": for non striped files the chunk block size equal to chunk size, and for the striped files the block size is equal to the chunk size multiplied by the number of data stripes.
Tools: qfs tool use newly implemented get data location method to report files "chunk blocks" locations / placement. Display blocks start positions / offset.
Qfs access: implement "get blocks locations" jni method that reports "chunk blocks" locations, along with the "chunk block" size. The first location slot is always used to pass "chunk block" size, or error code. If the "chunk block size" value in the first slot is negative, then it means the there was an error retrieving the blocks locations.
Kfs access / java shim: implement get blocks location java method, and the corresponding unit test.
Hadoop shim: change getFileBlockLocations to use getBlocksLocation. Ensure that getFileBlockLocations method returns at least one block location, possibly with no hosts/IPs if file exists, as it appears that hadoop always expects at least one block location in the returned array. Remove port numbers from "locations", as it appears that hadoop expects no port numbers, and raises an exception if port numbers are  present. Sort unique host / ips preserving the order. Ensure that the location hints cover entire requested range, or up to the end of file.
Meta server: write pid file if configuration property metaServer.pidFile is not empty.
Chunk server: write pid file if configuration property chunkServer.pidFile is not empty.
Web ui: write pid file if configuration webServer.pidFile is not empty.
Top level make file: build 2.5.1 version of hadoop shim, instead of 2.0x-beta.
Examples: configure meta, chunk, and web ui servers to write pid files, and use pid files to reliably shutdown servers.