@Override
    public void storeFile(final HRegionFileSystem region, final Path familyDir,
      final StoreFileInfo storeFile) throws IOException {
      Path referenceFile = new Path(familyDir, storeFile.getPath().getName());
      boolean success = true;
      if (storeFile.isReference()) {
        // write the Reference object to the snapshot
        storeFile.getReference().write(workingDirFs, referenceFile);
      } else {
        // create "reference" to this store file. It is intentionally an empty file -- all
        // necessary information is captured by its fs location and filename. This allows us to
        // only figure out what needs to be done via a single nn operation (instead of having to
        // open and read the files as well).
        success = workingDirFs.createNewFile(referenceFile);
      }
      if (!success) {
        throw new IOException("Failed to create reference file:" + referenceFile);
      }
    }
DO NOT USE DIRECTLY. USE {@link SnapshotManifest}. Snapshot v1 layout format - Each region in the
table is represented by a directory with the .hregioninfo file
/snapshotName/regionName/.hregioninfo - Each file present in the table is represented by an empty
file /snapshotName/regionName/familyName/fileName
hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotManifestV1.java