Module: ZFSProbe

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

Constant Summary collapse

ZFS_SUPER_OFFSET =
0
ZFS_MAGIC_OFFSET =
0
ZFS_MAGIC_SIZE =
4
ZFS_SUPER_MAGIC =
0x00bab10c

Class Method Summary collapse

Class Method Details

.probe(dobj) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fs/MiqFS/modules/ZFSProbe.rb', line 7

def self.probe(dobj)
  return(false) unless dobj.kind_of?(MiqDisk)

  # Check for magic at uberblock offset.
  dobj.seek(ZFS_SUPER_OFFSET + ZFS_MAGIC_OFFSET)
  bs = dobj.read(ZFS_MAGIC_SIZE)&.unpack('L')
  magic = bs.nil? ? nil : bs[0]
  raise "ZFS is Not Supported" if magic == ZFS_SUPER_MAGIC

  # No ZFS.
  false
end