Пример #1
0
 /// <exception cref="System.IO.IOException"/>
 private void DumpINodeSection(InputStream @in)
 {
     FsImageProto.INodeSection s = FsImageProto.INodeSection.ParseDelimitedFrom(@in);
     @out.Write("<INodeSection>");
     O("lastInodeId", s.GetLastInodeId());
     for (int i = 0; i < s.GetNumInodes(); ++i)
     {
         FsImageProto.INodeSection.INode p = FsImageProto.INodeSection.INode.ParseDelimitedFrom
                                                 (@in);
         @out.Write("<inode>");
         O("id", p.GetId()).O("type", p.GetType()).O("name", p.GetName().ToStringUtf8());
         if (p.HasFile())
         {
             DumpINodeFile(p.GetFile());
         }
         else
         {
             if (p.HasDirectory())
             {
                 DumpINodeDirectory(p.GetDirectory());
             }
             else
             {
                 if (p.HasSymlink())
                 {
                     DumpINodeSymlink(p.GetSymlink());
                 }
             }
         }
         @out.Write("</inode>\n");
     }
     @out.Write("</INodeSection>\n");
 }
Пример #2
0
        /// <summary>Load the filenames of the directories from the INode section.</summary>
        /// <exception cref="System.IO.IOException"/>
        private void LoadDirectoriesInINodeSection(InputStream @in)
        {
            FsImageProto.INodeSection s = FsImageProto.INodeSection.ParseDelimitedFrom(@in);
            Log.Info("Loading directories in INode section.");
            int numDirs = 0;

            for (int i = 0; i < s.GetNumInodes(); ++i)
            {
                FsImageProto.INodeSection.INode p = FsImageProto.INodeSection.INode.ParseDelimitedFrom
                                                        (@in);
                if (Log.IsDebugEnabled() && i % 10000 == 0)
                {
                    Log.Debug("Scanned {} inodes.", i);
                }
                if (p.HasDirectory())
                {
                    metadataMap.PutDir(p);
                    numDirs++;
                }
            }
            Log.Info("Found {} directories in INode section.", numDirs);
        }
Пример #3
0
 /// <exception cref="System.IO.IOException"/>
 public virtual void PutDir(FsImageProto.INodeSection.INode dir)
 {
     Preconditions.CheckArgument(dir.HasDirectory(), "INode %s (%s) is not a directory."
                                 , dir.GetId(), dir.GetName());
     dirMap.Put(ToBytes(dir.GetId()), ToBytes(dir.GetName().ToStringUtf8()));
 }