spdk_bdev_io Struct Reference
Collaboration diagram for spdk_bdev_io:

Data Structures

struct  __bdev_io_internal_fields
 Fields that are used internally by the bdev subsystem. More...
 

Public Member Functions

 TAILQ_ENTRY (spdk_bdev_io) module_link
 It may be used by modules to put the bdev_io into its own list. More...
 

Data Fields

struct spdk_bdevbdev
 The block device that this I/O belongs to. More...
 
uint8_t type
 Enumerated value representing the I/O type. More...
 
uint16_t num_retries
 Number of IO submission retries.
 
struct iovec iov
 A single iovec element for use by this bdev_io. More...
 
struct iovec child_iov [BDEV_IO_NUM_CHILD_IOV]
 Array of iovecs used for I/O splitting. More...
 
union {
   struct {
      struct iovec *   iovs
 For SG buffer cases, array of iovecs to transfer. More...
 
      int   iovcnt
 For SG buffer cases, number of iovecs in iovec array. More...
 
      struct iovec *   fused_iovs
 For fused operations such as COMPARE_AND_WRITE, array of iovecs for the second operation.
 
      int   fused_iovcnt
 Number of iovecs in fused_iovs. More...
 
      void *   md_buf
 
      uint64_t   num_blocks
 Total size of data to be transferred. More...
 
      uint64_t   offset_blocks
 Starting offset (in blocks) of the bdev for this I/O. More...
 
      spdk_bdev_io_completion_cb   stored_user_cb
 stored user callback in case we split the I/O and use a temporary callback
 
      uint64_t   split_remaining_num_blocks
 number of blocks remaining in a split i/o
 
      uint64_t   split_current_offset_blocks
 current offset of the split I/O in the bdev
 
      uint32_t   split_outstanding
 count of outstanding batched split I/Os
 
      struct {
         uint8_t   populate: 1
 Whether the buffer should be populated with the real data.
 
         uint8_t   commit: 1
 Whether the buffer should be committed back to disk.
 
         uint8_t   start: 1
 True if this request is in the 'start' phase of zcopy. More...
 
      }   zcopy
 
   }   bdev
 
   struct {
      struct spdk_io_channel *   ch_ref
 Channel reference held while messages for this reset are in progress. More...
 
   }   reset
 
   struct {
      struct spdk_nvme_cmd   cmd
 
      void *   buf
 
      size_t   nbytes
 
      void *   md_buf
 
      size_t   md_len
 
   }   nvme_passthru
 
   struct {
      uint64_t   zone_id
 
      uint32_t   num_zones
 
      enum spdk_bdev_zone_action   zone_action
 
      void *   buf
 
   }   zone_mgmt
 
u
 
struct spdk_bdev_io::__bdev_io_internal_fields internal
 
uint8_t driver_ctx [0]
 Per I/O context for use by the bdev module.
 

Member Function Documentation

◆ TAILQ_ENTRY()

spdk_bdev_io::TAILQ_ENTRY ( spdk_bdev_io  )

It may be used by modules to put the bdev_io into its own list.

Field Documentation

◆ bdev

struct spdk_bdev* spdk_bdev_io::bdev

The block device that this I/O belongs to.

◆ ch_ref

struct spdk_io_channel* spdk_bdev_io::ch_ref

Channel reference held while messages for this reset are in progress.

◆ child_iov

struct iovec spdk_bdev_io::child_iov[BDEV_IO_NUM_CHILD_IOV]

Array of iovecs used for I/O splitting.

◆ fused_iovcnt

int spdk_bdev_io::fused_iovcnt

Number of iovecs in fused_iovs.

◆ iov

struct iovec spdk_bdev_io::iov

A single iovec element for use by this bdev_io.

◆ iovcnt

int spdk_bdev_io::iovcnt

For SG buffer cases, number of iovecs in iovec array.

◆ iovs

struct iovec* spdk_bdev_io::iovs

For SG buffer cases, array of iovecs to transfer.

◆ num_blocks

uint64_t spdk_bdev_io::num_blocks

Total size of data to be transferred.

◆ offset_blocks

uint64_t spdk_bdev_io::offset_blocks

Starting offset (in blocks) of the bdev for this I/O.

◆ start

uint8_t spdk_bdev_io::start

True if this request is in the 'start' phase of zcopy.

False if in 'end'.

◆ type

uint8_t spdk_bdev_io::type

Enumerated value representing the I/O type.


The documentation for this struct was generated from the following file: