Java 类org.apache.hadoop.hdfs.server.namenode.INodeReference 实例源码

项目:hadoop    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:hadoop    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
private INodeReference loadINodeReference(
    INodeReferenceSection.INodeReference r) throws IOException {
  long referredId = r.getReferredId();
  INode referred = fsDir.getInode(referredId);
  WithCount withCount = (WithCount) referred.getParentReference();
  if (withCount == null) {
    withCount = new INodeReference.WithCount(null, referred);
  }
  final INodeReference ref;
  if (r.hasDstSnapshotId()) { // DstReference
    ref = new INodeReference.DstReference(null, withCount,
        r.getDstSnapshotId());
  } else {
    ref = new INodeReference.WithName(null, withCount, r.getName()
        .toByteArray(), r.getLastSnapshotId());
  }
  return ref;
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the snapshot diff section from fsimage.
 */
public void loadSnapshotDiffSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    SnapshotDiffSection.DiffEntry entry = SnapshotDiffSection.DiffEntry
        .parseDelimitedFrom(in);
    if (entry == null) {
      break;
    }
    long inodeId = entry.getInodeId();
    INode inode = fsDir.getInode(inodeId);
    SnapshotDiffSection.DiffEntry.Type type = entry.getType();
    switch (type) {
    case FILEDIFF:
      loadFileDiffList(in, inode.asFile(), entry.getNumOfDiff());
      break;
    case DIRECTORYDIFF:
      loadDirectoryDiffList(in, inode.asDirectory(), entry.getNumOfDiff(),
          refList);
      break;
    }
  }
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
/**
 * save all the snapshot diff to fsimage
 */
public void serializeSnapshotDiffSection(OutputStream out)
    throws IOException {
  INodeMap inodesMap = fsn.getFSDirectory().getINodeMap();
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  int i = 0;
  Iterator<INodeWithAdditionalFields> iter = inodesMap.getMapIterator();
  while (iter.hasNext()) {
    INodeWithAdditionalFields inode = iter.next();
    if (inode.isFile()) {
      serializeFileDiffList(inode.asFile(), out);
    } else if (inode.isDirectory()) {
      serializeDirDiffList(inode.asDirectory(), refList, out);
    }
    ++i;
    if (i % FSImageFormatProtobuf.Saver.CHECK_CANCEL_INTERVAL == 0) {
      context.checkCancelled();
    }
  }
  parent.commitSection(headers,
      FSImageFormatProtobuf.SectionName.SNAPSHOT_DIFF);
}
项目:aliyun-oss-hadoop-fs    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:aliyun-oss-hadoop-fs    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:aliyun-oss-hadoop-fs    文件:FSImageFormatPBSnapshot.java   
private INodeReference loadINodeReference(
    INodeReferenceSection.INodeReference r) throws IOException {
  long referredId = r.getReferredId();
  INode referred = fsDir.getInode(referredId);
  WithCount withCount = (WithCount) referred.getParentReference();
  if (withCount == null) {
    withCount = new INodeReference.WithCount(null, referred);
  }
  final INodeReference ref;
  if (r.hasDstSnapshotId()) { // DstReference
    ref = new INodeReference.DstReference(null, withCount,
        r.getDstSnapshotId());
  } else {
    ref = new INodeReference.WithName(null, withCount, r.getName()
        .toByteArray(), r.getLastSnapshotId());
  }
  return ref;
}
项目:aliyun-oss-hadoop-fs    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the snapshot diff section from fsimage.
 */
public void loadSnapshotDiffSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    SnapshotDiffSection.DiffEntry entry = SnapshotDiffSection.DiffEntry
        .parseDelimitedFrom(in);
    if (entry == null) {
      break;
    }
    long inodeId = entry.getInodeId();
    INode inode = fsDir.getInode(inodeId);
    SnapshotDiffSection.DiffEntry.Type type = entry.getType();
    switch (type) {
    case FILEDIFF:
      loadFileDiffList(in, inode.asFile(), entry.getNumOfDiff());
      break;
    case DIRECTORYDIFF:
      loadDirectoryDiffList(in, inode.asDirectory(), entry.getNumOfDiff(),
          refList);
      break;
    }
  }
}
项目:aliyun-oss-hadoop-fs    文件:FSImageFormatPBSnapshot.java   
/**
 * save all the snapshot diff to fsimage
 */
