Module: ReiserFSProbe

Defined in:
lib/fs/MiqFS/modules/ReiserFSProbe.rb

Constant Summary collapse

REISERFS_DISK_OFFSET_NEW =
64 * 1024
REISERFS_DISK_OFFSET_OLD =
8 * 1024
REISERFS_SUPER_SIZE =
204
REISERFS_MAGIC_OFFSET =
52
REISERFS_MAGIC_SIZE =
10
REISERFS_MAGIC1 =
"ReIsErFs".freeze
REISERFS_MAGIC2 =
"ReIsEr2Fs".freeze
REISERFS_MAGIC3 =
"ReIsEr3Fs".freeze

Class Method Summary collapse

Class Method Details

.getMagic(dobj, offset) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fs/MiqFS/modules/ReiserFSProbe.rb', line 22

def self.getMagic(dobj, offset)
  return false unless dobj.kind_of?(MiqDisk)

  # Assume ReiserFS - read superblock at desired offset.
  dobj.seek(offset) # new disk start offset.
  sb = dobj.read(REISERFS_SUPER_SIZE)

  return nil if sb.nil?
  return nil if sb.size < (REISERFS_MAGIC_OFFSET + REISERFS_MAGIC_SIZE - 1)

  # Check magic at offset 52 for accepted ReiserFS identifiers.
  magic = sb[REISERFS_MAGIC_OFFSET, REISERFS_MAGIC_SIZE].strip
end

.isMagic?(magic) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
# File 'lib/fs/MiqFS/modules/ReiserFSProbe.rb', line 36

def self.isMagic?(magic)
  return true if magic == REISERFS_MAGIC1
  return true if magic == REISERFS_MAGIC2
  return true if magic == REISERFS_MAGIC3
  false
end

.probe(dobj) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/fs/MiqFS/modules/ReiserFSProbe.rb', line 14

def self.probe(dobj)
  return true if ReiserFSProbe.isMagic?(ReiserFSProbe.getMagic(dobj, REISERFS_DISK_OFFSET_NEW))
  return true if ReiserFSProbe.isMagic?(ReiserFSProbe.getMagic(dobj, REISERFS_DISK_OFFSET_OLD))

  # No ReiserFS.
  false
end