Fields that are used internally by the bdev subsystem. More...
#include <bdev_module.h>
Public Member Functions | |
| TAILQ_ENTRY (spdk_bdev_io) ch_link | |
| Entry to the list io_submitted of struct spdk_bdev_channel. | |
| STAILQ_ENTRY (spdk_bdev_io) buf_link | |
| bdev_io pool entry | |
| TAILQ_ENTRY (spdk_bdev_io) link | |
| Queue entry used in several cases: | |
Data Fields | ||
| struct spdk_bdev_channel * | ch | |
| The bdev I/O channel that this was handled on. | ||
| union { | ||
| struct { | ||
| uint8_t has_accel_sequence: 1 | ||
| Whether the accel_sequence member is valid. | ||
| uint8_t has_memory_domain: 1 | ||
| Whether memory_domain member is valid. | ||
| uint8_t split: 1 | ||
| Whether the split data structure is valid. | ||
| uint8_t has_buf: 1 | ||
| Whether ptr in the buf data structure is valid. | ||
| uint8_t has_bounce_buf: 1 | ||
| Whether the bounce_buf data structure is valid. | ||
| uint8_t in_submit_request: 1 | ||
| Whether we are currently inside the submit request call. | ||
| uint8_t child_io: 1 | ||
| Whether the I/O is a sub-I/O of a split parent I/O. | ||
| uint8_t reserved: 1 | ||
| } | ||
| uint8_t raw | ||
| } | f | |
| int8_t | status | |
| Status for the IO. | ||
| uint8_t | retry_state | |
| Retry state (resubmit, re-pull, re-push, etc.) | ||
| struct spdk_bdev_desc * | desc | |
| The bdev descriptor that was used when submitting this I/O. | ||
| spdk_bdev_io_completion_cb | cb | |
| User function that will be called when this completes. | ||
| void * | caller_ctx | |
| Context that will be passed to the completion callback. | ||
| uint64_t | submit_tsc | |
| Current tsc at submit time. | ||
| union { | ||
| struct { | ||
| uint32_t cdw0 | ||
| NVMe completion queue entry DW0. | ||
| uint8_t sct | ||
| NVMe status code type. | ||
| uint8_t sc | ||
| NVMe status code. | ||
| } nvme | ||
| struct { | ||
| uint8_t sc | ||
| SCSI status code. | ||
| uint8_t sk | ||
| SCSI sense key. | ||
| uint8_t asc | ||
| SCSI additional sense code. | ||
| uint8_t ascq | ||
| SCSI additional sense code qualifier. | ||
| } scsi | ||
| Only valid when status is SPDK_BDEV_IO_STATUS_SCSI_ERROR. | ||
| int aio_result | ||
| Only valid when status is SPDK_BDEV_IO_STATUS_AIO_ERROR. | ||
| } | error | |
| Error information from a device. | ||
| struct { | ||
| 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 remaining_num_blocks | ||
| number of blocks remaining in a split i/o | ||
| uint64_t current_offset_blocks | ||
| current offset of the split I/O in the bdev | ||
| uint32_t outstanding | ||
| count of outstanding batched split I/Os | ||
| } | split | |
| struct { | ||
| void * ptr | ||
| bdev allocated memory associated with this request | ||
| uint64_t len | ||
| requested size of the buffer associated with this I/O | ||
| } | buf | |
| struct { | ||
| struct iovec iov | ||
| struct iovec md_iov | ||
| struct iovec orig_md_iov | ||
| struct iovec * orig_iovs | ||
| int orig_iovcnt | ||
| } | bounce_buf | |
| if the request is double buffered, store original request iovs here | ||
| spdk_bdev_io_get_buf_cb | get_buf_cb | |
| Callback for when buf is allocated. | ||
| struct spdk_iobuf_entry | iobuf | |
| iobuf queue entry | ||
| struct spdk_bdev_io_wait_entry | waitq_entry | |
| Enables queuing parent I/O when no bdev_ios available for split children. | ||
| struct spdk_memory_domain * | memory_domain | |
| Memory domain and its context passed by the user in ext API. | ||
| void * | memory_domain_ctx | |
| struct spdk_accel_sequence * | accel_sequence | |
| void(* | data_transfer_cpl )(void *ctx, int rc) | |
| Data transfer completion callback. | ||
Fields that are used internally by the bdev subsystem.
Bdev modules must not read or write to these fields.
| spdk_bdev_io_internal_fields::TAILQ_ENTRY | ( | spdk_bdev_io | ) |
Queue entry used in several cases:
| uint8_t spdk_bdev_io_internal_fields::sc |
NVMe status code.
SCSI status code.
| uint64_t spdk_bdev_io_internal_fields::submit_tsc |
Current tsc at submit time.
Used to calculate latency at completion.