scsi: Remove the prefix spdk_ from names of private functions
This patch doesn't change any behavior too. Change-Id: I67be498bfd4f1ae42e6239de4539e5e99f158279 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/449397 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
893e02a54f
commit
0ed66e7ef6
@ -103,7 +103,7 @@ spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_scsi_dev_find_lowest_free_lun_id(struct spdk_scsi_dev *dev)
|
scsi_dev_find_lowest_free_lun_id(struct spdk_scsi_dev *dev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ spdk_scsi_dev_add_lun(struct spdk_scsi_dev *dev, const char *bdev_name, int lun_
|
|||||||
|
|
||||||
/* Search the lowest free LUN ID if LUN ID is default */
|
/* Search the lowest free LUN ID if LUN ID is default */
|
||||||
if (lun_id == -1) {
|
if (lun_id == -1) {
|
||||||
lun_id = spdk_scsi_dev_find_lowest_free_lun_id(dev);
|
lun_id = scsi_dev_find_lowest_free_lun_id(dev);
|
||||||
if (lun_id == -1) {
|
if (lun_id == -1) {
|
||||||
SPDK_ERRLOG("Free LUN ID is not found\n");
|
SPDK_ERRLOG("Free LUN ID is not found\n");
|
||||||
return -1;
|
return -1;
|
||||||
@ -265,7 +265,7 @@ spdk_scsi_dev_queue_task(struct spdk_scsi_dev *dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct spdk_scsi_port *
|
static struct spdk_scsi_port *
|
||||||
spdk_scsi_dev_find_free_port(struct spdk_scsi_dev *dev)
|
scsi_dev_find_free_port(struct spdk_scsi_dev *dev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ spdk_scsi_dev_add_port(struct spdk_scsi_dev *dev, uint64_t id, const char *name)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
port = spdk_scsi_dev_find_free_port(dev);
|
port = scsi_dev_find_free_port(dev);
|
||||||
if (port == NULL) {
|
if (port == NULL) {
|
||||||
assert(false);
|
assert(false);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -51,7 +51,7 @@ spdk_scsi_lun_complete_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *ta
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_scsi_lun_complete_mgmt_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task)
|
scsi_lun_complete_mgmt_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
TAILQ_REMOVE(&lun->mgmt_tasks, task, scsi_link);
|
TAILQ_REMOVE(&lun->mgmt_tasks, task, scsi_link);
|
||||||
|
|
||||||
@ -62,24 +62,24 @@ spdk_scsi_lun_complete_mgmt_task(struct spdk_scsi_lun *lun, struct spdk_scsi_tas
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
spdk_scsi_lun_has_outstanding_tasks(struct spdk_scsi_lun *lun)
|
scsi_lun_has_outstanding_tasks(struct spdk_scsi_lun *lun)
|
||||||
{
|
{
|
||||||
return !TAILQ_EMPTY(&lun->tasks);
|
return !TAILQ_EMPTY(&lun->tasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset task have to wait until all prior outstanding tasks complete. */
|
/* Reset task have to wait until all prior outstanding tasks complete. */
|
||||||
static int
|
static int
|
||||||
spdk_scsi_lun_reset_check_outstanding_tasks(void *arg)
|
scsi_lun_reset_check_outstanding_tasks(void *arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_task *task = (struct spdk_scsi_task *)arg;
|
struct spdk_scsi_task *task = (struct spdk_scsi_task *)arg;
|
||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
|
|
||||||
if (spdk_scsi_lun_has_outstanding_tasks(lun)) {
|
if (scsi_lun_has_outstanding_tasks(lun)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
spdk_poller_unregister(&lun->reset_poller);
|
spdk_poller_unregister(&lun->reset_poller);
|
||||||
|
|
||||||
spdk_scsi_lun_complete_mgmt_task(lun, task);
|
scsi_lun_complete_mgmt_task(lun, task);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,20 +87,20 @@ void
|
|||||||
spdk_scsi_lun_complete_reset_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task)
|
spdk_scsi_lun_complete_reset_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
if (task->status == SPDK_SCSI_STATUS_GOOD) {
|
if (task->status == SPDK_SCSI_STATUS_GOOD) {
|
||||||
if (spdk_scsi_lun_has_outstanding_tasks(lun)) {
|
if (scsi_lun_has_outstanding_tasks(lun)) {
|
||||||
lun->reset_poller =
|
lun->reset_poller =
|
||||||
spdk_poller_register(spdk_scsi_lun_reset_check_outstanding_tasks,
|
spdk_poller_register(scsi_lun_reset_check_outstanding_tasks,
|
||||||
task, 10);
|
task, 10);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_scsi_lun_complete_mgmt_task(lun, task);
|
scsi_lun_complete_mgmt_task(lun, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_spdk_scsi_lun_execute_mgmt_task(struct spdk_scsi_lun *lun,
|
_scsi_lun_execute_mgmt_task(struct spdk_scsi_lun *lun,
|
||||||
struct spdk_scsi_task *task)
|
struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
TAILQ_INSERT_TAIL(&lun->mgmt_tasks, task, scsi_link);
|
TAILQ_INSERT_TAIL(&lun->mgmt_tasks, task, scsi_link);
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ _spdk_scsi_lun_execute_mgmt_task(struct spdk_scsi_lun *lun,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_scsi_lun_complete_mgmt_task(lun, task);
|
scsi_lun_complete_mgmt_task(lun, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -157,11 +157,11 @@ spdk_scsi_lun_execute_mgmt_task(struct spdk_scsi_lun *lun)
|
|||||||
}
|
}
|
||||||
TAILQ_REMOVE(&lun->pending_mgmt_tasks, task, scsi_link);
|
TAILQ_REMOVE(&lun->pending_mgmt_tasks, task, scsi_link);
|
||||||
|
|
||||||
_spdk_scsi_lun_execute_mgmt_task(lun, task);
|
_scsi_lun_execute_mgmt_task(lun, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_spdk_scsi_lun_execute_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task)
|
_scsi_lun_execute_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -207,12 +207,12 @@ spdk_scsi_lun_execute_tasks(struct spdk_scsi_lun *lun)
|
|||||||
|
|
||||||
TAILQ_FOREACH_SAFE(task, &lun->pending_tasks, scsi_link, task_tmp) {
|
TAILQ_FOREACH_SAFE(task, &lun->pending_tasks, scsi_link, task_tmp) {
|
||||||
TAILQ_REMOVE(&lun->pending_tasks, task, scsi_link);
|
TAILQ_REMOVE(&lun->pending_tasks, task, scsi_link);
|
||||||
_spdk_scsi_lun_execute_task(lun, task);
|
_scsi_lun_execute_task(lun, task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_scsi_lun_remove(struct spdk_scsi_lun *lun)
|
scsi_lun_remove(struct spdk_scsi_lun *lun)
|
||||||
{
|
{
|
||||||
spdk_bdev_close(lun->bdev_desc);
|
spdk_bdev_close(lun->bdev_desc);
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ spdk_scsi_lun_remove(struct spdk_scsi_lun *lun)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_scsi_lun_check_io_channel(void *arg)
|
scsi_lun_check_io_channel(void *arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)arg;
|
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)arg;
|
||||||
|
|
||||||
@ -230,12 +230,12 @@ spdk_scsi_lun_check_io_channel(void *arg)
|
|||||||
}
|
}
|
||||||
spdk_poller_unregister(&lun->hotremove_poller);
|
spdk_poller_unregister(&lun->hotremove_poller);
|
||||||
|
|
||||||
spdk_scsi_lun_remove(lun);
|
scsi_lun_remove(lun);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_scsi_lun_notify_hot_remove(struct spdk_scsi_lun *lun)
|
scsi_lun_notify_hot_remove(struct spdk_scsi_lun *lun)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_desc *desc, *tmp;
|
struct spdk_scsi_desc *desc, *tmp;
|
||||||
|
|
||||||
@ -252,15 +252,15 @@ spdk_scsi_lun_notify_hot_remove(struct spdk_scsi_lun *lun)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (lun->io_channel) {
|
if (lun->io_channel) {
|
||||||
lun->hotremove_poller = spdk_poller_register(spdk_scsi_lun_check_io_channel,
|
lun->hotremove_poller = spdk_poller_register(scsi_lun_check_io_channel,
|
||||||
lun, 10);
|
lun, 10);
|
||||||
} else {
|
} else {
|
||||||
spdk_scsi_lun_remove(lun);
|
scsi_lun_remove(lun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_scsi_lun_check_pending_tasks(void *arg)
|
scsi_lun_check_pending_tasks(void *arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)arg;
|
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)arg;
|
||||||
|
|
||||||
@ -270,26 +270,26 @@ spdk_scsi_lun_check_pending_tasks(void *arg)
|
|||||||
}
|
}
|
||||||
spdk_poller_unregister(&lun->hotremove_poller);
|
spdk_poller_unregister(&lun->hotremove_poller);
|
||||||
|
|
||||||
spdk_scsi_lun_notify_hot_remove(lun);
|
scsi_lun_notify_hot_remove(lun);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_spdk_scsi_lun_hot_remove(void *arg1)
|
_scsi_lun_hot_remove(void *arg1)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = arg1;
|
struct spdk_scsi_lun *lun = arg1;
|
||||||
|
|
||||||
if (spdk_scsi_lun_has_pending_tasks(lun) ||
|
if (spdk_scsi_lun_has_pending_tasks(lun) ||
|
||||||
spdk_scsi_lun_has_pending_mgmt_tasks(lun)) {
|
spdk_scsi_lun_has_pending_mgmt_tasks(lun)) {
|
||||||
lun->hotremove_poller = spdk_poller_register(spdk_scsi_lun_check_pending_tasks,
|
lun->hotremove_poller = spdk_poller_register(scsi_lun_check_pending_tasks,
|
||||||
lun, 10);
|
lun, 10);
|
||||||
} else {
|
} else {
|
||||||
spdk_scsi_lun_notify_hot_remove(lun);
|
scsi_lun_notify_hot_remove(lun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_scsi_lun_hot_remove(void *remove_ctx)
|
scsi_lun_hot_remove(void *remove_ctx)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)remove_ctx;
|
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)remove_ctx;
|
||||||
struct spdk_thread *thread;
|
struct spdk_thread *thread;
|
||||||
@ -300,15 +300,15 @@ spdk_scsi_lun_hot_remove(void *remove_ctx)
|
|||||||
|
|
||||||
lun->removed = true;
|
lun->removed = true;
|
||||||
if (lun->io_channel == NULL) {
|
if (lun->io_channel == NULL) {
|
||||||
_spdk_scsi_lun_hot_remove(lun);
|
_scsi_lun_hot_remove(lun);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
thread = spdk_io_channel_get_thread(lun->io_channel);
|
thread = spdk_io_channel_get_thread(lun->io_channel);
|
||||||
if (thread != spdk_get_thread()) {
|
if (thread != spdk_get_thread()) {
|
||||||
spdk_thread_send_msg(thread, _spdk_scsi_lun_hot_remove, lun);
|
spdk_thread_send_msg(thread, _scsi_lun_hot_remove, lun);
|
||||||
} else {
|
} else {
|
||||||
_spdk_scsi_lun_hot_remove(lun);
|
_scsi_lun_hot_remove(lun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ spdk_scsi_lun_construct(struct spdk_bdev *bdev,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = spdk_bdev_open(bdev, true, spdk_scsi_lun_hot_remove, lun, &lun->bdev_desc);
|
rc = spdk_bdev_open(bdev, true, scsi_lun_hot_remove, lun, &lun->bdev_desc);
|
||||||
|
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
SPDK_ERRLOG("bdev %s cannot be opened, error=%d\n", spdk_bdev_get_name(bdev), rc);
|
SPDK_ERRLOG("bdev %s cannot be opened, error=%d\n", spdk_bdev_get_name(bdev), rc);
|
||||||
@ -364,7 +364,7 @@ spdk_scsi_lun_construct(struct spdk_bdev *bdev,
|
|||||||
void
|
void
|
||||||
spdk_scsi_lun_destruct(struct spdk_scsi_lun *lun)
|
spdk_scsi_lun_destruct(struct spdk_scsi_lun *lun)
|
||||||
{
|
{
|
||||||
spdk_scsi_lun_hot_remove(lun);
|
scsi_lun_hot_remove(lun);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -60,10 +60,10 @@
|
|||||||
#define INQUIRY_OFFSET(field) offsetof(struct spdk_scsi_cdb_inquiry_data, field) + \
|
#define INQUIRY_OFFSET(field) offsetof(struct spdk_scsi_cdb_inquiry_data, field) + \
|
||||||
sizeof(((struct spdk_scsi_cdb_inquiry_data *)0x0)->field)
|
sizeof(((struct spdk_scsi_cdb_inquiry_data *)0x0)->field)
|
||||||
|
|
||||||
static void spdk_bdev_scsi_process_block_resubmit(void *arg);
|
static void bdev_scsi_process_block_resubmit(void *arg);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_hex2bin(char ch)
|
hex2bin(char ch)
|
||||||
{
|
{
|
||||||
if ((ch >= '0') && (ch <= '9')) {
|
if ((ch >= '0') && (ch <= '9')) {
|
||||||
return ch - '0';
|
return ch - '0';
|
||||||
@ -76,13 +76,13 @@ spdk_hex2bin(char ch)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_set_naa_ieee_extended(const char *name, uint8_t *buf)
|
bdev_scsi_set_naa_ieee_extended(const char *name, uint8_t *buf)
|
||||||
{
|
{
|
||||||
int i, value, count = 0;
|
int i, value, count = 0;
|
||||||
uint64_t local_value;
|
uint64_t local_value;
|
||||||
|
|
||||||
for (i = 0; (i < 16) && (name[i] != '\0'); i++) {
|
for (i = 0; (i < 16) && (name[i] != '\0'); i++) {
|
||||||
value = spdk_hex2bin(name[i]);
|
value = hex2bin(name[i]);
|
||||||
if (i % 2) {
|
if (i % 2) {
|
||||||
buf[count++] |= value << 4;
|
buf[count++] |= value << 4;
|
||||||
} else {
|
} else {
|
||||||
@ -103,8 +103,8 @@ spdk_bdev_scsi_set_naa_ieee_extended(const char *name, uint8_t *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_report_luns(struct spdk_scsi_lun *lun,
|
bdev_scsi_report_luns(struct spdk_scsi_lun *lun,
|
||||||
int sel, uint8_t *data, int alloc_len)
|
int sel, uint8_t *data, int alloc_len)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_dev *dev;
|
struct spdk_scsi_dev *dev;
|
||||||
uint64_t fmt_lun, lun_id, method;
|
uint64_t fmt_lun, lun_id, method;
|
||||||
@ -172,7 +172,7 @@ spdk_bdev_scsi_report_luns(struct spdk_scsi_lun *lun,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_pad_scsi_name(char *dst, const char *name)
|
bdev_scsi_pad_scsi_name(char *dst, const char *name)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
@ -186,8 +186,8 @@ spdk_bdev_scsi_pad_scsi_name(char *dst, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
||||||
uint8_t *cdb, uint8_t *data, uint16_t alloc_len)
|
uint8_t *cdb, uint8_t *data, uint16_t alloc_len)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun;
|
struct spdk_scsi_lun *lun;
|
||||||
struct spdk_scsi_dev *dev;
|
struct spdk_scsi_dev *dev;
|
||||||
@ -311,7 +311,7 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
|||||||
desig->piv = 1;
|
desig->piv = 1;
|
||||||
desig->reserved1 = 0;
|
desig->reserved1 = 0;
|
||||||
desig->len = 8;
|
desig->len = 8;
|
||||||
spdk_bdev_scsi_set_naa_ieee_extended(name, desig->desig);
|
bdev_scsi_set_naa_ieee_extended(name, desig->desig);
|
||||||
len = sizeof(struct spdk_scsi_desig_desc) + 8;
|
len = sizeof(struct spdk_scsi_desig_desc) + 8;
|
||||||
|
|
||||||
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len;
|
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len;
|
||||||
@ -342,7 +342,7 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
|
|||||||
desig->reserved0 = 0;
|
desig->reserved0 = 0;
|
||||||
desig->piv = 1;
|
desig->piv = 1;
|
||||||
desig->reserved1 = 0;
|
desig->reserved1 = 0;
|
||||||
desig->len = spdk_bdev_scsi_pad_scsi_name(desig->desig, dev->name);
|
desig->len = bdev_scsi_pad_scsi_name(desig->desig, dev->name);
|
||||||
len += sizeof(struct spdk_scsi_desig_desc) + desig->len;
|
len += sizeof(struct spdk_scsi_desig_desc) + desig->len;
|
||||||
|
|
||||||
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len;
|
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len;
|
||||||
@ -823,9 +823,9 @@ mode_sense_page_init(uint8_t *buf, int len, int page, int subpage)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_mode_sense_page(struct spdk_bdev *bdev,
|
bdev_scsi_mode_sense_page(struct spdk_bdev *bdev,
|
||||||
uint8_t *cdb, int pc, int page, int subpage,
|
uint8_t *cdb, int pc, int page, int subpage,
|
||||||
uint8_t *data, struct spdk_scsi_task *task)
|
uint8_t *data, struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
uint8_t *cp = data;
|
uint8_t *cp = data;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
@ -945,14 +945,14 @@ spdk_bdev_scsi_mode_sense_page(struct spdk_bdev *bdev,
|
|||||||
break;
|
break;
|
||||||
case 0xff:
|
case 0xff:
|
||||||
/* All subpages */
|
/* All subpages */
|
||||||
len += spdk_bdev_scsi_mode_sense_page(bdev,
|
len += bdev_scsi_mode_sense_page(bdev,
|
||||||
cdb, pc, page,
|
cdb, pc, page,
|
||||||
0x00,
|
0x00,
|
||||||
cp ? &cp[len] : NULL, task);
|
cp ? &cp[len] : NULL, task);
|
||||||
len += spdk_bdev_scsi_mode_sense_page(bdev,
|
len += bdev_scsi_mode_sense_page(bdev,
|
||||||
cdb, pc, page,
|
cdb, pc, page,
|
||||||
0x01,
|
0x01,
|
||||||
cp ? &cp[len] : NULL, task);
|
cp ? &cp[len] : NULL, task);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* 0x02-0x3e: Reserved */
|
/* 0x02-0x3e: Reserved */
|
||||||
@ -1070,7 +1070,7 @@ spdk_bdev_scsi_mode_sense_page(struct spdk_bdev *bdev,
|
|||||||
case 0x00:
|
case 0x00:
|
||||||
/* All mode pages */
|
/* All mode pages */
|
||||||
for (i = 0x00; i < 0x3e; i ++) {
|
for (i = 0x00; i < 0x3e; i ++) {
|
||||||
len += spdk_bdev_scsi_mode_sense_page(
|
len += bdev_scsi_mode_sense_page(
|
||||||
bdev, cdb, pc, i, 0x00,
|
bdev, cdb, pc, i, 0x00,
|
||||||
cp ? &cp[len] : NULL, task);
|
cp ? &cp[len] : NULL, task);
|
||||||
}
|
}
|
||||||
@ -1078,12 +1078,12 @@ spdk_bdev_scsi_mode_sense_page(struct spdk_bdev *bdev,
|
|||||||
case 0xff:
|
case 0xff:
|
||||||
/* All mode pages and subpages */
|
/* All mode pages and subpages */
|
||||||
for (i = 0x00; i < 0x3e; i ++) {
|
for (i = 0x00; i < 0x3e; i ++) {
|
||||||
len += spdk_bdev_scsi_mode_sense_page(
|
len += bdev_scsi_mode_sense_page(
|
||||||
bdev, cdb, pc, i, 0x00,
|
bdev, cdb, pc, i, 0x00,
|
||||||
cp ? &cp[len] : NULL, task);
|
cp ? &cp[len] : NULL, task);
|
||||||
}
|
}
|
||||||
for (i = 0x00; i < 0x3e; i ++) {
|
for (i = 0x00; i < 0x3e; i ++) {
|
||||||
len += spdk_bdev_scsi_mode_sense_page(
|
len += bdev_scsi_mode_sense_page(
|
||||||
bdev, cdb, pc, i, 0xff,
|
bdev, cdb, pc, i, 0xff,
|
||||||
cp ? &cp[len] : NULL, task);
|
cp ? &cp[len] : NULL, task);
|
||||||
}
|
}
|
||||||
@ -1098,9 +1098,9 @@ spdk_bdev_scsi_mode_sense_page(struct spdk_bdev *bdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_mode_sense(struct spdk_bdev *bdev, int md,
|
bdev_scsi_mode_sense(struct spdk_bdev *bdev, int md,
|
||||||
uint8_t *cdb, int dbd, int llbaa, int pc,
|
uint8_t *cdb, int dbd, int llbaa, int pc,
|
||||||
int page, int subpage, uint8_t *data, struct spdk_scsi_task *task)
|
int page, int subpage, uint8_t *data, struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
uint64_t num_blocks = spdk_bdev_get_num_blocks(bdev);
|
uint64_t num_blocks = spdk_bdev_get_num_blocks(bdev);
|
||||||
uint32_t block_size = spdk_bdev_get_data_block_size(bdev);
|
uint32_t block_size = spdk_bdev_get_data_block_size(bdev);
|
||||||
@ -1124,9 +1124,9 @@ spdk_bdev_scsi_mode_sense(struct spdk_bdev *bdev, int md,
|
|||||||
}
|
}
|
||||||
|
|
||||||
pages = data ? &data[hlen + blen] : NULL;
|
pages = data ? &data[hlen + blen] : NULL;
|
||||||
plen = spdk_bdev_scsi_mode_sense_page(bdev, cdb, pc, page,
|
plen = bdev_scsi_mode_sense_page(bdev, cdb, pc, page,
|
||||||
subpage,
|
subpage,
|
||||||
pages, task);
|
pages, task);
|
||||||
if (plen < 0) {
|
if (plen < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1175,9 +1175,9 @@ spdk_bdev_scsi_mode_sense(struct spdk_bdev *bdev, int md,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_mode_select_page(struct spdk_bdev *bdev,
|
bdev_scsi_mode_select_page(struct spdk_bdev *bdev,
|
||||||
uint8_t *cdb, int pf, int sp,
|
uint8_t *cdb, int pf, int sp,
|
||||||
uint8_t *data, size_t len)
|
uint8_t *data, size_t len)
|
||||||
{
|
{
|
||||||
size_t hlen, plen;
|
size_t hlen, plen;
|
||||||
int spf, page, subpage;
|
int spf, page, subpage;
|
||||||
@ -1260,7 +1260,7 @@ spdk_bdev_scsi_mode_select_page(struct spdk_bdev *bdev,
|
|||||||
|
|
||||||
len -= plen;
|
len -= plen;
|
||||||
if (len != 0) {
|
if (len != 0) {
|
||||||
rc = spdk_bdev_scsi_mode_select_page(bdev, cdb, pf, sp, &data[plen], len);
|
rc = bdev_scsi_mode_select_page(bdev, cdb, pf, sp, &data[plen], len);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -1269,8 +1269,8 @@ spdk_bdev_scsi_mode_select_page(struct spdk_bdev *bdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_task_complete_cmd(struct spdk_bdev_io *bdev_io, bool success,
|
bdev_scsi_task_complete_cmd(struct spdk_bdev_io *bdev_io, bool success,
|
||||||
void *cb_arg)
|
void *cb_arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_task *task = cb_arg;
|
struct spdk_scsi_task *task = cb_arg;
|
||||||
int sc, sk, asc, ascq;
|
int sc, sk, asc, ascq;
|
||||||
@ -1283,8 +1283,8 @@ spdk_bdev_scsi_task_complete_cmd(struct spdk_bdev_io *bdev_io, bool success,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_task_complete_reset(struct spdk_bdev_io *bdev_io, bool success,
|
bdev_scsi_task_complete_reset(struct spdk_bdev_io *bdev_io, bool success,
|
||||||
void *cb_arg)
|
void *cb_arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_task *task = cb_arg;
|
struct spdk_scsi_task *task = cb_arg;
|
||||||
|
|
||||||
@ -1298,7 +1298,7 @@ spdk_bdev_scsi_task_complete_reset(struct spdk_bdev_io *bdev_io, bool success,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_queue_io(struct spdk_scsi_task *task, spdk_bdev_io_wait_cb cb_fn, void *cb_arg)
|
bdev_scsi_queue_io(struct spdk_scsi_task *task, spdk_bdev_io_wait_cb cb_fn, void *cb_arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
struct spdk_bdev *bdev = lun->bdev;
|
struct spdk_bdev *bdev = lun->bdev;
|
||||||
@ -1316,9 +1316,9 @@ spdk_bdev_scsi_queue_io(struct spdk_scsi_task *task, spdk_bdev_io_wait_cb cb_fn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
||||||
struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task,
|
struct spdk_io_channel *bdev_ch, 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;
|
||||||
int rc;
|
int rc;
|
||||||
@ -1340,11 +1340,11 @@ spdk_bdev_scsi_sync(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rc = spdk_bdev_flush_blocks(bdev_desc, bdev_ch, lba, num_blocks,
|
rc = spdk_bdev_flush_blocks(bdev_desc, bdev_ch, lba, num_blocks,
|
||||||
spdk_bdev_scsi_task_complete_cmd, task);
|
bdev_scsi_task_complete_cmd, task);
|
||||||
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
if (rc == -ENOMEM) {
|
if (rc == -ENOMEM) {
|
||||||
spdk_bdev_scsi_queue_io(task, spdk_bdev_scsi_process_block_resubmit, task);
|
bdev_scsi_queue_io(task, bdev_scsi_process_block_resubmit, task);
|
||||||
return SPDK_SCSI_TASK_PENDING;
|
return SPDK_SCSI_TASK_PENDING;
|
||||||
}
|
}
|
||||||
SPDK_ERRLOG("spdk_bdev_flush_blocks() failed\n");
|
SPDK_ERRLOG("spdk_bdev_flush_blocks() failed\n");
|
||||||
@ -1379,8 +1379,8 @@ _bytes_to_blocks(uint32_t block_size, uint64_t offset_bytes, uint64_t *offset_bl
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_readwrite(struct spdk_scsi_task *task,
|
bdev_scsi_readwrite(struct spdk_scsi_task *task,
|
||||||
uint64_t lba, uint32_t xfer_len, bool is_read)
|
uint64_t lba, uint32_t xfer_len, bool is_read)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
struct spdk_bdev *bdev = lun->bdev;
|
struct spdk_bdev *bdev = lun->bdev;
|
||||||
@ -1463,16 +1463,16 @@ spdk_bdev_scsi_readwrite(struct spdk_scsi_task *task,
|
|||||||
if (is_read) {
|
if (is_read) {
|
||||||
rc = spdk_bdev_readv_blocks(bdev_desc, bdev_ch, task->iovs, task->iovcnt,
|
rc = spdk_bdev_readv_blocks(bdev_desc, bdev_ch, task->iovs, task->iovcnt,
|
||||||
offset_blocks, num_blocks,
|
offset_blocks, num_blocks,
|
||||||
spdk_bdev_scsi_task_complete_cmd, task);
|
bdev_scsi_task_complete_cmd, task);
|
||||||
} else {
|
} else {
|
||||||
rc = spdk_bdev_writev_blocks(bdev_desc, bdev_ch, task->iovs, task->iovcnt,
|
rc = spdk_bdev_writev_blocks(bdev_desc, bdev_ch, task->iovs, task->iovcnt,
|
||||||
offset_blocks, num_blocks,
|
offset_blocks, num_blocks,
|
||||||
spdk_bdev_scsi_task_complete_cmd, task);
|
bdev_scsi_task_complete_cmd, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
if (rc == -ENOMEM) {
|
if (rc == -ENOMEM) {
|
||||||
spdk_bdev_scsi_queue_io(task, spdk_bdev_scsi_process_block_resubmit, task);
|
bdev_scsi_queue_io(task, bdev_scsi_process_block_resubmit, task);
|
||||||
return SPDK_SCSI_TASK_PENDING;
|
return SPDK_SCSI_TASK_PENDING;
|
||||||
}
|
}
|
||||||
SPDK_ERRLOG("spdk_bdev_%s_blocks() failed\n", is_read ? "readv" : "writev");
|
SPDK_ERRLOG("spdk_bdev_%s_blocks() failed\n", is_read ? "readv" : "writev");
|
||||||
@ -1493,12 +1493,13 @@ struct spdk_bdev_scsi_unmap_ctx {
|
|||||||
uint32_t count;
|
uint32_t count;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
static int bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
||||||
struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task, struct spdk_bdev_scsi_unmap_ctx *ctx);
|
struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task,
|
||||||
|
struct spdk_bdev_scsi_unmap_ctx *ctx);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_task_complete_unmap_cmd(struct spdk_bdev_io *bdev_io, bool success,
|
bdev_scsi_task_complete_unmap_cmd(struct spdk_bdev_io *bdev_io, bool success,
|
||||||
void *cb_arg)
|
void *cb_arg)
|
||||||
{
|
{
|
||||||
struct spdk_bdev_scsi_unmap_ctx *ctx = cb_arg;
|
struct spdk_bdev_scsi_unmap_ctx *ctx = cb_arg;
|
||||||
struct spdk_scsi_task *task = ctx->task;
|
struct spdk_scsi_task *task = ctx->task;
|
||||||
@ -1554,18 +1555,19 @@ __copy_desc(struct spdk_bdev_scsi_unmap_ctx *ctx, uint8_t *data, size_t data_len
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_unmap_resubmit(void *arg)
|
bdev_scsi_unmap_resubmit(void *arg)
|
||||||
{
|
{
|
||||||
struct spdk_bdev_scsi_unmap_ctx *ctx = arg;
|
struct spdk_bdev_scsi_unmap_ctx *ctx = arg;
|
||||||
struct spdk_scsi_task *task = ctx->task;
|
struct spdk_scsi_task *task = ctx->task;
|
||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
|
|
||||||
spdk_bdev_scsi_unmap(lun->bdev, lun->bdev_desc, lun->io_channel, task, ctx);
|
bdev_scsi_unmap(lun->bdev, lun->bdev_desc, lun->io_channel, task, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
||||||
struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task, struct spdk_bdev_scsi_unmap_ctx *ctx)
|
struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task,
|
||||||
|
struct spdk_bdev_scsi_unmap_ctx *ctx)
|
||||||
{
|
{
|
||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
int i, desc_count = -1;
|
int i, desc_count = -1;
|
||||||
@ -1626,11 +1628,11 @@ spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
|||||||
|
|
||||||
ctx->count++;
|
ctx->count++;
|
||||||
rc = spdk_bdev_unmap_blocks(bdev_desc, bdev_ch, offset_blocks, num_blocks,
|
rc = spdk_bdev_unmap_blocks(bdev_desc, bdev_ch, offset_blocks, num_blocks,
|
||||||
spdk_bdev_scsi_task_complete_unmap_cmd, ctx);
|
bdev_scsi_task_complete_unmap_cmd, ctx);
|
||||||
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
if (rc == -ENOMEM) {
|
if (rc == -ENOMEM) {
|
||||||
spdk_bdev_scsi_queue_io(task, spdk_bdev_scsi_unmap_resubmit, ctx);
|
bdev_scsi_queue_io(task, bdev_scsi_unmap_resubmit, ctx);
|
||||||
/* Unmap was not yet submitted to bdev */
|
/* Unmap was not yet submitted to bdev */
|
||||||
ctx->count--;
|
ctx->count--;
|
||||||
return SPDK_SCSI_TASK_PENDING;
|
return SPDK_SCSI_TASK_PENDING;
|
||||||
@ -1656,7 +1658,7 @@ spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_process_block(struct spdk_scsi_task *task)
|
bdev_scsi_process_block(struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
struct spdk_bdev *bdev = lun->bdev;
|
struct spdk_bdev *bdev = lun->bdev;
|
||||||
@ -1676,28 +1678,28 @@ spdk_bdev_scsi_process_block(struct spdk_scsi_task *task)
|
|||||||
if (xfer_len == 0) {
|
if (xfer_len == 0) {
|
||||||
xfer_len = 256;
|
xfer_len = 256;
|
||||||
}
|
}
|
||||||
return spdk_bdev_scsi_readwrite(task, lba, xfer_len,
|
return bdev_scsi_readwrite(task, lba, xfer_len,
|
||||||
cdb[0] == SPDK_SBC_READ_6);
|
cdb[0] == SPDK_SBC_READ_6);
|
||||||
|
|
||||||
case SPDK_SBC_READ_10:
|
case SPDK_SBC_READ_10:
|
||||||
case SPDK_SBC_WRITE_10:
|
case SPDK_SBC_WRITE_10:
|
||||||
lba = from_be32(&cdb[2]);
|
lba = from_be32(&cdb[2]);
|
||||||
xfer_len = from_be16(&cdb[7]);
|
xfer_len = from_be16(&cdb[7]);
|
||||||
return spdk_bdev_scsi_readwrite(task, lba, xfer_len,
|
return bdev_scsi_readwrite(task, lba, xfer_len,
|
||||||
cdb[0] == SPDK_SBC_READ_10);
|
cdb[0] == SPDK_SBC_READ_10);
|
||||||
|
|
||||||
case SPDK_SBC_READ_12:
|
case SPDK_SBC_READ_12:
|
||||||
case SPDK_SBC_WRITE_12:
|
case SPDK_SBC_WRITE_12:
|
||||||
lba = from_be32(&cdb[2]);
|
lba = from_be32(&cdb[2]);
|
||||||
xfer_len = from_be32(&cdb[6]);
|
xfer_len = from_be32(&cdb[6]);
|
||||||
return spdk_bdev_scsi_readwrite(task, lba, xfer_len,
|
return bdev_scsi_readwrite(task, lba, xfer_len,
|
||||||
cdb[0] == SPDK_SBC_READ_12);
|
cdb[0] == SPDK_SBC_READ_12);
|
||||||
case SPDK_SBC_READ_16:
|
case SPDK_SBC_READ_16:
|
||||||
case SPDK_SBC_WRITE_16:
|
case SPDK_SBC_WRITE_16:
|
||||||
lba = from_be64(&cdb[2]);
|
lba = from_be64(&cdb[2]);
|
||||||
xfer_len = from_be32(&cdb[10]);
|
xfer_len = from_be32(&cdb[10]);
|
||||||
return spdk_bdev_scsi_readwrite(task, lba, xfer_len,
|
return bdev_scsi_readwrite(task, lba, xfer_len,
|
||||||
cdb[0] == SPDK_SBC_READ_16);
|
cdb[0] == SPDK_SBC_READ_16);
|
||||||
|
|
||||||
case SPDK_SBC_READ_CAPACITY_10: {
|
case SPDK_SBC_READ_CAPACITY_10: {
|
||||||
uint64_t num_blocks = spdk_bdev_get_num_blocks(bdev);
|
uint64_t num_blocks = spdk_bdev_get_num_blocks(bdev);
|
||||||
@ -1765,11 +1767,11 @@ spdk_bdev_scsi_process_block(struct spdk_scsi_task *task)
|
|||||||
len = spdk_bdev_get_num_blocks(bdev) - lba;
|
len = spdk_bdev_get_num_blocks(bdev) - lba;
|
||||||
}
|
}
|
||||||
|
|
||||||
return spdk_bdev_scsi_sync(bdev, lun->bdev_desc, lun->io_channel, task, lba, len);
|
return bdev_scsi_sync(bdev, lun->bdev_desc, lun->io_channel, task, lba, len);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPDK_SBC_UNMAP:
|
case SPDK_SBC_UNMAP:
|
||||||
return spdk_bdev_scsi_unmap(bdev, lun->bdev_desc, lun->io_channel, task, NULL);
|
return bdev_scsi_unmap(bdev, lun->bdev_desc, lun->io_channel, task, NULL);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return SPDK_SCSI_TASK_UNKNOWN;
|
return SPDK_SCSI_TASK_UNKNOWN;
|
||||||
@ -1779,15 +1781,15 @@ spdk_bdev_scsi_process_block(struct spdk_scsi_task *task)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_process_block_resubmit(void *arg)
|
bdev_scsi_process_block_resubmit(void *arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_task *task = arg;
|
struct spdk_scsi_task *task = arg;
|
||||||
|
|
||||||
spdk_bdev_scsi_process_block(task);
|
bdev_scsi_process_block(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_check_len(struct spdk_scsi_task *task, int len, int min_len)
|
bdev_scsi_check_len(struct spdk_scsi_task *task, int len, int min_len)
|
||||||
{
|
{
|
||||||
if (len >= min_len) {
|
if (len >= min_len) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -1802,7 +1804,7 @@ spdk_bdev_scsi_check_len(struct spdk_scsi_task *task, int len, int min_len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
struct spdk_bdev *bdev = lun->bdev;
|
struct spdk_bdev *bdev = lun->bdev;
|
||||||
@ -1824,7 +1826,7 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
data_len = spdk_max(4096, alloc_len);
|
data_len = spdk_max(4096, alloc_len);
|
||||||
data = spdk_dma_zmalloc(data_len, 0, NULL);
|
data = spdk_dma_zmalloc(data_len, 0, NULL);
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
rc = spdk_bdev_scsi_inquiry(bdev, task, cdb, data, data_len);
|
rc = bdev_scsi_inquiry(bdev, task, cdb, data, data_len);
|
||||||
data_len = spdk_min(rc, data_len);
|
data_len = spdk_min(rc, data_len);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
break;
|
break;
|
||||||
@ -1840,7 +1842,7 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
SPDK_DEBUGLOG(SPDK_LOG_SCSI, "sel=%x\n", sel);
|
SPDK_DEBUGLOG(SPDK_LOG_SCSI, "sel=%x\n", sel);
|
||||||
|
|
||||||
alloc_len = from_be32(&cdb[6]);
|
alloc_len = from_be32(&cdb[6]);
|
||||||
rc = spdk_bdev_scsi_check_len(task, alloc_len, 16);
|
rc = bdev_scsi_check_len(task, alloc_len, 16);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1848,7 +1850,7 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
data_len = spdk_max(4096, alloc_len);
|
data_len = spdk_max(4096, alloc_len);
|
||||||
data = spdk_dma_zmalloc(data_len, 0, NULL);
|
data = spdk_dma_zmalloc(data_len, 0, NULL);
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
rc = spdk_bdev_scsi_report_luns(task->lun, sel, data, data_len);
|
rc = bdev_scsi_report_luns(task->lun, sel, data, data_len);
|
||||||
data_len = rc;
|
data_len = rc;
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
||||||
@ -1878,7 +1880,7 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = spdk_bdev_scsi_check_len(task, pllen, md);
|
rc = bdev_scsi_check_len(task, pllen, md);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1890,13 +1892,13 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
|
|
||||||
data_len = rc;
|
data_len = rc;
|
||||||
if (cdb[0] == SPDK_SPC_MODE_SELECT_6) {
|
if (cdb[0] == SPDK_SPC_MODE_SELECT_6) {
|
||||||
rc = spdk_bdev_scsi_check_len(task, data_len, 4);
|
rc = bdev_scsi_check_len(task, data_len, 4);
|
||||||
if (rc >= 0) {
|
if (rc >= 0) {
|
||||||
bdlen = data[3];
|
bdlen = data[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
rc = spdk_bdev_scsi_check_len(task, data_len, 8);
|
rc = bdev_scsi_check_len(task, data_len, 8);
|
||||||
if (rc >= 0) {
|
if (rc >= 0) {
|
||||||
bdlen = from_be16(&data[6]);
|
bdlen = from_be16(&data[6]);
|
||||||
}
|
}
|
||||||
@ -1909,7 +1911,7 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
sp = !!(cdb[1] & 0x1);
|
sp = !!(cdb[1] & 0x1);
|
||||||
|
|
||||||
/* page data */
|
/* page data */
|
||||||
rc = spdk_bdev_scsi_mode_select_page(
|
rc = bdev_scsi_mode_select_page(
|
||||||
bdev, cdb,
|
bdev, cdb,
|
||||||
pf, sp,
|
pf, sp,
|
||||||
&data[md + bdlen],
|
&data[md + bdlen],
|
||||||
@ -1945,10 +1947,10 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
subpage = cdb[3];
|
subpage = cdb[3];
|
||||||
|
|
||||||
/* First call with no buffer to discover needed buffer size */
|
/* First call with no buffer to discover needed buffer size */
|
||||||
rc = spdk_bdev_scsi_mode_sense(bdev, md,
|
rc = bdev_scsi_mode_sense(bdev, md,
|
||||||
cdb, dbd, llba, pc,
|
cdb, dbd, llba, pc,
|
||||||
page, subpage,
|
page, subpage,
|
||||||
NULL, task);
|
NULL, task);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1958,10 +1960,10 @@ spdk_bdev_scsi_process_primary(struct spdk_scsi_task *task)
|
|||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
/* First call with no buffer to discover needed buffer size */
|
/* First call with no buffer to discover needed buffer size */
|
||||||
rc = spdk_bdev_scsi_mode_sense(bdev, md,
|
rc = bdev_scsi_mode_sense(bdev, md,
|
||||||
cdb, dbd, llba, pc,
|
cdb, dbd, llba, pc,
|
||||||
page, subpage,
|
page, subpage,
|
||||||
data, task);
|
data, task);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
/* INVALID FIELD IN CDB */
|
/* INVALID FIELD IN CDB */
|
||||||
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
||||||
@ -2058,8 +2060,8 @@ spdk_bdev_scsi_execute(struct spdk_scsi_task *task)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if ((rc = spdk_bdev_scsi_process_block(task)) == SPDK_SCSI_TASK_UNKNOWN) {
|
if ((rc = bdev_scsi_process_block(task)) == SPDK_SCSI_TASK_UNKNOWN) {
|
||||||
if ((rc = spdk_bdev_scsi_process_primary(task)) == SPDK_SCSI_TASK_UNKNOWN) {
|
if ((rc = bdev_scsi_process_primary(task)) == SPDK_SCSI_TASK_UNKNOWN) {
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_SCSI, "unsupported SCSI OP=0x%x\n", task->cdb[0]);
|
SPDK_DEBUGLOG(SPDK_LOG_SCSI, "unsupported SCSI OP=0x%x\n", task->cdb[0]);
|
||||||
/* INVALID COMMAND OPERATION CODE */
|
/* INVALID COMMAND OPERATION CODE */
|
||||||
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
|
||||||
@ -2074,7 +2076,7 @@ spdk_bdev_scsi_execute(struct spdk_scsi_task *task)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_bdev_scsi_reset_resubmit(void *arg)
|
bdev_scsi_reset_resubmit(void *arg)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_task *task = arg;
|
struct spdk_scsi_task *task = arg;
|
||||||
|
|
||||||
@ -2087,10 +2089,10 @@ spdk_bdev_scsi_reset(struct spdk_scsi_task *task)
|
|||||||
struct spdk_scsi_lun *lun = task->lun;
|
struct spdk_scsi_lun *lun = task->lun;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = spdk_bdev_reset(lun->bdev_desc, lun->io_channel, spdk_bdev_scsi_task_complete_reset,
|
rc = spdk_bdev_reset(lun->bdev_desc, lun->io_channel, bdev_scsi_task_complete_reset,
|
||||||
task);
|
task);
|
||||||
if (rc == -ENOMEM) {
|
if (rc == -ENOMEM) {
|
||||||
spdk_bdev_scsi_queue_io(task, spdk_bdev_scsi_reset_resubmit, task);
|
bdev_scsi_queue_io(task, bdev_scsi_reset_resubmit, task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include "spdk/util.h"
|
#include "spdk/util.h"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_scsi_task_free_data(struct spdk_scsi_task *task);
|
scsi_task_free_data(struct spdk_scsi_task *task);
|
||||||
|
|
||||||
void
|
void
|
||||||
spdk_scsi_task_put(struct spdk_scsi_task *task)
|
spdk_scsi_task_put(struct spdk_scsi_task *task)
|
||||||
@ -56,7 +56,7 @@ spdk_scsi_task_put(struct spdk_scsi_task *task)
|
|||||||
spdk_bdev_free_io(bdev_io);
|
spdk_bdev_free_io(bdev_io);
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_scsi_task_free_data(task);
|
scsi_task_free_data(task);
|
||||||
|
|
||||||
task->free_fn(task);
|
task->free_fn(task);
|
||||||
}
|
}
|
||||||
@ -85,7 +85,7 @@ spdk_scsi_task_construct(struct spdk_scsi_task *task,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_scsi_task_free_data(struct spdk_scsi_task *task)
|
scsi_task_free_data(struct spdk_scsi_task *task)
|
||||||
{
|
{
|
||||||
if (task->alloc_len != 0) {
|
if (task->alloc_len != 0) {
|
||||||
spdk_dma_free(task->iov.iov_base);
|
spdk_dma_free(task->iov.iov_base);
|
||||||
@ -97,7 +97,7 @@ spdk_scsi_task_free_data(struct spdk_scsi_task *task)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
spdk_scsi_task_alloc_data(struct spdk_scsi_task *task, uint32_t alloc_len)
|
scsi_task_alloc_data(struct spdk_scsi_task *task, uint32_t alloc_len)
|
||||||
{
|
{
|
||||||
assert(task->alloc_len == 0);
|
assert(task->alloc_len == 0);
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ spdk_scsi_task_scatter_data(struct spdk_scsi_task *task, const void *src, size_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (task->iovcnt == 1 && iovs[0].iov_base == NULL) {
|
if (task->iovcnt == 1 && iovs[0].iov_base == NULL) {
|
||||||
spdk_scsi_task_alloc_data(task, buf_len);
|
scsi_task_alloc_data(task, buf_len);
|
||||||
iovs[0] = task->iov;
|
iovs[0] = task->iov;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ lun_reset_task_wait_scsi_task_complete(void)
|
|||||||
CU_ASSERT(lun->reset_poller != NULL);
|
CU_ASSERT(lun->reset_poller != NULL);
|
||||||
|
|
||||||
/* Execute the poller to check if the task prior to the reset task complete. */
|
/* Execute the poller to check if the task prior to the reset task complete. */
|
||||||
spdk_scsi_lun_reset_check_outstanding_tasks(&mgmt_task);
|
scsi_lun_reset_check_outstanding_tasks(&mgmt_task);
|
||||||
|
|
||||||
CU_ASSERT(!TAILQ_EMPTY(&lun->mgmt_tasks));
|
CU_ASSERT(!TAILQ_EMPTY(&lun->mgmt_tasks));
|
||||||
CU_ASSERT(lun->reset_poller != NULL);
|
CU_ASSERT(lun->reset_poller != NULL);
|
||||||
@ -536,7 +536,7 @@ lun_reset_task_wait_scsi_task_complete(void)
|
|||||||
CU_ASSERT(TAILQ_EMPTY(&lun->tasks));
|
CU_ASSERT(TAILQ_EMPTY(&lun->tasks));
|
||||||
|
|
||||||
/* Execute the poller to check if the task prior to the reset task complete. */
|
/* Execute the poller to check if the task prior to the reset task complete. */
|
||||||
spdk_scsi_lun_reset_check_outstanding_tasks(&mgmt_task);
|
scsi_lun_reset_check_outstanding_tasks(&mgmt_task);
|
||||||
|
|
||||||
CU_ASSERT(TAILQ_EMPTY(&lun->mgmt_tasks));
|
CU_ASSERT(TAILQ_EMPTY(&lun->mgmt_tasks));
|
||||||
CU_ASSERT(lun->reset_poller == NULL);
|
CU_ASSERT(lun->reset_poller == NULL);
|
||||||
|
@ -591,7 +591,7 @@ scsi_name_padding_test(void)
|
|||||||
/* case 1 */
|
/* case 1 */
|
||||||
memset(name, '\0', sizeof(name));
|
memset(name, '\0', sizeof(name));
|
||||||
memset(name, 'x', 251);
|
memset(name, 'x', 251);
|
||||||
written = spdk_bdev_scsi_pad_scsi_name(buf, name);
|
written = bdev_scsi_pad_scsi_name(buf, name);
|
||||||
|
|
||||||
CU_ASSERT(written == 252);
|
CU_ASSERT(written == 252);
|
||||||
CU_ASSERT(buf[250] == 'x');
|
CU_ASSERT(buf[250] == 'x');
|
||||||
@ -600,7 +600,7 @@ scsi_name_padding_test(void)
|
|||||||
/* case 2: */
|
/* case 2: */
|
||||||
memset(name, '\0', sizeof(name));
|
memset(name, '\0', sizeof(name));
|
||||||
memset(name, 'x', 252);
|
memset(name, 'x', 252);
|
||||||
written = spdk_bdev_scsi_pad_scsi_name(buf, name);
|
written = bdev_scsi_pad_scsi_name(buf, name);
|
||||||
|
|
||||||
CU_ASSERT(written == 256);
|
CU_ASSERT(written == 256);
|
||||||
CU_ASSERT(buf[251] == 'x');
|
CU_ASSERT(buf[251] == 'x');
|
||||||
@ -611,7 +611,7 @@ scsi_name_padding_test(void)
|
|||||||
/* case 3 */
|
/* case 3 */
|
||||||
memset(name, '\0', sizeof(name));
|
memset(name, '\0', sizeof(name));
|
||||||
memset(name, 'x', 255);
|
memset(name, 'x', 255);
|
||||||
written = spdk_bdev_scsi_pad_scsi_name(buf, name);
|
written = bdev_scsi_pad_scsi_name(buf, name);
|
||||||
|
|
||||||
CU_ASSERT(written == 256);
|
CU_ASSERT(written == 256);
|
||||||
CU_ASSERT(buf[254] == 'x');
|
CU_ASSERT(buf[254] == 'x');
|
||||||
@ -635,7 +635,7 @@ task_complete_test(void)
|
|||||||
task.lun = &lun;
|
task.lun = &lun;
|
||||||
|
|
||||||
bdev_io.internal.status = SPDK_BDEV_IO_STATUS_SUCCESS;
|
bdev_io.internal.status = SPDK_BDEV_IO_STATUS_SUCCESS;
|
||||||
spdk_bdev_scsi_task_complete_cmd(&bdev_io, bdev_io.internal.status, &task);
|
bdev_scsi_task_complete_cmd(&bdev_io, bdev_io.internal.status, &task);
|
||||||
CU_ASSERT_EQUAL(task.status, SPDK_SCSI_STATUS_GOOD);
|
CU_ASSERT_EQUAL(task.status, SPDK_SCSI_STATUS_GOOD);
|
||||||
CU_ASSERT(g_scsi_cb_called == 1);
|
CU_ASSERT(g_scsi_cb_called == 1);
|
||||||
g_scsi_cb_called = 0;
|
g_scsi_cb_called = 0;
|
||||||
@ -645,7 +645,7 @@ task_complete_test(void)
|
|||||||
bdev_io.internal.error.scsi.sk = SPDK_SCSI_SENSE_HARDWARE_ERROR;
|
bdev_io.internal.error.scsi.sk = SPDK_SCSI_SENSE_HARDWARE_ERROR;
|
||||||
bdev_io.internal.error.scsi.asc = SPDK_SCSI_ASC_WARNING;
|
bdev_io.internal.error.scsi.asc = SPDK_SCSI_ASC_WARNING;
|
||||||
bdev_io.internal.error.scsi.ascq = SPDK_SCSI_ASCQ_POWER_LOSS_EXPECTED;
|
bdev_io.internal.error.scsi.ascq = SPDK_SCSI_ASCQ_POWER_LOSS_EXPECTED;
|
||||||
spdk_bdev_scsi_task_complete_cmd(&bdev_io, bdev_io.internal.status, &task);
|
bdev_scsi_task_complete_cmd(&bdev_io, bdev_io.internal.status, &task);
|
||||||
CU_ASSERT_EQUAL(task.status, SPDK_SCSI_STATUS_CHECK_CONDITION);
|
CU_ASSERT_EQUAL(task.status, SPDK_SCSI_STATUS_CHECK_CONDITION);
|
||||||
CU_ASSERT_EQUAL(task.sense_data[2] & 0xf, SPDK_SCSI_SENSE_HARDWARE_ERROR);
|
CU_ASSERT_EQUAL(task.sense_data[2] & 0xf, SPDK_SCSI_SENSE_HARDWARE_ERROR);
|
||||||
CU_ASSERT_EQUAL(task.sense_data[12], SPDK_SCSI_ASC_WARNING);
|
CU_ASSERT_EQUAL(task.sense_data[12], SPDK_SCSI_ASC_WARNING);
|
||||||
@ -654,7 +654,7 @@ task_complete_test(void)
|
|||||||
g_scsi_cb_called = 0;
|
g_scsi_cb_called = 0;
|
||||||
|
|
||||||
bdev_io.internal.status = SPDK_BDEV_IO_STATUS_FAILED;
|
bdev_io.internal.status = SPDK_BDEV_IO_STATUS_FAILED;
|
||||||
spdk_bdev_scsi_task_complete_cmd(&bdev_io, bdev_io.internal.status, &task);
|
bdev_scsi_task_complete_cmd(&bdev_io, bdev_io.internal.status, &task);
|
||||||
CU_ASSERT_EQUAL(task.status, SPDK_SCSI_STATUS_CHECK_CONDITION);
|
CU_ASSERT_EQUAL(task.status, SPDK_SCSI_STATUS_CHECK_CONDITION);
|
||||||
CU_ASSERT_EQUAL(task.sense_data[2] & 0xf, SPDK_SCSI_SENSE_ABORTED_COMMAND);
|
CU_ASSERT_EQUAL(task.sense_data[2] & 0xf, SPDK_SCSI_SENSE_ABORTED_COMMAND);
|
||||||
CU_ASSERT_EQUAL(task.sense_data[12], SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
|
CU_ASSERT_EQUAL(task.sense_data[12], SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE);
|
||||||
|
Loading…
Reference in New Issue
Block a user