public static INodeDirectory LoadINodeDirectory(FsImageProto.INodeSection.INode n , FSImageFormatProtobuf.LoaderContext state) { System.Diagnostics.Debug.Assert(n.GetType() == FsImageProto.INodeSection.INode.Type .Directory); FsImageProto.INodeSection.INodeDirectory d = n.GetDirectory(); PermissionStatus permissions = LoadPermission(d.GetPermission(), state.GetStringTable ()); INodeDirectory dir = new INodeDirectory(n.GetId(), n.GetName().ToByteArray(), permissions , d.GetModificationTime()); long nsQuota = d.GetNsQuota(); long dsQuota = d.GetDsQuota(); if (nsQuota >= 0 || dsQuota >= 0) { dir.AddDirectoryWithQuotaFeature(new DirectoryWithQuotaFeature.Builder().NameSpaceQuota (nsQuota).StorageSpaceQuota(dsQuota).Build()); } EnumCounters <StorageType> typeQuotas = null; if (d.HasTypeQuotas()) { ImmutableList <QuotaByStorageTypeEntry> qes = LoadQuotaByStorageTypeEntries(d.GetTypeQuotas ()); typeQuotas = new EnumCounters <StorageType>(typeof(StorageType), HdfsConstants.QuotaReset ); foreach (QuotaByStorageTypeEntry qe in qes) { if (qe.GetQuota() >= 0 && qe.GetStorageType() != null && qe.GetStorageType().SupportTypeQuota ()) { typeQuotas.Set(qe.GetStorageType(), qe.GetQuota()); } } if (typeQuotas.AnyGreaterOrEqual(0)) { DirectoryWithQuotaFeature q = dir.GetDirectoryWithQuotaFeature(); if (q == null) { dir.AddDirectoryWithQuotaFeature(new DirectoryWithQuotaFeature.Builder().TypeQuotas (typeQuotas).Build()); } else { q.SetQuota(typeQuotas); } } } if (d.HasAcl()) { int[] entries = AclEntryStatusFormat.ToInt(LoadAclEntries(d.GetAcl(), state.GetStringTable ())); dir.AddAclFeature(new AclFeature(entries)); } if (d.HasXAttrs()) { dir.AddXAttrFeature(new XAttrFeature(LoadXAttrs(d.GetXAttrs(), state.GetStringTable ()))); } return(dir); }