#[repr(C, packed(1))]pub struct SuperBlock {Show 35 fields
pub csum: [u8; 32],
pub fsid: [u8; 16],
pub bytenr: U64,
pub flags: U64,
pub magic: U64,
pub generation: U64,
pub root: U64,
pub chunk_root: U64,
pub log_root: U64,
pub log_root_transid: U64,
pub total_bytes: U64,
pub bytes_used: U64,
pub root_dir_objectid: U64,
pub num_devices: U64,
pub sectorsize: U32,
pub nodesize: U32,
pub leafsize: U32,
pub stripesize: U32,
pub sys_chunk_array_size: U32,
pub chunk_root_generation: U64,
pub compat_flags: U64,
pub compat_ro_flags: U64,
pub incompat_flags: U64,
pub csum_type: ChecksumType,
pub root_level: u8,
pub chunk_root_level: u8,
pub log_root_level: u8,
pub dev_item: DevItem,
pub label: [u8; 256],
pub cache_generation: U64,
pub uuid_tree_generation: U64,
pub _reserved: [U64; 30],
pub sys_chunk_array: [u8; 2048],
pub super_roots: [RootBackup; 4],
pub _unused1: [u8; 565],
}
Expand description
The layout of the superblock. A valid superblock must exist for most btrfs implementations to mount the filesystem.
The primary superblock is located at PRIMARY_SUPERBLOCK_ADDR
.
There are additional copies of the superblock located at SUPERBLOCK_ADDRS
, if those addresses
are valid, respectively.
§Resources
Fields§
§csum: [u8; 32]
Checksum of everything past this field.
fsid: [u8; 16]
Filesystem UUID.
bytenr: U64
The physical address of this block.
flags: U64
Flags
magic: U64
The magic must be equal to "_BHRfS_M"
in ASCII.
generation: U64
The generation of the superblock. In SSD mode, not all superblocks may be updated, so the latest generation superblock should be used.
root: U64
The logical address of the root tree’s root.
chunk_root: U64
The logical address of the chunk tree’s root.
log_root: U64
The logical address of the log tree’s root.
log_root_transid: U64
FIXME: find out what this is!
total_bytes: U64
FIXME: document this!
bytes_used: U64
§root_dir_objectid: U64
The root directory’s object ID, which is typically 6.
num_devices: U64
The number of devices the current filesystem spans.
sectorsize: U32
The size of a sector.
nodesize: U32
§leafsize: U32
This is currently unused.
stripesize: U32
§sys_chunk_array_size: U32
The size of sys_chunk_array
found in the superblock.
chunk_root_generation: U64
§compat_flags: U64
§compat_ro_flags: U64
Only implementations that support these flags can write to the filesystem.
incompat_flags: U64
Only implementations that support these flags can use the filesystem.
csum_type: ChecksumType
The checksum type.
This should correspond with a value from ChecksumType
.
root_level: u8
§chunk_root_level: u8
§log_root_level: u8
§dev_item: DevItem
§label: [u8; 256]
The label represented as a null-terminated UTF-8 string. May not contain '/'
or '\\'
.
cache_generation: U64
§uuid_tree_generation: U64
§_reserved: [U64; 30]
Reserved for extensibility.
sys_chunk_array: [u8; 2048]
§super_roots: [RootBackup; 4]
§_unused1: [u8; 565]
Trait Implementations§
Source§impl Clone for SuperBlock
impl Clone for SuperBlock
Source§fn clone(&self) -> SuperBlock
fn clone(&self) -> SuperBlock
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl KnownLayout for SuperBlock
impl KnownLayout for SuperBlock
Source§type PointerMetadata = <[u8; 565] as KnownLayout>::PointerMetadata
type PointerMetadata = <[u8; 565] as KnownLayout>::PointerMetadata
Self
. Read moreSource§impl TryFromBytes for SuperBlockwhere
[u8; 32]: TryFromBytes,
[u8; 16]: TryFromBytes,
U64: TryFromBytes,
U32: TryFromBytes,
ChecksumType: TryFromBytes,
u8: TryFromBytes,
DevItem: TryFromBytes,
[u8; 256]: TryFromBytes,
[U64; 30]: TryFromBytes,
[u8; 2048]: TryFromBytes,
[RootBackup; 4]: TryFromBytes,
[u8; 565]: TryFromBytes,
impl TryFromBytes for SuperBlockwhere
[u8; 32]: TryFromBytes,
[u8; 16]: TryFromBytes,
U64: TryFromBytes,
U32: TryFromBytes,
ChecksumType: TryFromBytes,
u8: TryFromBytes,
DevItem: TryFromBytes,
[u8; 256]: TryFromBytes,
[U64; 30]: TryFromBytes,
[u8; 2048]: TryFromBytes,
[RootBackup; 4]: TryFromBytes,
[u8; 565]: TryFromBytes,
Source§fn try_mut_from_bytes(
bytes: &mut [u8],
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout + IntoBytes,
fn try_mut_from_bytes(
bytes: &mut [u8],
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout + IntoBytes,
Source§fn try_mut_from_prefix(
source: &mut [u8],
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout + IntoBytes,
fn try_mut_from_prefix(
source: &mut [u8],
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout + IntoBytes,
Source§fn try_mut_from_suffix(
source: &mut [u8],
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout + IntoBytes,
fn try_mut_from_suffix(
source: &mut [u8],
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout + IntoBytes,
Source§fn try_mut_from_bytes_with_elems(
source: &mut [u8],
count: usize,
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
fn try_mut_from_bytes_with_elems( source: &mut [u8], count: usize, ) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
Source§fn try_mut_from_prefix_with_elems(
source: &mut [u8],
count: usize,
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
fn try_mut_from_prefix_with_elems( source: &mut [u8], count: usize, ) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
source
as a &mut Self
with a DST length equal to count
. Read moreSource§fn try_mut_from_suffix_with_elems(
source: &mut [u8],
count: usize,
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
fn try_mut_from_suffix_with_elems( source: &mut [u8], count: usize, ) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>
source
as a &mut Self
with a DST length equal to count
. Read more