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:
parent
c46591393b
commit
a5ecbadb2c
@ -373,6 +373,71 @@ spdk_bs_batch_write_zeroes_dev(spdk_bs_batch_t *batch,
|
|||||||
&set->cb_args);
|
&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
|
void
|
||||||
spdk_bs_batch_close(spdk_bs_batch_t *batch)
|
spdk_bs_batch_close(spdk_bs_batch_t *batch)
|
||||||
{
|
{
|
||||||
|
@ -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,
|
void spdk_bs_batch_write_zeroes_dev(spdk_bs_batch_t *batch,
|
||||||
uint64_t lba, uint32_t lba_count);
|
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);
|
void spdk_bs_batch_close(spdk_bs_batch_t *batch);
|
||||||
|
|
||||||
spdk_bs_batch_t *spdk_bs_sequence_to_batch(spdk_bs_sequence_t *seq,
|
spdk_bs_batch_t *spdk_bs_sequence_to_batch(spdk_bs_sequence_t *seq,
|
||||||
|
Loading…
Reference in New Issue
Block a user