public static FsImageProto.INodeSection.INodeDirectory.Builder BuildINodeDirectory (INodeDirectoryAttributes dir, FSImageFormatProtobuf.SaverContext state) { QuotaCounts quota = dir.GetQuotaCounts(); FsImageProto.INodeSection.INodeDirectory.Builder b = FsImageProto.INodeSection.INodeDirectory .NewBuilder().SetModificationTime(dir.GetModificationTime()).SetNsQuota(quota.GetNameSpace ()).SetDsQuota(quota.GetStorageSpace()).SetPermission(BuildPermissionStatus(dir, state.GetStringMap())); if (quota.GetTypeSpaces().AnyGreaterOrEqual(0)) { b.SetTypeQuotas(BuildQuotaByStorageTypeEntries(quota)); } AclFeature f = dir.GetAclFeature(); if (f != null) { b.SetAcl(BuildAclEntries(f, state.GetStringMap())); } XAttrFeature xAttrFeature = dir.GetXAttrFeature(); if (xAttrFeature != null) { b.SetXAttrs(BuildXAttrs(xAttrFeature, state.GetStringMap())); } return(b); }
/// <exception cref="System.IO.IOException"/> private void Save(OutputStream @out, INodeDirectory n) { FsImageProto.INodeSection.INodeDirectory.Builder b = BuildINodeDirectory(n, parent .GetSaverContext()); FsImageProto.INodeSection.INode r = ((FsImageProto.INodeSection.INode)BuildINodeCommon (n).SetType(FsImageProto.INodeSection.INode.Type.Directory).SetDirectory(b).Build ()); r.WriteDelimitedTo(@out); }
/// <summary>save all the snapshottable directories and snapshots to fsimage</summary> /// <exception cref="System.IO.IOException"/> public void SerializeSnapshotSection(OutputStream @out) { SnapshotManager sm = fsn.GetSnapshotManager(); FsImageProto.SnapshotSection.Builder b = FsImageProto.SnapshotSection.NewBuilder( ).SetSnapshotCounter(sm.GetSnapshotCounter()).SetNumSnapshots(sm.GetNumSnapshots ()); INodeDirectory[] snapshottables = sm.GetSnapshottableDirs(); foreach (INodeDirectory sdir in snapshottables) { b.AddSnapshottableDir(sdir.GetId()); } ((FsImageProto.SnapshotSection)b.Build()).WriteDelimitedTo(@out); int i = 0; foreach (INodeDirectory sdir_1 in snapshottables) { foreach (Org.Apache.Hadoop.Hdfs.Server.Namenode.Snapshot.Snapshot s in sdir_1.GetDirectorySnapshottableFeature ().GetSnapshotList()) { Snapshot.Root sroot = s.GetRoot(); FsImageProto.SnapshotSection.Snapshot.Builder sb = FsImageProto.SnapshotSection.Snapshot .NewBuilder().SetSnapshotId(s.GetId()); FsImageProto.INodeSection.INodeDirectory.Builder db = FSImageFormatPBINode.Saver.BuildINodeDirectory (sroot, parent.GetSaverContext()); FsImageProto.INodeSection.INode r = ((FsImageProto.INodeSection.INode)FsImageProto.INodeSection.INode .NewBuilder().SetId(sroot.GetId()).SetType(FsImageProto.INodeSection.INode.Type. Directory).SetName(ByteString.CopyFrom(sroot.GetLocalNameBytes())).SetDirectory( db).Build()); ((FsImageProto.SnapshotSection.Snapshot)sb.SetRoot(r).Build()).WriteDelimitedTo(@out ); i++; if (i % FSImageFormatProtobuf.Saver.CheckCancelInterval == 0) { context.CheckCancelled(); } } } Preconditions.CheckState(i == sm.GetNumSnapshots()); parent.CommitSection(headers, FSImageFormatProtobuf.SectionName.Snapshot); }