Пример #1
0
            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());
            }
Пример #2
0
 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"));
 }
Пример #3
0
 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);
 }
Пример #4
0
 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);
 }