scsi: convert sync command to bdev blocks API
Use spdk_bdev_flush_blocks() in place of spdk_bdev_flush(), since the SCSI SYNCHRONIZE CACHE command already natively operates in blocks rather than bytes. Change-Id: I11810948fb8d0b6b911d48620e2a363f767cc7f7 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-on: https://review.gerrithub.io/393201 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
623161daca
commit
a520198dba
@ -1415,9 +1415,6 @@ spdk_bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
|||||||
uint64_t lba, uint32_t num_blocks)
|
uint64_t lba, uint32_t num_blocks)
|
||||||
{
|
{
|
||||||
uint64_t bdev_num_blocks;
|
uint64_t bdev_num_blocks;
|
||||||
uint64_t blen;
|
|
||||||
uint64_t offset;
|
|
||||||
uint64_t nbytes;
|
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (num_blocks == 0) {
|
if (num_blocks == 0) {
|
||||||
@ -1425,9 +1422,6 @@ spdk_bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bdev_num_blocks = spdk_bdev_get_num_blocks(bdev);
|
bdev_num_blocks = spdk_bdev_get_num_blocks(bdev);
|
||||||
blen = spdk_bdev_get_block_size(bdev);
|
|
||||||
offset = lba * blen;
|
|
||||||
nbytes = num_blocks * blen;
|
|
||||||
|
|
||||||
if (lba >= bdev_num_blocks || num_blocks > bdev_num_blocks ||
|
if (lba >= bdev_num_blocks || num_blocks > bdev_num_blocks ||
|
||||||
lba > (bdev_num_blocks - num_blocks)) {
|
lba > (bdev_num_blocks - num_blocks)) {
|
||||||
@ -1439,11 +1433,11 @@ spdk_bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
|||||||
return SPDK_SCSI_TASK_COMPLETE;
|
return SPDK_SCSI_TASK_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = spdk_bdev_flush(task->desc, task->ch, offset, nbytes,
|
rc = spdk_bdev_flush_blocks(task->desc, task->ch, lba, num_blocks,
|
||||||
spdk_bdev_scsi_task_complete_cmd, task);
|
spdk_bdev_scsi_task_complete_cmd, task);
|
||||||
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
SPDK_ERRLOG("spdk_bdev_flush() failed\n");
|
SPDK_ERRLOG("spdk_bdev_flush_blocks() failed\n");
|
||||||
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
||||||
SPDK_SCSI_SENSE_NO_SENSE,
|
SPDK_SCSI_SENSE_NO_SENSE,
|
||||||
SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE,
|
SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE,
|
||||||
|
@ -221,9 +221,9 @@ spdk_bdev_reset(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_bdev_flush(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
|
spdk_bdev_flush_blocks(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
|
||||||
uint64_t offset, uint64_t length,
|
uint64_t offset_blocks, uint64_t num_blocks,
|
||||||
spdk_bdev_io_completion_cb cb, void *cb_arg)
|
spdk_bdev_io_completion_cb cb, void *cb_arg)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user