Example #1
0
        internal static bool Detect(Stream stream)
        {
            if (stream.Length < 264)
            {
                return(false);
            }

            stream.Position = 0;
            byte[] superblockData = StreamUtilities.ReadFully(stream, 264);

            SuperBlock superblock = new SuperBlock();

            superblock.ReadFrom(superblockData, 0);

            return(superblock.Magic == SuperBlock.XfsMagic);
        }
Example #2
0
 public AllocationGroupFreeBlockInfo(SuperBlock superBlock)
 {
     SbVersion = superBlock.SbVersion;
     Size      = SbVersion >= 5 ? 92 : 64;
 }
Example #3
0
 public BlockDirectory(SuperBlock sb)
 {
     SuperBlock = sb;
     sb_ok      = true;
 }
Example #4
0
 /// <summary>
 /// https://github.com/torvalds/linux/blob/2a610b8aa8e5bd449ba270e517b0e72295d62c9c/fs/xfs/libxfs/xfs_format.h#L587
 /// </summary>
 private long XFS_FSB_TO_BB(SuperBlock sb, long fsbno)
 {
     return(fsbno << (sb.BlocksizeLog2 - BBSHIFT));
 }
Example #5
0
 /// <summary>
 /// https://github.com/torvalds/linux/blob/2a610b8aa8e5bd449ba270e517b0e72295d62c9c/fs/xfs/libxfs/xfs_format.h#L716
 /// </summary>
 private long XFS_AGF_DADDR(SuperBlock sb)
 {
     return(1 << (sb.SectorSizeLog2 - BBSHIFT));
 }
Example #6
0
 /// <summary>
 /// https://github.com/torvalds/linux/blob/2a610b8aa8e5bd449ba270e517b0e72295d62c9c/fs/xfs/libxfs/xfs_format.h#L829
 /// </summary>
 private long XFS_AGB_TO_DADDR(SuperBlock sb, int agno, int agbno)
 {
     return(XFS_FSB_TO_BB(sb, agno * sb.AgBlocks) + agbno);
 }
Example #7
0
 /// <summary>
 /// https://github.com/torvalds/linux/blob/2a610b8aa8e5bd449ba270e517b0e72295d62c9c/fs/xfs/libxfs/xfs_format.h#L832
 /// </summary>
 private long XFS_AG_DADDR(SuperBlock sb, int agno, long d)
 {
     return(XFS_AGB_TO_DADDR(sb, agno, 0) + d);
 }
 public AllocationGroupInodeBtreeInfo(SuperBlock superBlock)
 {
     SbVersion = superBlock.SbVersion;
     Size      = SbVersion >= 5 ? 334 : 296;
 }
Example #9
0
 public LeafDirectory(SuperBlock sb)
 {
     superblock = sb;
 }
Example #10
0
 public BlockDirectoryDataUnused(SuperBlock sb)
 {
     SuperBlock = sb;
     sb_ok      = true;
 }