bdev: convert set_scsi_status into a bdev_io completion function
In the pattern set by spdk_bdev_io_complete_nvme_status(), allow blockdev modules to complete a bdev_io with a SCSI status code. Also move it to the internal bdev header file, since only bdev modules should be setting bdev_io status codes. Change-Id: I8b6afad2c02d7c010c5e60f06a7c7e0785eb87ca Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
dc9e11163e
commit
7fb6b33488
@ -367,8 +367,6 @@ int spdk_bdev_free_io(struct spdk_bdev_io *bdev_io);
|
||||
int spdk_bdev_reset(struct spdk_bdev *bdev, enum spdk_bdev_reset_type,
|
||||
spdk_bdev_io_completion_cb cb, void *cb_arg);
|
||||
struct spdk_io_channel *spdk_bdev_get_io_channel(struct spdk_bdev *bdev, uint32_t priority);
|
||||
void spdk_bdev_io_set_scsi_error(struct spdk_bdev_io *bdev_io, enum spdk_scsi_status sc,
|
||||
enum spdk_scsi_sense sk, uint8_t asc, uint8_t ascq);
|
||||
|
||||
/**
|
||||
* Get the status of bdev_io as an NVMe status code.
|
||||
|
@ -169,6 +169,19 @@ void spdk_bdev_io_complete(struct spdk_bdev_io *bdev_io,
|
||||
*/
|
||||
void spdk_bdev_io_complete_nvme_status(struct spdk_bdev_io *bdev_io, int sct, int sc);
|
||||
|
||||
/**
|
||||
* Complete a bdev_io with a SCSI status code.
|
||||
*
|
||||
* \param bdev_io I/O to complete.
|
||||
* \param sc SCSI Status Code.
|
||||
* \param sk SCSI Sense Key.
|
||||
* \param asc SCSI Additional Sense Code.
|
||||
* \param ascq SCSI Additional Sense Code Qualifier.
|
||||
*/
|
||||
void spdk_bdev_io_complete_scsi_status(struct spdk_bdev_io *bdev_io, enum spdk_scsi_status sc,
|
||||
enum spdk_scsi_sense sk, uint8_t asc, uint8_t ascq);
|
||||
|
||||
|
||||
void spdk_scsi_nvme_translate(const struct spdk_bdev_io *bdev_io,
|
||||
int *sc, int *sk, int *asc, int *ascq);
|
||||
|
||||
|
@ -916,14 +916,20 @@ spdk_bdev_io_complete(struct spdk_bdev_io *bdev_io, enum spdk_bdev_io_status sta
|
||||
}
|
||||
|
||||
void
|
||||
spdk_bdev_io_set_scsi_error(struct spdk_bdev_io *bdev_io, enum spdk_scsi_status sc,
|
||||
spdk_bdev_io_complete_scsi_status(struct spdk_bdev_io *bdev_io, enum spdk_scsi_status sc,
|
||||
enum spdk_scsi_sense sk, uint8_t asc, uint8_t ascq)
|
||||
{
|
||||
if (sc == SPDK_SCSI_STATUS_GOOD) {
|
||||
bdev_io->status = SPDK_BDEV_IO_STATUS_SUCCESS;
|
||||
} else {
|
||||
bdev_io->status = SPDK_BDEV_IO_STATUS_SCSI_ERROR;
|
||||
bdev_io->error.scsi.sc = sc;
|
||||
bdev_io->error.scsi.sk = sk;
|
||||
bdev_io->error.scsi.asc = asc;
|
||||
bdev_io->error.scsi.ascq = ascq;
|
||||
}
|
||||
|
||||
spdk_bdev_io_complete(bdev_io, bdev_io->status);
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user