scsi: make spdk_scsi_dev definition private
Change-Id: I62b36a22e11e845045f190886ae00aa644f96ec6 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
2686067166
commit
a3738d9031
@ -170,18 +170,7 @@ struct spdk_scsi_port {
|
||||
char name[SPDK_SCSI_PORT_MAX_NAME_LENGTH];
|
||||
};
|
||||
|
||||
struct spdk_scsi_dev {
|
||||
int id;
|
||||
int is_allocated;
|
||||
|
||||
char name[SPDK_SCSI_DEV_MAX_NAME];
|
||||
|
||||
int maxlun;
|
||||
struct spdk_scsi_lun *lun[SPDK_SCSI_DEV_MAX_LUN];
|
||||
|
||||
int num_ports;
|
||||
struct spdk_scsi_port port[SPDK_SCSI_DEV_MAX_PORTS];
|
||||
};
|
||||
struct spdk_scsi_dev;
|
||||
|
||||
/**
|
||||
* \brief Represents a SCSI LUN.
|
||||
@ -197,6 +186,10 @@ struct spdk_scsi_lun;
|
||||
int spdk_scsi_lun_get_id(const struct spdk_scsi_lun *lun);
|
||||
const char *spdk_scsi_lun_get_name(const struct spdk_scsi_lun *lun);
|
||||
|
||||
const char *spdk_scsi_dev_get_name(const struct spdk_scsi_dev *dev);
|
||||
int spdk_scsi_dev_get_id(const struct spdk_scsi_dev *dev);
|
||||
int spdk_scsi_dev_get_max_lun(const struct spdk_scsi_dev *dev);
|
||||
struct spdk_scsi_lun *spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id);
|
||||
void spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev);
|
||||
void spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev, struct spdk_scsi_task *task);
|
||||
void spdk_scsi_dev_queue_task(struct spdk_scsi_dev *dev, struct spdk_scsi_task *task);
|
||||
|
@ -2961,11 +2961,7 @@ spdk_iscsi_op_scsi(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)
|
||||
spdk_iscsi_task_associate_pdu(task, pdu);
|
||||
lun_i = spdk_islun2lun(lun);
|
||||
dev = conn->dev;
|
||||
if (lun_i < dev->maxlun && lun_i < SPDK_SCSI_DEV_MAX_LUN) {
|
||||
task->scsi.lun = dev->lun[lun_i];
|
||||
} else {
|
||||
task->scsi.lun = NULL;
|
||||
}
|
||||
task->scsi.lun = spdk_scsi_dev_get_lun(dev, lun_i);
|
||||
|
||||
if ((R_bit != 0) && (W_bit != 0)) {
|
||||
SPDK_ERRLOG("Bidirectional CDB is not supported\n");
|
||||
@ -3283,9 +3279,7 @@ spdk_iscsi_op_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)
|
||||
task->scsi.target_port = conn->target_port;
|
||||
task->scsi.initiator_port = conn->initiator_port;
|
||||
task->scsi.id = task_tag;
|
||||
if (lun_i < dev->maxlun && lun_i < SPDK_SCSI_DEV_MAX_LUN) {
|
||||
task->scsi.lun = dev->lun[lun_i];
|
||||
}
|
||||
task->scsi.lun = spdk_scsi_dev_get_lun(dev, lun_i);
|
||||
|
||||
switch (function) {
|
||||
/* abort task identified by Referenced Task Tag field */
|
||||
|
@ -299,7 +299,7 @@ spdk_rpc_get_target_nodes(struct spdk_jsonrpc_server_conn *conn,
|
||||
struct spdk_iscsi_globals *iscsi = &g_spdk_iscsi;
|
||||
struct spdk_json_write_ctx *w;
|
||||
size_t tgt_idx;
|
||||
int i;
|
||||
int i, maxlun;
|
||||
|
||||
if (params != NULL) {
|
||||
spdk_jsonrpc_send_error_response(conn, id, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||
@ -345,13 +345,16 @@ spdk_rpc_get_target_nodes(struct spdk_jsonrpc_server_conn *conn,
|
||||
|
||||
spdk_json_write_name(w, "luns");
|
||||
spdk_json_write_array_begin(w);
|
||||
for (i = 0; i < tgtnode->dev->maxlun; i++) {
|
||||
if (tgtnode->dev->lun[i]) {
|
||||
maxlun = spdk_scsi_dev_get_max_lun(tgtnode->dev);
|
||||
for (i = 0; i < maxlun; i++) {
|
||||
struct spdk_scsi_lun *lun = spdk_scsi_dev_get_lun(tgtnode->dev, i);
|
||||
|
||||
if (lun) {
|
||||
spdk_json_write_object_begin(w);
|
||||
spdk_json_write_name(w, "name");
|
||||
spdk_json_write_string(w, spdk_scsi_lun_get_name(tgtnode->dev->lun[i]));
|
||||
spdk_json_write_string(w, spdk_scsi_lun_get_name(lun));
|
||||
spdk_json_write_name(w, "id");
|
||||
spdk_json_write_int32(w, spdk_scsi_lun_get_id(tgtnode->dev->lun[i]));
|
||||
spdk_json_write_int32(w, spdk_scsi_lun_get_id(lun));
|
||||
spdk_json_write_object_end(w);
|
||||
}
|
||||
}
|
||||
|
@ -234,6 +234,7 @@ static void
|
||||
spdk_iscsi_config_dump_target_nodes(FILE *fp)
|
||||
{
|
||||
int t = 0, l = 0, m = 0;
|
||||
int maxlun;
|
||||
struct spdk_scsi_dev *dev = NULL;
|
||||
struct spdk_iscsi_tgt_node *target = NULL;
|
||||
|
||||
@ -250,7 +251,7 @@ spdk_iscsi_config_dump_target_nodes(FILE *fp)
|
||||
if (NULL == dev) continue;
|
||||
|
||||
idx = target->num;
|
||||
fprintf(fp, TARGET_NODE_TMPL, idx, idx, target->name, dev->name);
|
||||
fprintf(fp, TARGET_NODE_TMPL, idx, idx, target->name, spdk_scsi_dev_get_name(dev));
|
||||
|
||||
for (m = 0; m < target->maxmap; m++) {
|
||||
if (NULL == target->map[m].pg) continue;
|
||||
@ -285,12 +286,17 @@ spdk_iscsi_config_dump_target_nodes(FILE *fp)
|
||||
fprintf(fp, TARGET_NODE_AUTH_TMPL,
|
||||
authmethod, authgroup, usedigest);
|
||||
|
||||
for (l = 0; l < dev->maxlun; l++) {
|
||||
if (NULL == dev->lun[l]) continue;
|
||||
maxlun = spdk_scsi_dev_get_max_lun(dev);
|
||||
for (l = 0; l < maxlun; l++) {
|
||||
struct spdk_scsi_lun *lun = spdk_scsi_dev_get_lun(dev, l);
|
||||
|
||||
if (!lun) {
|
||||
continue;
|
||||
}
|
||||
|
||||
fprintf(fp, TARGET_NODE_LUN_TMPL,
|
||||
spdk_scsi_lun_get_id(dev->lun[l]),
|
||||
spdk_scsi_lun_get_name(dev->lun[l]));
|
||||
spdk_scsi_lun_get_id(lun),
|
||||
spdk_scsi_lun_get_name(lun));
|
||||
}
|
||||
|
||||
fprintf(fp, TARGET_NODE_QD_TMPL,
|
||||
|
@ -1067,11 +1067,14 @@ int
|
||||
spdk_iscsi_tgt_node_cleanup_luns(struct spdk_iscsi_conn *conn,
|
||||
struct spdk_iscsi_tgt_node *target)
|
||||
{
|
||||
int i;
|
||||
int i, maxlun;
|
||||
struct spdk_iscsi_task *task;
|
||||
|
||||
for (i = 0; i < target->dev->maxlun; i++) {
|
||||
if (!target->dev->lun[i])
|
||||
maxlun = spdk_scsi_dev_get_max_lun(target->dev);
|
||||
for (i = 0; i < maxlun; i++) {
|
||||
struct spdk_scsi_lun *lun = spdk_scsi_dev_get_lun(target->dev, i);
|
||||
|
||||
if (!lun)
|
||||
continue;
|
||||
|
||||
/* we create a fake management task per LUN to cleanup */
|
||||
@ -1084,7 +1087,7 @@ spdk_iscsi_tgt_node_cleanup_luns(struct spdk_iscsi_conn *conn,
|
||||
task->scsi.type = SPDK_SCSI_TASK_TYPE_MANAGE;
|
||||
task->scsi.target_port = conn->target_port;
|
||||
task->scsi.initiator_port = conn->initiator_port;
|
||||
task->scsi.lun = target->dev->lun[i];
|
||||
task->scsi.lun = lun;
|
||||
task->scsi.function = SPDK_SCSI_TASK_FUNC_LUN_RESET;
|
||||
|
||||
task->scsi.cb_event = spdk_event_allocate(spdk_env_get_current_core(),
|
||||
|
@ -304,3 +304,31 @@ spdk_scsi_dev_allocate_io_channels(struct spdk_scsi_dev *dev)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *
|
||||
spdk_scsi_dev_get_name(const struct spdk_scsi_dev *dev)
|
||||
{
|
||||
return dev->name;
|
||||
}
|
||||
|
||||
int
|
||||
spdk_scsi_dev_get_id(const struct spdk_scsi_dev *dev)
|
||||
{
|
||||
return dev->id;
|
||||
}
|
||||
|
||||
int
|
||||
spdk_scsi_dev_get_max_lun(const struct spdk_scsi_dev *dev)
|
||||
{
|
||||
return dev->maxlun;
|
||||
}
|
||||
|
||||
struct spdk_scsi_lun *
|
||||
spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id)
|
||||
{
|
||||
if (lun_id < 0 || lun_id > dev->maxlun) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return dev->lun[lun_id];
|
||||
}
|
||||
|
@ -62,6 +62,19 @@ enum {
|
||||
SPDK_SCSI_TASK_PENDING,
|
||||
};
|
||||
|
||||
struct spdk_scsi_dev {
|
||||
int id;
|
||||
int is_allocated;
|
||||
|
||||
char name[SPDK_SCSI_DEV_MAX_NAME];
|
||||
|
||||
int maxlun;
|
||||
struct spdk_scsi_lun *lun[SPDK_SCSI_DEV_MAX_LUN];
|
||||
|
||||
int num_ports;
|
||||
struct spdk_scsi_port port[SPDK_SCSI_DEV_MAX_PORTS];
|
||||
};
|
||||
|
||||
struct spdk_scsi_lun {
|
||||
/** LUN id for this logical unit. */
|
||||
int id;
|
||||
|
@ -303,7 +303,11 @@ get_scsi_lun(struct spdk_scsi_dev *scsi_dev, const __u8 *lun)
|
||||
uint16_t lun_id = (((uint16_t)lun[2] << 8) | lun[3]) & 0x3FFF;
|
||||
|
||||
/* For now only one LUN per controller is allowed so no need to search LUN IDs */
|
||||
return likely(scsi_dev != NULL && lun_id < scsi_dev->maxlun) ? scsi_dev->lun[lun_id] : NULL;
|
||||
if (likely(scsi_dev != NULL)) {
|
||||
return spdk_scsi_dev_get_lun(scsi_dev, lun_id);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -43,27 +43,31 @@
|
||||
static void
|
||||
json_scsi_dev_write(struct spdk_json_write_ctx *ctx, struct spdk_scsi_dev *dev)
|
||||
{
|
||||
int l;
|
||||
int l, maxlun;
|
||||
|
||||
spdk_json_write_name(ctx, "id");
|
||||
spdk_json_write_int32(ctx, (int32_t)dev->id);
|
||||
spdk_json_write_int32(ctx, spdk_scsi_dev_get_id(dev));
|
||||
|
||||
spdk_json_write_name(ctx, "device_name");
|
||||
spdk_json_write_string(ctx, dev->name);
|
||||
spdk_json_write_string(ctx, spdk_scsi_dev_get_name(dev));
|
||||
|
||||
spdk_json_write_name(ctx, "luns");
|
||||
spdk_json_write_array_begin(ctx);
|
||||
for (l = 0; l < dev->maxlun; l++) {
|
||||
if (NULL == dev->lun[l])
|
||||
maxlun = spdk_scsi_dev_get_max_lun(dev);
|
||||
for (l = 0; l < maxlun; l++) {
|
||||
struct spdk_scsi_lun *lun = spdk_scsi_dev_get_lun(dev, l);
|
||||
|
||||
if (!lun) {
|
||||
continue;
|
||||
}
|
||||
|
||||
spdk_json_write_object_begin(ctx);
|
||||
|
||||
spdk_json_write_name(ctx, "id");
|
||||
spdk_json_write_int32(ctx, spdk_scsi_lun_get_id(dev->lun[l]));
|
||||
spdk_json_write_int32(ctx, spdk_scsi_lun_get_id(lun));
|
||||
|
||||
spdk_json_write_name(ctx, "name");
|
||||
spdk_json_write_string(ctx, spdk_scsi_lun_get_name(dev->lun[l]));
|
||||
spdk_json_write_string(ctx, spdk_scsi_lun_get_name(lun));
|
||||
|
||||
spdk_json_write_object_end(ctx);
|
||||
}
|
||||
|
@ -89,6 +89,16 @@ spdk_scsi_lun_get_id(const struct spdk_scsi_lun *lun)
|
||||
return lun->id;
|
||||
}
|
||||
|
||||
struct spdk_scsi_lun *
|
||||
spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id)
|
||||
{
|
||||
if (lun_id < 0 || lun_id > dev->maxlun) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return dev->lun[lun_id];
|
||||
}
|
||||
|
||||
static void
|
||||
maxburstlength_test(void)
|
||||
{
|
||||
|
@ -41,6 +41,7 @@
|
||||
|
||||
#include "../common.c"
|
||||
#include "iscsi/tgt_node.c"
|
||||
#include "scsi/scsi_internal.h"
|
||||
|
||||
struct spdk_iscsi_globals g_spdk_iscsi;
|
||||
|
||||
@ -64,6 +65,22 @@ spdk_iscsi_portal_grp_find_by_tag(int tag)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
spdk_scsi_dev_get_max_lun(const struct spdk_scsi_dev *dev)
|
||||
{
|
||||
return dev->maxlun;
|
||||
}
|
||||
|
||||
struct spdk_scsi_lun *
|
||||
spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id)
|
||||
{
|
||||
if (lun_id < 0 || lun_id > dev->maxlun) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return dev->lun[lun_id];
|
||||
}
|
||||
|
||||
static void
|
||||
config_file_fail_cases(void)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user