blob: add spdk_bs_batch_xxx_blob variants

These will be used to implement user request splitting
on cluster boundaries.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I29e00ae9555fdd8a149e92be3cf88a2e528f5c0e

Reviewed-on: https://review.gerrithub.io/395021
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Jim Harris 2018-01-16 21:22:13 -07:00
parent c46591393b
commit a5ecbadb2c
2 changed files with 77 additions and 0 deletions

View File

@ -373,6 +373,71 @@ spdk_bs_batch_write_zeroes_dev(spdk_bs_batch_t *batch,
&set->cb_args);
}
static void
spdk_bs_batch_blob_op_complete(void *arg, int bserrno)
{
/* TODO: spdk_bs_batch_completion does not actually use the channel parameter -
* just pass NULL here instead of getting the channel from the set cb_arg.
*/
spdk_bs_batch_completion(NULL, arg, bserrno);
}
void
spdk_bs_batch_read_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
void *payload, uint64_t offset, uint64_t length)
{
struct spdk_bs_request_set *set = (struct spdk_bs_request_set *)batch;
struct spdk_bs_channel *channel = set->channel;
SPDK_DEBUGLOG(SPDK_LOG_BLOB_RW, "Reading %lu pages from offset %lu\n", length, offset);
set->u.batch.outstanding_ops++;
spdk_bs_io_read_blob(blob, spdk_io_channel_from_ctx(channel), payload, offset,
length, spdk_bs_batch_blob_op_complete, set);
}
void
spdk_bs_batch_write_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
void *payload, uint64_t offset, uint64_t length)
{
struct spdk_bs_request_set *set = (struct spdk_bs_request_set *)batch;
struct spdk_bs_channel *channel = set->channel;
SPDK_DEBUGLOG(SPDK_LOG_BLOB_RW, "Writing %lu pages from offset %lu\n", length, offset);
set->u.batch.outstanding_ops++;
spdk_bs_io_write_blob(blob, spdk_io_channel_from_ctx(channel), payload, offset,
length, spdk_bs_batch_blob_op_complete, set);
}
void
spdk_bs_batch_unmap_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
uint64_t offset, uint64_t length)
{
struct spdk_bs_request_set *set = (struct spdk_bs_request_set *)batch;
struct spdk_bs_channel *channel = set->channel;
SPDK_DEBUGLOG(SPDK_LOG_BLOB_RW, "Unmapping %lu pages from offset %lu\n", length, offset);
set->u.batch.outstanding_ops++;
spdk_bs_io_unmap_blob(blob, spdk_io_channel_from_ctx(channel), offset, length,
spdk_bs_batch_blob_op_complete, set);
}
void
spdk_bs_batch_write_zeroes_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
uint64_t offset, uint64_t length)
{
struct spdk_bs_request_set *set = (struct spdk_bs_request_set *)batch;
struct spdk_bs_channel *channel = set->channel;
SPDK_DEBUGLOG(SPDK_LOG_BLOB_RW, "Zeroing %lu pages from offset %lu\n", length, offset);
set->u.batch.outstanding_ops++;
spdk_bs_io_write_zeroes_blob(blob, spdk_io_channel_from_ctx(channel), offset, length,
spdk_bs_batch_blob_op_complete, set);
}
void
spdk_bs_batch_close(spdk_bs_batch_t *batch)
{

View File

@ -184,6 +184,18 @@ void spdk_bs_batch_unmap_dev(spdk_bs_batch_t *batch,
void spdk_bs_batch_write_zeroes_dev(spdk_bs_batch_t *batch,
uint64_t lba, uint32_t lba_count);
void spdk_bs_batch_read_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
void *payload, uint64_t offset, uint64_t length);
void spdk_bs_batch_write_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
void *payload, uint64_t offset, uint64_t length);
void spdk_bs_batch_unmap_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
uint64_t offset, uint64_t length);
void spdk_bs_batch_write_zeroes_blob(spdk_bs_batch_t *batch, struct spdk_blob *blob,
uint64_t offset, uint64_t length);
void spdk_bs_batch_close(spdk_bs_batch_t *batch);
spdk_bs_batch_t *spdk_bs_sequence_to_batch(spdk_bs_sequence_t *seq,