Loading include/spdk/scsi.h +5 −12 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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); Loading lib/iscsi/iscsi.c +2 −8 Original line number Diff line number Diff line Loading @@ -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"); Loading Loading @@ -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 */ Loading lib/iscsi/iscsi_rpc.c +8 −5 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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); } } Loading lib/iscsi/iscsi_subsystem.c +11 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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, Loading lib/iscsi/tgt_node.c +7 −4 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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(), Loading Loading
include/spdk/scsi.h +5 −12 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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); Loading
lib/iscsi/iscsi.c +2 −8 Original line number Diff line number Diff line Loading @@ -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"); Loading Loading @@ -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 */ Loading
lib/iscsi/iscsi_rpc.c +8 −5 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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); } } Loading
lib/iscsi/iscsi_subsystem.c +11 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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, Loading
lib/iscsi/tgt_node.c +7 −4 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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(), Loading