public void serializeSnapshotDiffSection(OutputStream out)
    throws IOException {
  INodeMap inodesMap = fsn.getFSDirectory().getINodeMap();
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  int i = 0;
  Iterator<INodeWithAdditionalFields> iter = inodesMap.getMapIterator();
  while (iter.hasNext()) {
    INodeWithAdditionalFields inode = iter.next();
    if (inode.isFile()) {
      serializeFileDiffList(inode.asFile(), out);
    } else if (inode.isDirectory()) {
      serializeDirDiffList(inode.asDirectory(), refList, out);
    }
    ++i;
    if (i % FSImageFormatProtobuf.Saver.CHECK_CANCEL_INTERVAL == 0) {
      context.checkCancelled();
    }
  }
  parent.commitSection(headers,
      FSImageFormatProtobuf.SectionName.SNAPSHOT_DIFF);
}
项目:big-c    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:big-c    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:big-c    文件:FSImageFormatPBSnapshot.java   
private INodeReference loadINodeReference(
    INodeReferenceSection.INodeReference r) throws IOException {
  long referredId = r.getReferredId();
  INode referred = fsDir.getInode(referredId);
  WithCount withCount = (WithCount) referred.getParentReference();
  if (withCount == null) {
    withCount = new INodeReference.WithCount(null, referred);
  }
  final INodeReference ref;
  if (r.hasDstSnapshotId()) { // DstReference
    ref = new INodeReference.DstReference(null, withCount,
        r.getDstSnapshotId());
  } else {
    ref = new INodeReference.WithName(null, withCount, r.getName()
        .toByteArray(), r.getLastSnapshotId());
  }
  return ref;
}
项目:big-c    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the snapshot diff section from fsimage.
 */
public void loadSnapshotDiffSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    SnapshotDiffSection.DiffEntry entry = SnapshotDiffSection.DiffEntry
        .parseDelimitedFrom(in);
    if (entry == null) {
      break;
    }
    long inodeId = entry.getInodeId();
    INode inode = fsDir.getInode(inodeId);
    SnapshotDiffSection.DiffEntry.Type type = entry.getType();
    switch (type) {
    case FILEDIFF:
      loadFileDiffList(in, inode.asFile(), entry.getNumOfDiff());
      break;
    case DIRECTORYDIFF:
      loadDirectoryDiffList(in, inode.asDirectory(), entry.getNumOfDiff(),
          refList);
      break;
    }
  }
}
项目:big-c    文件:FSImageFormatPBSnapshot.java   
/**
 * save all the snapshot diff to fsimage
 */
public void serializeSnapshotDiffSection(OutputStream out)
    throws IOException {
  INodeMap inodesMap = fsn.getFSDirectory().getINodeMap();
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  int i = 0;
  Iterator<INodeWithAdditionalFields> iter = inodesMap.getMapIterator();
  while (iter.hasNext()) {
    INodeWithAdditionalFields inode = iter.next();
    if (inode.isFile()) {
      serializeFileDiffList(inode.asFile(), out);
    } else if (inode.isDirectory()) {
      serializeDirDiffList(inode.asDirectory(), refList, out);
    }
    ++i;
    if (i % FSImageFormatProtobuf.Saver.CHECK_CANCEL_INTERVAL == 0) {
      context.checkCancelled();
    }
  }
  parent.commitSection(headers,
      FSImageFormatProtobuf.SectionName.SNAPSHOT_DIFF);
}
项目:hadoop-2.6.0-cdh5.4.3    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:hadoop-2.6.0-cdh5.4.3    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:hadoop-2.6.0-cdh5.4.3    文件:FSImageFormatPBSnapshot.java   
private INodeReference loadINodeReference(
    INodeReferenceSection.INodeReference r) throws IOException {
  long referredId = r.getReferredId();
  INode referred = fsDir.getInode(referredId);
  WithCount withCount = (WithCount) referred.getParentReference();
  if (withCount == null) {
    withCount = new INodeReference.WithCount(null, referred);
  }
  final INodeReference ref;
  if (r.hasDstSnapshotId()) { // DstReference
    ref = new INodeReference.DstReference(null, withCount,
        r.getDstSnapshotId());
  } else {
    ref = new INodeReference.WithName(null, withCount, r.getName()
        .toByteArray(), r.getLastSnapshotId());
  }
  return ref;
}
项目:hadoop-2.6.0-cdh5.4.3    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the snapshot diff section from fsimage.
 */
