private static long BuildPermissionStatus(INodeAttributes n, FSImageFormatProtobuf.SaverContext.DeduplicationMap <string> stringMap) { long userId = stringMap.GetId(n.GetUserName()); long groupId = stringMap.GetId(n.GetGroupName()); return(((userId & UserGroupStridMask) << UserStridOffset) | ((groupId & UserGroupStridMask ) << GroupStridOffset) | n.GetFsPermissionShort()); }
public virtual void TestDeduplicationMap() { FSImageFormatProtobuf.SaverContext.DeduplicationMap <string> m = FSImageFormatProtobuf.SaverContext.DeduplicationMap .NewMap(); NUnit.Framework.Assert.AreEqual(1, m.GetId("1")); NUnit.Framework.Assert.AreEqual(2, m.GetId("2")); NUnit.Framework.Assert.AreEqual(3, m.GetId("3")); NUnit.Framework.Assert.AreEqual(1, m.GetId("1")); NUnit.Framework.Assert.AreEqual(2, m.GetId("2")); NUnit.Framework.Assert.AreEqual(3, m.GetId("3")); }
private static FsImageProto.INodeSection.AclFeatureProto.Builder BuildAclEntries( AclFeature f, FSImageFormatProtobuf.SaverContext.DeduplicationMap <string> map) { FsImageProto.INodeSection.AclFeatureProto.Builder b = FsImageProto.INodeSection.AclFeatureProto .NewBuilder(); for (int pos = 0; pos < f.GetEntriesSize(); pos++) { e = f.GetEntryAt(pos); int nameId = map.GetId(AclEntryStatusFormat.GetName(e)); int v = ((nameId & AclEntryNameMask) << AclEntryNameOffset) | ((int)(AclEntryStatusFormat .GetType(e)) << AclEntryTypeOffset) | ((int)(AclEntryStatusFormat.GetScope(e)) << AclEntryScopeOffset) | ((int)(AclEntryStatusFormat.GetPermission(e))); b.AddEntries(v); } return(b); }
private static FsImageProto.INodeSection.XAttrFeatureProto.Builder BuildXAttrs(XAttrFeature f, FSImageFormatProtobuf.SaverContext.DeduplicationMap <string> stringMap) { FsImageProto.INodeSection.XAttrFeatureProto.Builder b = FsImageProto.INodeSection.XAttrFeatureProto .NewBuilder(); foreach (XAttr a in f.GetXAttrs()) { FsImageProto.INodeSection.XAttrCompactProto.Builder xAttrCompactBuilder = FsImageProto.INodeSection.XAttrCompactProto .NewBuilder(); int nsOrd = (int)(a.GetNameSpace()); Preconditions.CheckArgument(nsOrd < 8, "Too many namespaces."); int v = ((nsOrd & XattrNamespaceMask) << XattrNamespaceOffset) | ((stringMap.GetId (a.GetName()) & XattrNameMask) << XattrNameOffset); v |= (((nsOrd >> 2) & XattrNamespaceExtMask) << XattrNamespaceExtOffset); xAttrCompactBuilder.SetName(v); if (a.GetValue() != null) { xAttrCompactBuilder.SetValue(PBHelper.GetByteString(a.GetValue())); } b.AddXAttrs(((FsImageProto.INodeSection.XAttrCompactProto)xAttrCompactBuilder.Build ())); } return(b); }