Spdk/include/spdk
paul luse fc250841ca idxd: add batch capability to accel framework and IDXD back-end
This patch only includes the basic framework for batching and the
ability to batch one type of command, copy. Follow-on patches will
add the ability to batch other commands and include an example of
how to do so via the accel perf tool.  SW engine support for batching
will also come in a future patch. Documentation will also be coming.

Batching allows the application to submit a list of independent
descriptors to DSA with one single "batch" descriptor. This is beneficial
when the application is in a position to have several operations ready
at once; batching saves the overhead of submitting each one separately.

The way batching works in SPDK is as follows:

1) The app gets a handle to a new batch with spdk_accel_batch_create()
2) The app uses that handle to prepare a command to be included in the
batch. For copy the command is spdk_accel_batch_prep_copy(). The
app many continue to prep commands for the batch up to the max via
calling spdk_accel_batch_get_max()
3) The app then submits the batch with spdk_accel_batch_submit()
4) The callback provided for each command in the batch will be called as
they complete, the callback provided to the batch submit itself will be
called then the entire batch is done.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I4102e9291fe59a245cedde6888f42a923b6dbafd
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2248
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-07-10 07:31:09 +00:00
..
accel_engine.h idxd: add batch capability to accel framework and IDXD back-end 2020-07-10 07:31:09 +00:00
assert.h include: move standard includes into spdk/stdinc.h 2017-05-08 10:11:01 -07:00
barrier.h barrier: cleanup the file 2019-03-15 19:32:55 +00:00
base64.h util/base64: Extend b64 decode to calculate exact len 2020-02-03 11:39:49 +00:00
bdev_module.h lib/bdev: add _ to spdk_bdev_module_register 2020-06-15 15:27:40 +00:00
bdev_zone.h bdev/zone: scattered zone append 2020-02-20 09:53:03 +00:00
bdev.h lib/bdev: Add spdk_bdev_io_get_cb_arg() to get cb_arg of bdev_io 2020-06-08 09:28:27 +00:00
bit_array.h util: added bit array bitmask load, store and clear 2018-12-14 15:34:53 +00:00
blob_bdev.h blob_bdev: add spdk_bdev_create_bs_dev_from_desc 2019-09-18 02:59:59 +00:00
blob.h lib/blob: add option to enable extent pages 2020-01-27 18:06:43 +00:00
blobfs_bdev.h blobfs/fuse: put FUSE code in module blobfs_bdev 2019-10-15 16:25:09 +00:00
blobfs.h blobfs: add result for set_cache_size 2019-11-07 00:33:25 +00:00
conf.h include/conf: add comments for public APIs 2018-02-26 11:59:09 -05:00
cpuset.h cpuset: Expose internal of struct spdk_cpuset in header file 2019-07-04 00:30:22 +00:00
crc16.h util/crc16: Add spdk_crc16_t10dif_copy to use in read strip and write insert 2018-12-20 17:52:29 +00:00
crc32.h lib/util: move some crc32 functions to internal header 2020-05-14 10:37:14 +00:00
dif.h dif: Add spdk_dix_remap_ref_tag to remap ref. tag for separate metadata payload 2019-07-11 11:14:22 +00:00
endian.h include: move standard includes into spdk/stdinc.h 2017-05-08 10:11:01 -07:00
env_dpdk.h env: add a new function for printing memory layout 2019-12-13 11:05:57 +00:00
env.h event: add iova-mode parameter 2020-06-24 08:22:24 +00:00
event.h event: expose base virtaddr as an option 2020-07-09 07:23:40 +00:00
fd.h include/fd.h: add comments for pubclic APIs 2018-01-04 12:12:10 -05:00
file.h util: add a new file operation API 2019-05-15 18:54:27 +00:00
ftl.h lib/ftl: Create l2p on l2p_path file if set in config 2020-03-06 10:28:21 +00:00
gpt_spec.h bdev/gpt: dump partition name 2017-07-12 18:12:52 -04:00
histogram_data.h histograms: add function to merge histograms 2018-11-15 23:03:26 +00:00
idxd.h idxd: add batch capability to accel framework and IDXD back-end 2020-07-10 07:31:09 +00:00
ioat_spec.h ioat_spec: fix gcc9 warning 2019-06-17 14:09:03 +00:00
ioat.h pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
iscsi_spec.h iscsi: fix layout of logout request reason field 2017-09-22 16:11:11 -04:00
json.h json: add utilities function enabling itaration over JSON object 2018-10-18 16:07:37 +00:00
jsonrpc.h jsonrpc: always allocate response for request 2019-07-19 20:56:54 +00:00
likely.h include: move standard includes into spdk/stdinc.h 2017-05-08 10:11:01 -07:00
log.h lib/log: add spdk_vlog function 2020-05-15 08:10:39 +00:00
lvol.h lvol: ensure enum for lvol clear method is the same as blobstore 2019-02-28 20:50:27 +00:00
memory.h memory.h: move to public headers 2020-03-19 08:50:45 +00:00
mmio.h mmio: add functions for 1 and 2 byte I/O accesses 2017-10-13 10:46:00 -04:00
nbd.h nbd: Remove unused spdk_event forward declaration 2019-04-23 20:22:55 +00:00
net.h net: make the net initialization in a correct way 2018-12-20 01:37:50 +00:00
notify.h lib/notify: rename spdk_notify_get_events to spdk_notify_foreach_event 2019-05-07 06:11:27 +00:00
nvme_intel.h nvme: pad struct spdk_nvme_intel_marketing_description_page 2019-06-05 02:46:50 +00:00
nvme_ocssd_spec.h ocssd: add chunk notification log struct 2018-09-27 01:30:45 +00:00
nvme_ocssd.h ocssd: add chunk notification log struct 2018-09-27 01:30:45 +00:00
nvme_spec.h nvme_spec: add definitions for I/O Command Sets aka. Namespace Types 2020-07-03 07:31:31 +00:00
nvme.h nvme: introduce new set of cmd/cpl printers 2020-07-10 07:30:59 +00:00
nvmf_cmd.h nvmf: Move custom admin command handler implementation to nvmf_tgt 2020-02-12 12:07:04 +00:00
nvmf_fc_spec.h nvme: define SPDK_NVME_NQN_FIELD_SIZE 2019-12-23 08:44:10 +00:00
nvmf_spec.h nvmf: remove min number of admin queue entries from spec file 2020-03-12 09:04:18 +00:00
nvmf_transport.h nvmf: add util to get id from ctrlr 2020-07-08 07:55:03 +00:00
nvmf.h lib/nvmf: add an acceptor_backlog transport opt. 2020-07-08 07:57:04 +00:00
opal_spec.h nvme/opal: use static locking ranges table 2020-03-25 07:52:28 +00:00
opal.h nvme/opal: deprecate spdk_opal_supported() 2020-05-20 14:16:44 +00:00
pci_ids.h env: add the device ID of virtio device 2020-05-12 08:12:22 +00:00
pipe.h pipe: Add a utility for buffering data from sockets 2019-11-20 09:35:32 +00:00
queue_extras.h queue_extras: use SPDK_CONTAINEROF 2019-10-07 15:06:01 +00:00
queue.h queue: redefine TAILQ_REMOVE for scan-build 2019-07-26 19:28:31 +00:00
reduce.h lib/reduce: change and move the max IOVEC define for reduce 2019-07-29 04:36:59 +00:00
rpc.h rpc: add spdk_rpc_verify_methods() 2019-11-06 15:19:48 +00:00
scsi_spec.h scsi: fix SCSI reservation typos 2019-05-30 21:42:36 +00:00
scsi.h lib/scsi: Pass SCSI task to SCSI layer to get DIF context 2019-11-21 08:01:29 +00:00
sock.h sock/posix: Add recv_buf_size and send_buf_size socket layer options 2020-06-02 09:48:00 +00:00
stdinc.h env: Check supported iommu address width before using iova-mode=va 2019-11-27 07:08:32 +00:00
string.h string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
thread.h pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
trace.h trace: shorten max name from 44 to 24 characters 2019-05-02 08:41:56 +00:00
util.h lib/util: Add spdk_sn32_lt/gt() to compare two numbers based on serial number arithmetic 2020-03-19 08:51:31 +00:00
uuid.h util/uuid: add a new uuid copy API. 2018-12-06 22:25:09 +00:00
version.h version: 20.07 pre 2020-05-06 12:43:20 +00:00
vhost.h lib/vhost: Remove and inline spdk_vhost_blk_get_dev 2020-06-08 09:28:27 +00:00
vmd.h lib/vmd: detach devices during shutdown 2020-02-04 16:50:25 +00:00