public void loadSnapshotDiffSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    SnapshotDiffSection.DiffEntry entry = SnapshotDiffSection.DiffEntry
        .parseDelimitedFrom(in);
    if (entry == null) {
      break;
    }
    long inodeId = entry.getInodeId();
    INode inode = fsDir.getInode(inodeId);
    SnapshotDiffSection.DiffEntry.Type type = entry.getType();
    switch (type) {
    case FILEDIFF:
      loadFileDiffList(in, inode.asFile(), entry.getNumOfDiff());
      break;
    case DIRECTORYDIFF:
      loadDirectoryDiffList(in, inode.asDirectory(), entry.getNumOfDiff(),
          refList);
      break;
    }
  }
}
项目:hadoop-2.6.0-cdh5.4.3    文件:FSImageFormatPBSnapshot.java   
/**
 * save all the snapshot diff to fsimage
 */
public void serializeSnapshotDiffSection(OutputStream out)
    throws IOException {
  INodeMap inodesMap = fsn.getFSDirectory().getINodeMap();
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  int i = 0;
  Iterator<INodeWithAdditionalFields> iter = inodesMap.getMapIterator();
  while (iter.hasNext()) {
    INodeWithAdditionalFields inode = iter.next();
    if (inode.isFile()) {
      serializeFileDiffList(inode.asFile(), out);
    } else if (inode.isDirectory()) {
      serializeDirDiffList(inode.asDirectory(), refList, out);
    }
    ++i;
    if (i % FSImageFormatProtobuf.Saver.CHECK_CANCEL_INTERVAL == 0) {
      context.checkCancelled();
    }
  }
  parent.commitSection(headers,
      FSImageFormatProtobuf.SectionName.SNAPSHOT_DIFF);
}
项目:hadoop-plus    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:hadoop-plus    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:FlexMap    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:FlexMap    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:FlexMap    文件:FSImageFormatPBSnapshot.java   
private INodeReference loadINodeReference(
    INodeReferenceSection.INodeReference r) throws IOException {
  long referredId = r.getReferredId();
  INode referred = fsDir.getInode(referredId);
  WithCount withCount = (WithCount) referred.getParentReference();
  if (withCount == null) {
    withCount = new INodeReference.WithCount(null, referred);
  }
  final INodeReference ref;
  if (r.hasDstSnapshotId()) { // DstReference
    ref = new INodeReference.DstReference(null, withCount,
        r.getDstSnapshotId());
  } else {
    ref = new INodeReference.WithName(null, withCount, r.getName()
        .toByteArray(), r.getLastSnapshotId());
  }
  return ref;
}
项目:FlexMap    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the snapshot diff section from fsimage.
 */
public void loadSnapshotDiffSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    SnapshotDiffSection.DiffEntry entry = SnapshotDiffSection.DiffEntry
        .parseDelimitedFrom(in);
    if (entry == null) {
      break;
    }
    long inodeId = entry.getInodeId();
    INode inode = fsDir.getInode(inodeId);
    SnapshotDiffSection.DiffEntry.Type type = entry.getType();
    switch (type) {
    case FILEDIFF:
      loadFileDiffList(in, inode.asFile(), entry.getNumOfDiff());
      break;
    case DIRECTORYDIFF:
      loadDirectoryDiffList(in, inode.asDirectory(), entry.getNumOfDiff(),
          refList);
      break;
    }
  }
}
项目:FlexMap    文件:FSImageFormatPBSnapshot.java   
/**
 * save all the snapshot diff to fsimage
 */
