From 7455910d1b48b92bed76059b651b4d962d869a37 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Fri, 12 May 2017 13:05:17 -0700 Subject: [PATCH] scsi_bdev: simplify scsi_readwrite helper function Factor out the common data direction Check Condition logic from read and write. Change-Id: Ia2fbd5f69eefd826ebb5ab2a8e99aeb380f1b7ea Signed-off-by: Daniel Verkamp --- lib/scsi/scsi_bdev.c | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/lib/scsi/scsi_bdev.c b/lib/scsi/scsi_bdev.c index a365519a7..b5f959fea 100644 --- a/lib/scsi/scsi_bdev.c +++ b/lib/scsi/scsi_bdev.c @@ -1457,30 +1457,20 @@ spdk_bdev_scsi_readwrite(struct spdk_bdev *bdev, struct spdk_scsi_task *task, uint64_t lba, uint32_t xfer_len, bool is_read) { + if (task->dxfer_dir != SPDK_SCSI_DIR_NONE && + task->dxfer_dir != (is_read ? SPDK_SCSI_DIR_FROM_DEV : SPDK_SCSI_DIR_TO_DEV)) { + SPDK_ERRLOG("Incorrect data direction\n"); + spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, + SPDK_SCSI_SENSE_NO_SENSE, + SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE, + SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE); + return SPDK_SCSI_TASK_COMPLETE; + } + if (is_read) { - if ((task->dxfer_dir == SPDK_SCSI_DIR_FROM_DEV) || - (task->dxfer_dir == SPDK_SCSI_DIR_NONE)) { - return spdk_bdev_scsi_read(bdev, task, lba, xfer_len); - } else { - SPDK_ERRLOG("Incorrect data direction\n"); - spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, - SPDK_SCSI_SENSE_NO_SENSE, - SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE, - SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE); - return SPDK_SCSI_TASK_COMPLETE; - } + return spdk_bdev_scsi_read(bdev, task, lba, xfer_len); } else { - if ((task->dxfer_dir == SPDK_SCSI_DIR_TO_DEV) || - (task->dxfer_dir == SPDK_SCSI_DIR_NONE)) { - return spdk_bdev_scsi_write(bdev, task, lba, xfer_len); - } else { - SPDK_ERRLOG("Incorrect data direction\n"); - spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, - SPDK_SCSI_SENSE_NO_SENSE, - SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE, - SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE); - return SPDK_SCSI_TASK_COMPLETE; - } + return spdk_bdev_scsi_write(bdev, task, lba, xfer_len); } }