code: public float getProgress() throws IOException {
      long subprogress = 0;    // bytes processed in current split
      if (null != curReader) {
        // idx is always one past the current subsplit's true index.
        subprogress = (long)(curReader.getProgress() * split.getLength(idx - 1));
      }
      return Math.min(1.0f,  (progress + subprogress)/(float)(split.getLength()));
     }
docs: return progress based on the amount of data processed so far.