1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
use { crate::UuidBytes, byteorder::LE, static_assertions::const_assert_eq, zerocopy::{AsBytes, FromBytes, Unaligned, U32, U64}, }; /// Represents a complete block device. #[derive(Copy, Clone, Debug, AsBytes, FromBytes, Unaligned)] #[repr(C, packed)] pub struct DevItem { /// The internal btrfs device ID. /// /// This should match the devid found in the filesystem's list of devices. pub devid: U64<LE>, /// The size of the device. pub total_bytes: U64<LE>, /// The bytes in use by the filesystem on the device. pub bytes_used: U64<LE>, /// The optimal I/O alignment for this device. pub io_align: U32<LE>, /// The optimal I/O width for this device. pub io_width: U32<LE>, /// The minimum I/O size for this device. pub sector_size: U32<LE>, /// The type and info for this device. pub r#type: U64<LE>, /// The expected generation for this device. pub generation: U64<LE>, /// The starting byte of this partition on the device, to allow for stripe /// alignment. pub start_offset: U64<LE>, /// Grouping information for allocation decisions. pub dev_group: U32<LE>, /// The seek speed of the device on a scale from 0 to 100, where 100 is the /// fastest. pub seek_speed: u8, /// The bandwidth of the device on a scale from 0 to 100, where 100 is the /// fastest. pub bandwith: u8, /// The generated UUID for this device. pub uuid: UuidBytes, /// The UUID of the filesystem that owns this device. pub fsid: UuidBytes, } const_assert_eq!(std::mem::size_of::<DevItem>(), 98);