public void serializeSnapshotDiffSection(OutputStream out)
    throws IOException {
  INodeMap inodesMap = fsn.getFSDirectory().getINodeMap();
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  int i = 0;
  Iterator<INodeWithAdditionalFields> iter = inodesMap.getMapIterator();
  while (iter.hasNext()) {
    INodeWithAdditionalFields inode = iter.next();
    if (inode.isFile()) {
      serializeFileDiffList(inode.asFile(), out);
    } else if (inode.isDirectory()) {
      serializeDirDiffList(inode.asDirectory(), refList, out);
    }
    ++i;
    if (i % FSImageFormatProtobuf.Saver.CHECK_CANCEL_INTERVAL == 0) {
      context.checkCancelled();
    }
  }
  parent.commitSection(headers,
      FSImageFormatProtobuf.SectionName.SNAPSHOT_DIFF);
}
项目:hadoop-TCP    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:hadoop-TCP    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:hardfs    文件:SnapshotFSImageFormat.java   
public void writeINodeReferenceWithCount(
    INodeReference.WithCount withCount, DataOutput out,
    boolean writeUnderConstruction) throws IOException {
  final INode referred = withCount.getReferredINode();
  final long id = withCount.getId();
  final boolean firstReferred = !referenceMap.containsKey(id);
  out.writeBoolean(firstReferred);

  if (firstReferred) {
    FSImageSerialization.saveINode2Image(referred, out,
        writeUnderConstruction, this);
    referenceMap.put(id, withCount);
  } else {
    out.writeLong(id);
  }
}
项目:hardfs    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:hadoop-on-lustre2    文件:SnapshotFSImageFormat.java   
public INodeReference.WithCount loadINodeReferenceWithCount(
    boolean isSnapshotINode, DataInput in, FSImageFormat.Loader loader
    ) throws IOException {
  final boolean firstReferred = in.readBoolean();

  final INodeReference.WithCount withCount;
  if (firstReferred) {
    final INode referred = loader.loadINodeWithLocalName(isSnapshotINode,
        in, true);
    withCount = new INodeReference.WithCount(null, referred);
    referenceMap.put(withCount.getId(), withCount);
  } else {
    final long id = in.readLong();
    withCount = referenceMap.get(id);
  }
  return withCount;
}
项目:hadoop-on-lustre2    文件:FSImageFormatPBSnapshot.java   
private INodeReference loadINodeReference(
    INodeReferenceSection.INodeReference r) throws IOException {
  long referredId = r.getReferredId();
  INode referred = fsDir.getInode(referredId);
  WithCount withCount = (WithCount) referred.getParentReference();
  if (withCount == null) {
    withCount = new INodeReference.WithCount(null, referred);
  }
  final INodeReference ref;
  if (r.hasDstSnapshotId()) { // DstReference
    ref = new INodeReference.DstReference(null, withCount,
        r.getDstSnapshotId());
  } else {
    ref = new INodeReference.WithName(null, withCount, r.getName()
        .toByteArray(), r.getLastSnapshotId());
  }
  return ref;
}
项目:hadoop-on-lustre2    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the snapshot diff section from fsimage.
 */
public void loadSnapshotDiffSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    SnapshotDiffSection.DiffEntry entry = SnapshotDiffSection.DiffEntry
        .parseDelimitedFrom(in);
    if (entry == null) {
      break;
    }
    long inodeId = entry.getInodeId();
    INode inode = fsDir.getInode(inodeId);
    SnapshotDiffSection.DiffEntry.Type type = entry.getType();
    switch (type) {
    case FILEDIFF:
      loadFileDiffList(in, inode.asFile(), entry.getNumOfDiff());
      break;
    case DIRECTORYDIFF:
      loadDirectoryDiffList(in, inode.asDirectory(), entry.getNumOfDiff(),
          refList);
      break;
    }
  }
}
项目:hadoop-on-lustre2    文件:FSImageFormatPBSnapshot.java   
/**
 * save all the snapshot diff to fsimage
 */
public void serializeSnapshotDiffSection(OutputStream out)
    throws IOException {
  INodeMap inodesMap = fsn.getFSDirectory().getINodeMap();
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  int i = 0;
  Iterator<INodeWithAdditionalFields> iter = inodesMap.getMapIterator();
  while (iter.hasNext()) {
    INodeWithAdditionalFields inode = iter.next();
    if (inode.isFile()) {
      serializeFileDiffList(inode.asFile(), out);
    } else if (inode.isDirectory()) {
      serializeDirDiffList(inode.asDirectory(), refList, out);
    }
    ++i;
    if (i % FSImageFormatProtobuf.Saver.CHECK_CANCEL_INTERVAL == 0) {
      context.checkCancelled();
    }
  }
  parent.commitSection(headers,
      FSImageFormatProtobuf.SectionName.SNAPSHOT_DIFF);
}
项目:hadoop    文件:DirectorySnapshottableFeature.java   
/**
 * We just found a deleted WithName node as the source of a rename operation.
 * However, we should include it in our snapshot diff report as rename only
 * if the rename target is also under the same snapshottable directory.
 */
private byte[][] findRenameTargetPath(final INodeDirectory snapshotRoot,
    INodeReference.WithName wn, final int snapshotId) {
  INode inode = wn.getReferredINode();
  final LinkedList<byte[]> ancestors = Lists.newLinkedList();
  while (inode != null) {
    if (inode == snapshotRoot) {
      return ancestors.toArray(new byte[ancestors.size()][]);
    }
    if (inode instanceof INodeReference.WithCount) {
      inode = ((WithCount) inode).getParentRef(snapshotId);
    } else {
      INode parent = inode.getParentReference() != null ? inode
          .getParentReference() : inode.getParent();
      if (parent != null && parent instanceof INodeDirectory) {
        int sid = parent.asDirectory().searchChild(inode);
        if (sid < snapshotId) {
          return null;
        }
      }
      if (!(parent instanceof WithCount)) {
        ancestors.addFirst(inode.getLocalNameBytes());
      }
      inode = parent;
    }
  }
  return null;
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
/**
 * The sequence of the ref node in refList must be strictly the same with
 * the sequence in fsimage
 */
public void loadINodeReferenceSection(InputStream in) throws IOException {
  final List<INodeReference> refList = parent.getLoaderContext()
      .getRefList();
  while (true) {
    INodeReferenceSection.INodeReference e = INodeReferenceSection
        .INodeReference.parseDelimitedFrom(in);
    if (e == null) {
      break;
    }
    INodeReference ref = loadINodeReference(e);
    refList.add(ref);
  }
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
/**
 * Load the deleted list in a DirectoryDiff
 */
private List<INode> loadDeletedList(final List<INodeReference> refList,
    InputStream in, INodeDirectory dir, List<Long> deletedNodes,
    List<Integer> deletedRefNodes)
    throws IOException {
  List<INode> dlist = new ArrayList<INode>(deletedRefNodes.size()
      + deletedNodes.size());
  // load non-reference inodes
  for (long deletedId : deletedNodes) {
    INode deleted = fsDir.getInode(deletedId);
    dlist.add(deleted);
    addToDeletedList(deleted, dir);
  }
  // load reference nodes in the deleted list
  for (int refId : deletedRefNodes) {
    INodeReference deletedRef = refList.get(refId);
    dlist.add(deletedRef);
    addToDeletedList(deletedRef, dir);
  }

  Collections.sort(dlist, new Comparator<INode>() {
    @Override
    public int compare(INode n1, INode n2) {
      return n1.compareTo(n2.getLocalNameBytes());
    }
  });
  return dlist;
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
/**
 * This can only be called after serializing both INode_Dir and SnapshotDiff
 */
public void serializeINodeReferenceSection(OutputStream out)
    throws IOException {
  final List<INodeReference> refList = parent.getSaverContext()
      .getRefList();
  for (INodeReference ref : refList) {
    INodeReferenceSection.INodeReference.Builder rb = buildINodeReference(ref);
    rb.build().writeDelimitedTo(out);
  }
  parent.commitSection(headers, SectionName.INODE_REFERENCE);
}
项目:hadoop    文件:FSImageFormatPBSnapshot.java   
private INodeReferenceSection.INodeReference.Builder buildINodeReference(
    INodeReference ref) throws IOException {
  INodeReferenceSection.INodeReference.Builder rb =
      INodeReferenceSection.INodeReference.newBuilder().
        setReferredId(ref.getId());
  if (ref instanceof WithName) {
    rb.setLastSnapshotId(((WithName) ref).getLastSnapshotId()).setName(
        ByteString.copyFrom(ref.getLocalNameBytes()));
  } else if (ref instanceof DstReference) {
    rb.setDstSnapshotId(ref.getDstSnapshotId());
  }
  return rb;
}