code: @Override
    public BlockLocation[] getFileBlockLocations(FileStatus file, long start,
                                                 long len) throws IOException {
      HarStatus hstatus = getFileHarStatus(file.getPath(), null);
      Path partPath = new Path(archivePath, hstatus.getPartName());
      FileStatus partStatus = fs.getFileStatus(partPath);
  
      // get all part blocks that overlap with the desired file blocks
      BlockLocation[] locations = 
        fs.getFileBlockLocations(partStatus,
                                 hstatus.getStartIndex() + start, len);
  
      return fixBlockLocations(locations, start, len, hstatus.getStartIndex());
    }
docs: Get block locations from the underlying fs and fix their
  offsets and lengths.
  @param file the input filestatus to get block locations
  @param start the start of the desired range in the contained file
  @param len the length of the desired range
  @return block locations for this segment of file
  @throws IOException