kernel::block::mq

Trait Operations

Source
pub trait Operations: Sized {
    const USE_VTABLE_ATTR: ();
    const HAS_QUEUE_RQ: bool = false;
    const HAS_COMMIT_RQS: bool = false;
    const HAS_POLL: bool = false;

    // Required methods
    fn queue_rq(rq: ARef<Request<Self>>, is_last: bool) -> Result;
    fn commit_rqs();

    // Provided method
    fn poll() -> bool { ... }
}
Expand description

Implement this trait to interface blk-mq as block devices.

To implement a block device driver, implement this trait as described in the module level documentation. The kernel will use the implementation of the functions defined in this trait to interface a block device driver. Note: There is no need for an exit_request() implementation, because the drop implementation of the Request type will be invoked by automatically by the C/Rust glue logic.

Required Associated Constants§

Source

const USE_VTABLE_ATTR: ()

A marker to prevent implementors from forgetting to use #[vtable] attribute when implementing this trait.

Provided Associated Constants§

Source

const HAS_QUEUE_RQ: bool = false

Indicates if the queue_rq method is overridden by the implementor.

Source

const HAS_COMMIT_RQS: bool = false

Indicates if the commit_rqs method is overridden by the implementor.

Source

const HAS_POLL: bool = false

Indicates if the poll method is overridden by the implementor.

Required Methods§

Source

fn queue_rq(rq: ARef<Request<Self>>, is_last: bool) -> Result

Called by the kernel to queue a request with the driver. If is_last is false, the driver is allowed to defer committing the request.

Source

fn commit_rqs()

Called by the kernel to indicate that queued requests should be submitted.

Provided Methods§

Source

fn poll() -> bool

Called by the kernel to poll the device for completed requests. Only used for poll queues.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§