+/**
+ * @brief Vectorized request (no write/read preference)
+ *
+ * @param vbuf
+ * @param start_lba
+ * @param completed
+ * @param evt_args
+ * @param options
+ * @return struct blkio_req*
+ */
+static inline struct blkio_req*
+blkio_vreq(struct vecbuf* buffer,
+ u64_t start_lba,
+ blkio_cb completed,
+ void* evt_args,
+ u32_t options) {
+ /*
+ This is currently aliased to blkio_vrd. Although `no preference`
+ does essentially mean `default read`, the blkio_vreq just used
+ to enhance readability
+ */
+ return blkio_vrd(buffer, start_lba, completed, evt_args, options);
+}
+
+
+/**
+ * @brief Bind a block IO context to request
+ *
+ * @param ctx
+ * @param req
+ */
+static inline void
+blkio_bindctx(struct blkio_req* req, struct blkio_context* ctx)
+{
+ req->io_ctx = ctx;
+}
+
+/**
+ * @brief Set block IO request to read
+ *
+ * @param ctx
+ * @param req
+ */
+static inline void
+blkio_setread(struct blkio_req* req)
+{
+ if ((req->flags & BLKIO_PENDING)) {
+ return;
+ }
+
+ req->flags &= ~BLKIO_WRITE;
+}
+
+/**
+ * @brief Set block IO request to write
+ *
+ * @param ctx
+ * @param req
+ */
+static inline void
+blkio_setwrite(struct blkio_req* req)
+{
+ if ((req->flags & BLKIO_PENDING)) {
+ return;
+ }
+
+ req->flags |= BLKIO_WRITE;
+}
+
+/**
+ * @brief Set callback when request complete
+ *
+ * @param req
+ * @param on_completed
+ */
+static inline void
+blkio_when_completed(struct blkio_req* req, blkio_cb on_completed)
+{
+ req->completed = on_completed;
+}
+
+static inline bool
+blkio_is_pending(struct blkio_req* req)
+{
+ return (req->flags & BLKIO_PENDING);
+}
+
+/**
+ * @brief Mark request to be freed-on-completion (FOC)
+ *
+ * @param req
+ */
+static inline void
+blkio_mark_foc(struct blkio_req* req)
+{
+ req->flags |= BLKIO_FOC;
+}
+
+/**
+ * @brief Mark request to be not-freed-on-completion (nFOC)
+ *
+ * @param req
+ */
+static inline void
+blkio_mark_nfoc(struct blkio_req* req)
+{
+ req->flags &= ~BLKIO_FOC;
+}
+
+int
+blkio_read_aligned(struct blkio_context* ctx,
+ unsigned long lba, void* block, size_t n_blk);
+
+int
+blkio_read(struct blkio_context* ctx,
+ unsigned long offset, void* block, size_t len);
+
+int
+blkio_write_aligned(struct blkio_context* ctx,
+ unsigned long lba, void* block, size_t n_blk);
+
+int
+blkio_read(struct blkio_context* ctx,
+ unsigned long offset, void* block, size_t len);
+