lib/VolumeManager/LVM/thin/constants.rb
module Lvm2Thin
SECTOR_SIZE = 512
THIN_MAGIC = 27022010
SPACE_MAP_ROOT_SIZE = 128
MAX_METADATA_BITMAPS = 255
SUPERBLOCK = BinaryStruct.new([
'L', 'csum',
'L', 'flags_',
'Q', 'block',
'A16', 'uuid',
'Q', 'magic',
'L', 'version',
'L', 'time',
'Q', 'trans_id',
'Q', 'metadata_snap',
"A#{SPACE_MAP_ROOT_SIZE}", 'data_space_map_root',
"A#{SPACE_MAP_ROOT_SIZE}", 'metadata_space_map_root',
'Q', 'data_mapping_root',
'Q', 'device_details_root',
'L', 'data_block_size', # in 512-byte sectors
'L', 'metadata_block_size', # in 512-byte sectors
'Q', 'metadata_nr_blocks',
'L', 'compat_flags',
'L', 'compat_ro_flags',
'L', 'incompat_flags'
])
SPACE_MAP = BinaryStruct.new([
'Q', 'nr_blocks',
'Q', 'nr_allocated',
'Q', 'bitmap_root',
'Q', 'ref_count_root'
])
DISK_NODE = BinaryStruct.new([
'L', 'csum',
'L', 'flags',
'Q', 'blocknr',
'L', 'nr_entries',
'L', 'max_entries',
'L', 'value_size',
'L', 'padding'
#'Q', 'keys'
])
INDEX_ENTRY = BinaryStruct.new([
'Q', 'blocknr',
'L', 'nr_free',
'L', 'none_free_before'
])
METADATA_INDEX = BinaryStruct.new([
'L', 'csum',
'L', 'padding',
'Q', 'blocknr'
])
BITMAP_HEADER = BinaryStruct.new([
'L', 'csum',
'L', 'notused',
'Q', 'blocknr'
])
DEVICE_DETAILS = BinaryStruct.new([
'Q', 'mapped_blocks',
'Q', 'transaction_id',
'L', 'creation_time',
'L', 'snapshotted_time'
])
MAPPING_DETAILS = BinaryStruct.new([
'Q', 'value'
])
end # module Lvm2Thin