code: DatanodeDescriptor[] chooseTarget(FSInodeInfo srcInode,
                                      int numOfReplicas,
                                      DatanodeDescriptor writer,
                                      List<DatanodeDescriptor> chosenNodes,
                                      List<Node> excludesNodes,
                                      long blocksize) {
      return chooseTarget(FSNamesystem.getFullPathName(srcInode), numOfReplicas, writer,
                          chosenNodes, blocksize);
    }
docs: choose <i>numOfReplicas</i> data nodes for <i>writer</i>
  to re-replicate a block with size <i>blocksize</i>
  If not, return as many as we can.
  The base implemenatation extracts the pathname of the file from the
  specified srcInode, but this could be a costly operation depending on the
  file system implementation. Concrete implementations of this class should
  override this method to avoid this overhead.
  
  @param srcInode The inode of the file for which chooseTarget is being invoked.
  @param numOfReplicas additional number of replicas wanted.
  @param writer the writer's machine, null if not in the cluster.
  @param chosenNodes datanodes that have been chosen as targets.
  @param blocksize size of the data to be written.
  @return array of DatanodeDescriptor instances chosen as target
  and sorted as a pipeline.