Currently, all reads in HDFS require opening and closing the underlying block/meta filechannels. We could pool these filechannels and save some system calls and other work. Since HDFS read requests can be satisfied by positioned reads and transferTos, we can even share these filechannels between concurrently executing requests.
The attached patch was benchmarked as part of work on HDFS-918 and exhibited a 10% performance increase for small random reads.
This does not affect client logic and involves minimal change to server logic. Patch is based on branch 20-append.