Struct SuperBlock

Source
#[repr(C, packed(1))]
pub struct SuperBlock {
Show 35 fields pub csum: [u8; 32], pub fsid: [u8; 16], pub bytenr: U64<LE>, pub flags: U64<LE>, pub magic: U64<LE>, pub generation: U64<LE>, pub root: U64<LE>, pub chunk_root: U64<LE>, pub log_root: U64<LE>, pub log_root_transid: U64<LE>, pub total_bytes: U64<LE>, pub bytes_used: U64<LE>, pub root_dir_objectid: U64<LE>, pub num_devices: U64<LE>, pub sectorsize: U32<LE>, pub nodesize: U32<LE>, pub leafsize: U32<LE>, pub stripesize: U32<LE>, pub sys_chunk_array_size: U32<LE>, pub chunk_root_generation: U64<LE>, pub compat_flags: U64<LE>, pub compat_ro_flags: U64<LE>, pub incompat_flags: U64<LE>, pub csum_type: U16<LE>, 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<LE>, pub uuid_tree_generation: U64<LE>, pub _reserved: [U64<LE>; 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<LE>

The physical address of this block.

§flags: U64<LE>

Flags

§magic: U64<LE>

The magic must be equal to "_BHRfS_M" in ASCII.

§generation: U64<LE>

The generation of the superblock. In SSD mode, not all superblocks may be updated, so the latest generation superblock should be used.

§root: U64<LE>

The logical address of the root tree’s root.

§chunk_root: U64<LE>

The logical address of the chunk tree’s root.

§log_root: U64<LE>

The logical address of the log tree’s root.

§log_root_transid: U64<LE>

FIXME: find out what this is!

§total_bytes: U64<LE>

FIXME: document this!

§bytes_used: U64<LE>§root_dir_objectid: U64<LE>

The root directory’s object ID, which is typically 6.

§num_devices: U64<LE>

The number of devices the current filesystem spans.

§sectorsize: U32<LE>

The size of a sector.

§nodesize: U32<LE>§leafsize: U32<LE>

This is currently unused.

§stripesize: U32<LE>§sys_chunk_array_size: U32<LE>

The size of sys_chunk_array found in the superblock.

§chunk_root_generation: U64<LE>§compat_flags: U64<LE>§compat_ro_flags: U64<LE>

Only implementations that support these flags can write to the filesystem.

§incompat_flags: U64<LE>

Only implementations that support these flags can use the filesystem.

§csum_type: U16<LE>

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<LE>§uuid_tree_generation: U64<LE>§_reserved: [U64<LE>; 30]

Reserved for extensibility.

§sys_chunk_array: [u8; 2048]§super_roots: [RootBackup; 4]§_unused1: [u8; 565]

Trait Implementations§

Source§

impl AsBytes for SuperBlock

Source§

fn as_bytes(&self) -> &[u8]

Gets the bytes of this value. Read more
Source§

fn as_bytes_mut(&mut self) -> &mut [u8]
where Self: FromBytes,

Gets the bytes of this value mutably. Read more
Source§

fn write_to<B>(&self, bytes: B) -> Option<()>
where B: ByteSliceMut,

Writes a copy of self to bytes. Read more
Source§

fn write_to_prefix<B>(&self, bytes: B) -> Option<()>
where B: ByteSliceMut,

Writes a copy of self to the prefix of bytes. Read more
Source§

fn write_to_suffix<B>(&self, bytes: B) -> Option<()>
where B: ByteSliceMut,

Writes a copy of self to the suffix of bytes. Read more
Source§

impl Clone for SuperBlock

Source§

fn clone(&self) -> SuperBlock

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl FromBytes for SuperBlock

Source§

fn read_from<B>(bytes: B) -> Option<Self>
where B: ByteSlice, Self: Sized,

Reads a copy of Self from bytes. Read more
Source§

fn read_from_prefix<B>(bytes: B) -> Option<Self>
where B: ByteSlice, Self: Sized,

Reads a copy of Self from the prefix of bytes. Read more
Source§

fn read_from_suffix<B>(bytes: B) -> Option<Self>
where B: ByteSlice, Self: Sized,

Reads a copy of Self from the suffix of bytes. Read more
Source§

fn new_zeroed() -> Self
where Self: Sized,

Creates an instance of Self from zeroed bytes.
Source§

impl Copy for SuperBlock

Source§

impl Unaligned for SuperBlock

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.