rossi.fstools.fs.ext2fs
Class Ext2SuperBlock

java.lang.Object
  extended byrossi.fstools.fs.ext2fs.Ext2SuperBlock
All Implemented Interfaces:
DiskStructure, SuperBlock

public class Ext2SuperBlock
extends java.lang.Object
implements SuperBlock

Representation of ext2/3 superblock.

  On disk the superblock looks like this:

        31        24        16       8       0
        --------------------------------------
  0000  |        Inode Count                 |
        --------------------------------------
  0004  |        Blocks Count                |
        --------------------------------------
  0008  |        Reserved Blocks Count       |
        --------------------------------------
  000C  |        Free Blocks Count           |
        --------------------------------------
  0010  |        Free Inode Count            |
        --------------------------------------
  0014  |        First Data Block            |
        --------------------------------------
  0018  |        Block Size                  |
        --------------------------------------
  001C  |        Fragment Size               |
        --------------------------------------
  0020  |        Blocks Per Group            |
        --------------------------------------
  0024  |        Fragments Per Group         |
        --------------------------------------
  0028  |        Inodes Per Group            |
        --------------------------------------
  002C  |        Mount time                  |
        --------------------------------------
  0030  |        Write Time                  |
        --------------------------------------
  0034  | Mount Count    |  Max Mount Count  |
        --------------------------------------
  0038  | Magic          |  State            |
        --------------------------------------
  003C  | Errors         |  Minor Rev        |
        --------------------------------------
  0040  |        Last Check                  |
        --------------------------------------
  0044  |        Check Interval              |
        --------------------------------------
  0048  |        Creator OS                  |
        --------------------------------------
  004C  |        Revision Level              | 
        --------------------------------------
  0050  | Rsrvd UID      |  Rsrvd GID        |  
        --------------------------------------
  0054  | Fisrt Inode    |  Inode Size       |  For EXT2_DYNAMIC_REV only from here
        --------------------------------------
  0058  |     Block Group Number of this SB  |  
        --------------------------------------
  005C  |     Feature Compatible             |  
        --------------------------------------
  0060` |     Feature Incompatible           |  
        --------------------------------------
  0064  |     Feature RO Compatible          |  
        --------------------------------------
  0068  |       Volume UUID                  |  
        --------------------------------------
  006C  |       Volume UUID                  |  
        --------------------------------------
  0070  |       Volume UUID                  |  
        --------------------------------------
  0074  |       Volume UUID                  |  
        --------------------------------------
  0078  |       Volume name                  |  
        --------------------------------------
  007C  |       Volume name                  |  
        --------------------------------------
  0080  |       Volume name                  |  
        --------------------------------------
  0084  |       Volume name                  |  
        --------------------------------------
  0088  |       Last mounted dir             |  
        --------------------------------------
                      :
        --------------------------------------
  00C4  |       Last mounted dir             |  
        --------------------------------------
  00C8  |       Algorithm Usage bitmap       |  
        --------------------------------------
  00CC  | pre blk|pre dir|    Padding        |  
        --------------------------------------
  00D0  |       Journal UUID                 |  
        --------------------------------------
                      :
        --------------------------------------
  00DC  |        Journal UUID                |
        --------------------------------------
  00E0  |        Journal Inode               |
        --------------------------------------
  00E4  |        Journal Device              |
        --------------------------------------
  00E8  |        Last Orphan                 |
        --------------------------------------
  00EC  |        Hash Seed                   |
        --------------------------------------
                      :
        --------------------------------------
  00F8  |        Hash Seed                   |
        --------------------------------------
  00FC  | HashVer|HashChar|	 Hash Word       |
        --------------------------------------
  0100  |     Default Mount Options          |
        --------------------------------------
  0104  |     First meta block               |
        --------------------------------------
  0108  |       Padding                      |
        --------------------------------------
                      :
        --------------------------------------
  03FC  |       Padding                      |
        --------------------------------------

 


Field Summary
protected  long algorithmUsageBitmap
           
protected  long blockCount
           
protected  long blocksPerGroup
           
protected  long checkInterval
           
protected  long creatorOS
           
protected  byte defaultHashVersion
           
protected  long defaultMountOptions
           
protected  int defaultResGID
           
protected  int defaultResUID
           
protected  int errors
           
static int EXT2_DYNAMIC_REV
           
static int EXT2_FEATURE_COMPAT_DIR_INDEX
           
static int EXT2_FEATURE_COMPAT_DIR_PREALLOC
           
static int EXT2_FEATURE_COMPAT_EXT_ATTR
           
static int EXT2_FEATURE_COMPAT_HAS_JOURNAL
           
static int EXT2_FEATURE_COMPAT_IMAGIC_INODES
           
static int EXT2_FEATURE_COMPAT_RESIZE_INODE
           
static int EXT2_FEATURE_INCOMPAT_COMPRESSION
           
static int EXT2_FEATURE_INCOMPAT_FILETYPE
           
static int EXT2_FEATURE_INCOMPAT_JOURNAL_DEV
           
static int EXT2_FEATURE_INCOMPAT_META_BG
           
static int EXT2_FEATURE_INCOMPAT_RECOVER
           
static int EXT2_FEATURE_RO_COMPAT_BTREE_DIR
           
static int EXT2_FEATURE_RO_COMPAT_LARGE_FILE
           
static int EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER
           
static int EXT2_GOOD_OLD_INODE_SIZE
           
static int EXT2_GOOD_OLD_REV
           
static int EXT2_MAX_BLOCK_SIZE
           
static int EXT2_MAX_SUPPORTED_REV
           
static int EXT2_MIN_BLOCK_SIZE
           
static int EXT2_SUPER_MAGIC
           
protected  long featureCompat
           
protected  long featureInCompat
           
protected  long featureROCompat
           
protected  long firstDataBlock
           
protected  long firstInode
           
protected  long firstMetaBlockGroup
           
protected  long fragsPerGroup
           
protected  long freeBlocks
           
protected  long freeInodes
           
protected  int groupNumber
           
protected  int[] hashSeed
           
protected  long inodeCount
           
protected  int inodeSize
           
protected  long inodesPerGroup
           
protected  long journalDev
           
protected  long journalInode
           
protected  byte[] journalUniqueID
           
protected  byte[] label
           
protected  long lastCheck
           
protected  byte[] lastMountPoint
           
protected  long lastOrphan
           
protected  long logBlockSize
           
protected  long logFragSize
           
protected  int magic
           
protected  int maxMountCount
           
protected  int minorRevLevel
           
protected  int mountCount
           
protected  long mountTime
           
protected  byte preallocBlocks
           
protected  byte preallocDirBlocks
           
protected  long reservedBlockCount
           
protected  byte reservedCharPad
           
protected  int reservedWordPad
           
protected  long revLevel
           
protected  int state
           
protected  byte[] uniqueID
           
protected  long writeTime
           
 
Constructor Summary
Ext2SuperBlock()
           
 
Method Summary
 long getAlgorithmUsageBitmap()
           
 long getBlockCount()
           
 long getBlockSize()
          Gets the block size in bytes
 long getBlocksPerGroup()
           
 long getCheckInterval()
           
 long getCreatorOS()
           
 int getDataSize()
          Get the size in bytes of the structure.
 byte getDefaultHashVersion()
           
 long getDefaultMountOptions()
           
 int getDefaultResGID()
           
 int getDefaultResUID()
           
 int getErrors()
           
 long getFeatureCompat()
           
 long getFeatureInCompat()
           
 long getFeatureROCompat()
           
 long getFirstDataBlock()
           
 long getFirstInode()
           
 long getFirstMetaBlockGroup()
           
 long getFragSize()
          Gets the frag size in bytes
 long getFragsPerGroup()
           
 long getFreeBlocks()
           
 long getFreeInodes()
           
 int getGroupNumber()
           
 int[] getHashSeed()
           
 long getInodeCount()
           
 int getInodeSize()
          Get the size of an Inode.
 long getInodesPerGroup()
           
 long getJournalDev()
           
 long getJournalInode()
           
 byte[] getJournalUniqueID()
           
 byte[] getLabel()
           
 long getLastCheck()
           
 byte[] getLastMountPoint()
           
 long getLastOrphan()
           
 long getLogBlockSize()
           
 long getLogFragSize()
           
 int getMagic()
           
 int getMaxMountCount()
           
 int getMinorRevLevel()
           
 int getMountCount()
           
 long getMountTime()
           
 byte getPreallocBlocks()
           
 byte getPreallocDirBlocks()
           
 long getReservedBlockCount()
           
 byte getReservedCharPad()
           
 int getReservedWordPad()
           
 long getRevLevel()
           
 int getState()
           
 byte[] getUniqueID()
           
 long getWriteTime()
           
 void loadFromBuffer(byte[] buffer, int offset)
          Load from a buffer containint the superblock.
 void setAlgorithmUsageBitmap(long aAlgorithmUsageBitmap)
           
 void setBlockCount(long aBlockCount)
           
 void setBlocksPerGroup(long aBlocksPerGroup)
           
 void setCheckInterval(long aCheckInterval)
           
 void setCreatorOS(long aCreatorOS)
           
 void setDefaultHashVersion(byte aDefaultHashVersion)
           
 void setDefaultMountOptions(long aDefaultMountOptions)
           
 void setDefaultResGID(int aDefaultResGID)
           
 void setDefaultResUID(int aDefaultResUID)
           
 void setErrors(int aErrors)
           
 void setFeatureCompat(long aFeatureCompat)
           
 void setFeatureInCompat(long aFeatureInCompat)
           
 void setFeatureROCompat(long aFeatureROCompat)
           
 void setFirstDataBlock(long aFirstDataBlock)
           
 void setFirstInode(long aFirstInode)
           
 void setFirstMetaBlockGroup(long aFirstMetaBlockGroup)
           
 void setFragsPerGroup(long aFragsPerGroup)
           
 void setFreeBlocks(long aFreeBlocks)
           
 void setFreeInodes(long aFreeInodes)
           
 void setGroupNumber(int aGroupNumber)
           
 void setHashSeed(int[] aHashSeed)
           
 void setInodeCount(long aInodeCount)
           
 void setInodeSize(int aInodeSize)
           
 void setInodesPerGroup(long aInodesPerGroup)
           
 void setJournalDev(long aJournalDev)
           
 void setJournalInode(long aJournalInode)
           
 void setJournalUniqueID(byte[] aJournalUniqueID)
           
 void setLabel(byte[] aLabel)
           
 void setLastCheck(long aLastCheck)
           
 void setLastMountPoint(byte[] aLastMountPoint)
           
 void setLastOrphan(long aLastOrphan)
           
 void setLogBlockSize(long aLogBlockSize)
           
 void setLogFragSize(long aLogFragSize)
           
 void setMagic(int aMagic)
           
 void setMaxMountCount(int aMaxMountCount)
           
 void setMinorRevLevel(int aMinorRevLevel)
           
 void setMountCount(int aMountCount)
           
 void setMountTime(long aMountTime)
           
 void setPreallocBlocks(byte aPreallocBlocks)
           
 void setPreallocDirBlocks(byte aPreallocDirBlocks)
           
 void setReservedBlockCount(long aReservedBlockCount)
           
 void setReservedCharPad(byte aReservedCharPad)
           
 void setReservedWordPad(int aReservedWordPad)
           
 void setRevLevel(long aRevLevel)
           
 void setState(int aState)
           
 void setUniqueID(byte[] aUniqueID)
           
 void setWriteTime(long aWriteTime)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

inodeCount

protected long inodeCount

blockCount

protected long blockCount

reservedBlockCount

protected long reservedBlockCount

freeBlocks

protected long freeBlocks

freeInodes

protected long freeInodes

firstDataBlock

protected long firstDataBlock

logBlockSize

protected long logBlockSize

logFragSize

protected long logFragSize

blocksPerGroup

protected long blocksPerGroup

fragsPerGroup

protected long fragsPerGroup

inodesPerGroup

protected long inodesPerGroup

mountTime

protected long mountTime

writeTime

protected long writeTime

mountCount

protected int mountCount

maxMountCount

protected int maxMountCount

magic

protected int magic

state

protected int state

errors

protected int errors

minorRevLevel

protected int minorRevLevel

lastCheck

protected long lastCheck

checkInterval

protected long checkInterval

creatorOS

protected long creatorOS

revLevel

protected long revLevel

defaultResUID

protected int defaultResUID

defaultResGID

protected int defaultResGID

firstInode

protected long firstInode

inodeSize

protected int inodeSize

groupNumber

protected int groupNumber

featureCompat

protected long featureCompat

featureInCompat

protected long featureInCompat

featureROCompat

protected long featureROCompat

uniqueID

protected byte[] uniqueID

label

protected byte[] label

lastMountPoint

protected byte[] lastMountPoint

algorithmUsageBitmap

protected long algorithmUsageBitmap

preallocBlocks

protected byte preallocBlocks

preallocDirBlocks

protected byte preallocDirBlocks

journalUniqueID

protected byte[] journalUniqueID

journalInode

protected long journalInode

journalDev

protected long journalDev

lastOrphan

protected long lastOrphan

hashSeed

protected int[] hashSeed

defaultHashVersion

protected byte defaultHashVersion

reservedCharPad

protected byte reservedCharPad

reservedWordPad

protected int reservedWordPad

defaultMountOptions

protected long defaultMountOptions

firstMetaBlockGroup

protected long firstMetaBlockGroup

EXT2_GOOD_OLD_REV

public static final int EXT2_GOOD_OLD_REV
See Also:
Constant Field Values

EXT2_DYNAMIC_REV

public static final int EXT2_DYNAMIC_REV
See Also:
Constant Field Values

EXT2_GOOD_OLD_INODE_SIZE

public static final int EXT2_GOOD_OLD_INODE_SIZE
See Also:
Constant Field Values

EXT2_MAX_SUPPORTED_REV

public static final int EXT2_MAX_SUPPORTED_REV
See Also:
Constant Field Values

EXT2_FEATURE_COMPAT_DIR_PREALLOC

public static final int EXT2_FEATURE_COMPAT_DIR_PREALLOC
See Also:
Constant Field Values

EXT2_FEATURE_COMPAT_IMAGIC_INODES

public static final int EXT2_FEATURE_COMPAT_IMAGIC_INODES
See Also:
Constant Field Values

EXT2_FEATURE_COMPAT_HAS_JOURNAL

public static final int EXT2_FEATURE_COMPAT_HAS_JOURNAL
See Also:
Constant Field Values

EXT2_FEATURE_COMPAT_EXT_ATTR

public static final int EXT2_FEATURE_COMPAT_EXT_ATTR
See Also:
Constant Field Values

EXT2_FEATURE_COMPAT_RESIZE_INODE

public static final int EXT2_FEATURE_COMPAT_RESIZE_INODE
See Also:
Constant Field Values

EXT2_FEATURE_COMPAT_DIR_INDEX

public static final int EXT2_FEATURE_COMPAT_DIR_INDEX
See Also:
Constant Field Values

EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER

public static final int EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER
See Also:
Constant Field Values

EXT2_FEATURE_RO_COMPAT_LARGE_FILE

public static final int EXT2_FEATURE_RO_COMPAT_LARGE_FILE
See Also:
Constant Field Values

EXT2_FEATURE_RO_COMPAT_BTREE_DIR

public static final int EXT2_FEATURE_RO_COMPAT_BTREE_DIR
See Also:
Constant Field Values

EXT2_FEATURE_INCOMPAT_COMPRESSION

public static final int EXT2_FEATURE_INCOMPAT_COMPRESSION
See Also:
Constant Field Values

EXT2_FEATURE_INCOMPAT_FILETYPE

public static final int EXT2_FEATURE_INCOMPAT_FILETYPE
See Also:
Constant Field Values

EXT2_FEATURE_INCOMPAT_RECOVER

public static final int EXT2_FEATURE_INCOMPAT_RECOVER
See Also:
Constant Field Values

EXT2_FEATURE_INCOMPAT_JOURNAL_DEV

public static final int EXT2_FEATURE_INCOMPAT_JOURNAL_DEV
See Also:
Constant Field Values

EXT2_FEATURE_INCOMPAT_META_BG

public static final int EXT2_FEATURE_INCOMPAT_META_BG
See Also:
Constant Field Values

EXT2_SUPER_MAGIC

public static final int EXT2_SUPER_MAGIC
See Also:
Constant Field Values

EXT2_MIN_BLOCK_SIZE

public static final int EXT2_MIN_BLOCK_SIZE
See Also:
Constant Field Values

EXT2_MAX_BLOCK_SIZE

public static final int EXT2_MAX_BLOCK_SIZE
See Also:
Constant Field Values
Constructor Detail

Ext2SuperBlock

public Ext2SuperBlock()
Method Detail

getDataSize

public int getDataSize()
Description copied from interface: DiskStructure
Get the size in bytes of the structure. For variable length sturctures this may represent the minimum length rather than the actual length.

Specified by:
getDataSize in interface DiskStructure
Returns:
the size of the structure.

getInodeCount

public long getInodeCount()

setInodeCount

public void setInodeCount(long aInodeCount)

getBlockCount

public long getBlockCount()

setBlockCount

public void setBlockCount(long aBlockCount)

getReservedBlockCount

public long getReservedBlockCount()

setReservedBlockCount

public void setReservedBlockCount(long aReservedBlockCount)

getFreeBlocks

public long getFreeBlocks()

setFreeBlocks

public void setFreeBlocks(long aFreeBlocks)

getFreeInodes

public long getFreeInodes()

setFreeInodes

public void setFreeInodes(long aFreeInodes)

getFirstDataBlock

public long getFirstDataBlock()

setFirstDataBlock

public void setFirstDataBlock(long aFirstDataBlock)

getLogBlockSize

public long getLogBlockSize()

setLogBlockSize

public void setLogBlockSize(long aLogBlockSize)

getBlockSize

public long getBlockSize()
Gets the block size in bytes


getLogFragSize

public long getLogFragSize()

setLogFragSize

public void setLogFragSize(long aLogFragSize)

getFragSize

public long getFragSize()
Gets the frag size in bytes


getBlocksPerGroup

public long getBlocksPerGroup()

setBlocksPerGroup

public void setBlocksPerGroup(long aBlocksPerGroup)

getFragsPerGroup

public long getFragsPerGroup()

setFragsPerGroup

public void setFragsPerGroup(long aFragsPerGroup)

getInodesPerGroup

public long getInodesPerGroup()

setInodesPerGroup

public void setInodesPerGroup(long aInodesPerGroup)

getMountTime

public long getMountTime()

setMountTime

public void setMountTime(long aMountTime)

getWriteTime

public long getWriteTime()

setWriteTime

public void setWriteTime(long aWriteTime)

getMountCount

public int getMountCount()

setMountCount

public void setMountCount(int aMountCount)

getMaxMountCount

public int getMaxMountCount()

setMaxMountCount

public void setMaxMountCount(int aMaxMountCount)

getMagic

public int getMagic()

setMagic

public void setMagic(int aMagic)

getState

public int getState()

setState

public void setState(int aState)

getErrors

public int getErrors()

setErrors

public void setErrors(int aErrors)

getMinorRevLevel

public int getMinorRevLevel()

setMinorRevLevel

public void setMinorRevLevel(int aMinorRevLevel)

getLastCheck

public long getLastCheck()

setLastCheck

public void setLastCheck(long aLastCheck)

getCheckInterval

public long getCheckInterval()

setCheckInterval

public void setCheckInterval(long aCheckInterval)

getCreatorOS

public long getCreatorOS()

setCreatorOS

public void setCreatorOS(long aCreatorOS)

getRevLevel

public long getRevLevel()

setRevLevel

public void setRevLevel(long aRevLevel)

getDefaultResUID

public int getDefaultResUID()

setDefaultResUID

public void setDefaultResUID(int aDefaultResUID)

getDefaultResGID

public int getDefaultResGID()

setDefaultResGID

public void setDefaultResGID(int aDefaultResGID)

getFirstInode

public long getFirstInode()

setFirstInode

public void setFirstInode(long aFirstInode)

getInodeSize

public int getInodeSize()
Get the size of an Inode. Typically this is 128 bytes, but in theory it can be some other size.


setInodeSize

public void setInodeSize(int aInodeSize)

getGroupNumber

public int getGroupNumber()

setGroupNumber

public void setGroupNumber(int aGroupNumber)

getFeatureCompat

public long getFeatureCompat()

setFeatureCompat

public void setFeatureCompat(long aFeatureCompat)

getFeatureInCompat

public long getFeatureInCompat()

setFeatureInCompat

public void setFeatureInCompat(long aFeatureInCompat)

getFeatureROCompat

public long getFeatureROCompat()

setFeatureROCompat

public void setFeatureROCompat(long aFeatureROCompat)

getUniqueID

public byte[] getUniqueID()

setUniqueID

public void setUniqueID(byte[] aUniqueID)

getLabel

public byte[] getLabel()

setLabel

public void setLabel(byte[] aLabel)

getLastMountPoint

public byte[] getLastMountPoint()

setLastMountPoint

public void setLastMountPoint(byte[] aLastMountPoint)

getAlgorithmUsageBitmap

public long getAlgorithmUsageBitmap()

setAlgorithmUsageBitmap

public void setAlgorithmUsageBitmap(long aAlgorithmUsageBitmap)

getPreallocBlocks

public byte getPreallocBlocks()

setPreallocBlocks

public void setPreallocBlocks(byte aPreallocBlocks)

getPreallocDirBlocks

public byte getPreallocDirBlocks()

setPreallocDirBlocks

public void setPreallocDirBlocks(byte aPreallocDirBlocks)

getJournalUniqueID

public byte[] getJournalUniqueID()

setJournalUniqueID

public void setJournalUniqueID(byte[] aJournalUniqueID)

getJournalInode

public long getJournalInode()

setJournalInode

public void setJournalInode(long aJournalInode)

getJournalDev

public long getJournalDev()

setJournalDev

public void setJournalDev(long aJournalDev)

getLastOrphan

public long getLastOrphan()

setLastOrphan

public void setLastOrphan(long aLastOrphan)

getHashSeed

public int[] getHashSeed()

setHashSeed

public void setHashSeed(int[] aHashSeed)

getDefaultHashVersion

public byte getDefaultHashVersion()

setDefaultHashVersion

public void setDefaultHashVersion(byte aDefaultHashVersion)

getReservedCharPad

public byte getReservedCharPad()

setReservedCharPad

public void setReservedCharPad(byte aReservedCharPad)

getReservedWordPad

public int getReservedWordPad()

setReservedWordPad

public void setReservedWordPad(int aReservedWordPad)

getDefaultMountOptions

public long getDefaultMountOptions()

setDefaultMountOptions

public void setDefaultMountOptions(long aDefaultMountOptions)

getFirstMetaBlockGroup

public long getFirstMetaBlockGroup()

setFirstMetaBlockGroup

public void setFirstMetaBlockGroup(long aFirstMetaBlockGroup)

loadFromBuffer

public void loadFromBuffer(byte[] buffer,
                           int offset)
                    throws FsException
Load from a buffer containint the superblock. We assume that the superblock begins at the specified offset within the buffer

Specified by:
loadFromBuffer in interface DiskStructure
Parameters:
buffer - a byte[] containing data to be read in populating the object
offset - a int indicating the offset within the buffer to start parsing.
Throws:
FsException - if a parse error occurs.