UblkCtrlBuilder

Struct UblkCtrlBuilder 

Source
pub struct UblkCtrlBuilder<'a> { /* private fields */ }
Expand description

UblkSession: build one new ublk control device or recover the old one.

High level API.

One limit is that IO handling closure doesn’t support FnMut, and low level API doesn’t have such limit.

Implementations§

Source§

impl<'a> UblkCtrlBuilder<'a>

Source

pub fn name(self, value: &'a str) -> Self

target type, such as null, loop, ramdisk, or nbd,…

Source

pub fn id(self, value: i32) -> Self

device id: -1 can only be used for adding one new device, and ublk driver will allocate one new ID for the created device; otherwise, we are asking driver to create or recover or list one device with specified ID

Source

pub fn nr_queues(self, value: u16) -> Self

how many queues

Source

pub fn depth(self, value: u16) -> Self

each queue’s IO depth

Source

pub fn io_buf_bytes(self, value: u32) -> Self

max size of each IO buffer size, which will be converted to block layer’s queue limit of max hw sectors

Source

pub fn ctrl_flags(self, value: u64) -> Self

passed to ublk driver via sys::ublksrv_ctrl_dev_info.flags, usually for adding or recovering device

Source

pub fn ctrl_target_flags(self, value: u64) -> Self

store target flags in sys::ublksrv_ctrl_dev_info.ublksrv_flags, which is immutable in the whole device lifetime

Source

pub fn dev_flags(self, value: UblkFlags) -> Self

libublk feature flags: UBLK_DEV_F_*

Source§

impl UblkCtrlBuilder<'_>

Source

pub fn build(self) -> Result<UblkCtrl, UblkError>

create one pair of ublk devices, the 1st one is control device(UblkCtrl), and the 2nd one is data device(UblkDev)

Source

pub async fn build_async(self) -> Result<UblkCtrlAsync, UblkError>

Trait Implementations§

Source§

impl<'a> Debug for UblkCtrlBuilder<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for UblkCtrlBuilder<'_>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'a> PartialEq for UblkCtrlBuilder<'a>

Source§

fn eq(&self, other: &UblkCtrlBuilder<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> Eq for UblkCtrlBuilder<'a>

Source§

impl<'a> StructuralPartialEq for UblkCtrlBuilder<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for UblkCtrlBuilder<'a>

§

impl<'a> RefUnwindSafe for UblkCtrlBuilder<'a>

§

impl<'a> Send for UblkCtrlBuilder<'a>

§

impl<'a> Sync for UblkCtrlBuilder<'a>

§

impl<'a> Unpin for UblkCtrlBuilder<'a>

§

impl<'a> UnwindSafe for UblkCtrlBuilder<'a>

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> 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.