diff --git a/include/spdk/scsi.h b/include/spdk/scsi.h index 6725ba1f7..3e34601b7 100644 --- a/include/spdk/scsi.h +++ b/include/spdk/scsi.h @@ -61,8 +61,6 @@ extern "C" { #define SPDK_SCSI_PORT_MAX_NAME_LENGTH 255 -#define SPDK_SCSI_LUN_MAX_NAME_LENGTH 64 - enum spdk_scsi_data_dir { SPDK_SCSI_DIR_NONE = 0, SPDK_SCSI_DIR_TO_DEV = 1, @@ -153,7 +151,7 @@ int spdk_scsi_init(void); void spdk_scsi_fini(void); 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_lun_get_bdev_name(const struct spdk_scsi_lun *lun); const struct spdk_scsi_dev *spdk_scsi_lun_get_dev(const struct spdk_scsi_lun *lun); const char *spdk_scsi_dev_get_name(const struct spdk_scsi_dev *dev); @@ -174,10 +172,8 @@ void spdk_scsi_dev_free_io_channels(struct spdk_scsi_dev *dev); * \brief Constructs a SCSI device object using the given parameters. * * \param name Name for the SCSI device. - * \param queue_depth Queue depth for the SCSI device. This queue depth is - * a combined queue depth for all LUNs in the device. - * \param lun_list List of LUN objects for the SCSI device. Caller is - * responsible for managing the memory containing this list. + * \param bdev_name_list List of bdev names to attach to the LUNs for this SCSI + * device. * \param lun_id_list List of LUN IDs for the LUN in this SCSI device. Caller is * responsible for managing the memory containing this list. * lun_id_list[x] is the LUN ID for lun_list[x]. @@ -188,7 +184,7 @@ void spdk_scsi_dev_free_io_channels(struct spdk_scsi_dev *dev); * \return The constructed spdk_scsi_dev object. */ struct spdk_scsi_dev *spdk_scsi_dev_construct(const char *name, - char *lun_name_list[], + const char *bdev_name_list[], int *lun_id_list, int num_luns, uint8_t protocol_id, diff --git a/include/spdk/vhost.h b/include/spdk/vhost.h index 0ce98f430..b0482d136 100644 --- a/include/spdk/vhost.h +++ b/include/spdk/vhost.h @@ -175,11 +175,11 @@ int spdk_vhost_scsi_dev_remove(struct spdk_vhost_dev *vdev); * * \param vdev vhost SCSI device * \param scsi_tgt_num slot to attach to - * \param lun_name name of the SPDK bdev to associate with SCSI LUN0 + * \param bdev_name name of the SPDK bdev to associate with SCSI LUN0 * \return 0 on success, negative errno on error. */ int spdk_vhost_scsi_dev_add_tgt(struct spdk_vhost_dev *vdev, unsigned scsi_tgt_num, - const char *lun_name); + const char *bdev_name); /** * Get SCSI target from vhost SCSI device on given slot. Max diff --git a/lib/iscsi/iscsi_rpc.c b/lib/iscsi/iscsi_rpc.c index ed85aefd2..71f78fcfe 100644 --- a/lib/iscsi/iscsi_rpc.c +++ b/lib/iscsi/iscsi_rpc.c @@ -305,8 +305,8 @@ spdk_rpc_get_target_nodes(struct spdk_jsonrpc_request *request, if (lun) { spdk_json_write_object_begin(w); - spdk_json_write_name(w, "name"); - spdk_json_write_string(w, spdk_scsi_lun_get_name(lun)); + spdk_json_write_name(w, "bdev_name"); + spdk_json_write_string(w, spdk_scsi_lun_get_bdev_name(lun)); spdk_json_write_name(w, "id"); spdk_json_write_int32(w, spdk_scsi_lun_get_id(lun)); spdk_json_write_object_end(w); @@ -371,23 +371,23 @@ decode_rpc_ig_tags(const struct spdk_json_val *val, void *out) #define RPC_CONSTRUCT_TARGET_NODE_MAX_LUN 64 -struct rpc_lun_names { +struct rpc_bdev_names { size_t num_names; char *names[RPC_CONSTRUCT_TARGET_NODE_MAX_LUN]; }; static int -decode_rpc_lun_names(const struct spdk_json_val *val, void *out) +decode_rpc_bdev_names(const struct spdk_json_val *val, void *out) { - struct rpc_lun_names *lun_names = out; + struct rpc_bdev_names *bdev_names = out; - return spdk_json_decode_array(val, spdk_json_decode_string, lun_names->names, + return spdk_json_decode_array(val, spdk_json_decode_string, bdev_names->names, RPC_CONSTRUCT_TARGET_NODE_MAX_LUN, - &lun_names->num_names, sizeof(char *)); + &bdev_names->num_names, sizeof(char *)); } static void -free_rpc_lun_names(struct rpc_lun_names *r) +free_rpc_bdev_names(struct rpc_bdev_names *r) { size_t i; @@ -418,7 +418,7 @@ struct rpc_target_node { struct rpc_pg_tags pg_tags; struct rpc_ig_tags ig_tags; - struct rpc_lun_names lun_names; + struct rpc_bdev_names bdev_names; struct rpc_lun_ids lun_ids; int32_t queue_depth; @@ -433,7 +433,7 @@ free_rpc_target_node(struct rpc_target_node *req) { free(req->name); free(req->alias_name); - free_rpc_lun_names(&req->lun_names); + free_rpc_bdev_names(&req->bdev_names); } static const struct spdk_json_object_decoder rpc_target_node_decoders[] = { @@ -441,7 +441,7 @@ static const struct spdk_json_object_decoder rpc_target_node_decoders[] = { {"alias_name", offsetof(struct rpc_target_node, alias_name), spdk_json_decode_string}, {"pg_tags", offsetof(struct rpc_target_node, pg_tags), decode_rpc_pg_tags}, {"ig_tags", offsetof(struct rpc_target_node, ig_tags), decode_rpc_ig_tags}, - {"lun_names", offsetof(struct rpc_target_node, lun_names), decode_rpc_lun_names}, + {"bdev_names", offsetof(struct rpc_target_node, bdev_names), decode_rpc_bdev_names}, {"lun_ids", offsetof(struct rpc_target_node, lun_ids), decode_rpc_lun_ids}, {"queue_depth", offsetof(struct rpc_target_node, queue_depth), spdk_json_decode_int32}, {"chap_disabled", offsetof(struct rpc_target_node, chap_disabled), spdk_json_decode_int32}, @@ -470,8 +470,8 @@ spdk_rpc_construct_target_node(struct spdk_jsonrpc_request *request, goto invalid; } - if (req.lun_names.num_names != req.lun_ids.num_ids) { - SPDK_ERRLOG("lun_names/lun_ids count mismatch\n"); + if (req.bdev_names.num_names != req.lun_ids.num_ids) { + SPDK_ERRLOG("bdev_names/lun_ids count mismatch\n"); goto invalid; } @@ -485,9 +485,9 @@ spdk_rpc_construct_target_node(struct spdk_jsonrpc_request *request, req.pg_tags.tags, req.ig_tags.tags, req.pg_tags.num_tags, - req.lun_names.names, + (const char **)req.bdev_names.names, req.lun_ids.ids, - req.lun_names.num_names, + req.bdev_names.num_names, req.queue_depth, req.chap_disabled, req.chap_required, diff --git a/lib/iscsi/iscsi_subsystem.c b/lib/iscsi/iscsi_subsystem.c index 98c3c87e3..b82085276 100644 --- a/lib/iscsi/iscsi_subsystem.c +++ b/lib/iscsi/iscsi_subsystem.c @@ -299,7 +299,7 @@ spdk_iscsi_config_dump_target_nodes(FILE *fp) fprintf(fp, TARGET_NODE_LUN_TMPL, spdk_scsi_lun_get_id(lun), - spdk_scsi_lun_get_name(lun)); + spdk_scsi_lun_get_bdev_name(lun)); } fprintf(fp, TARGET_NODE_QD_TMPL, diff --git a/lib/iscsi/tgt_node.c b/lib/iscsi/tgt_node.c index 4dfaed145..3268df04b 100644 --- a/lib/iscsi/tgt_node.c +++ b/lib/iscsi/tgt_node.c @@ -847,7 +847,7 @@ _spdk_iscsi_tgt_node * spdk_iscsi_tgt_node_construct(int target_index, const char *name, const char *alias, int *pg_tag_list, int *ig_tag_list, uint16_t num_maps, - char *lun_name_list[], int *lun_id_list, int num_luns, + const char *bdev_name_list[], int *lun_id_list, int num_luns, int queue_depth, int auth_chap_disabled, int auth_chap_required, int auth_chap_mutual, int auth_group, int header_digest, int data_digest) @@ -920,7 +920,7 @@ spdk_iscsi_tgt_node_construct(int target_index, } } - target->dev = spdk_scsi_dev_construct(fullname, lun_name_list, lun_id_list, num_luns, + target->dev = spdk_scsi_dev_construct(fullname, bdev_name_list, lun_id_list, num_luns, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); if (!target->dev) { SPDK_ERRLOG("Could not construct SCSI device\n"); @@ -976,8 +976,7 @@ spdk_cf_add_iscsi_tgt_node(struct spdk_conf_section *sp) int auth_chap_disabled, auth_chap_required, auth_chap_mutual; int i; int lun_id_list[SPDK_SCSI_DEV_MAX_LUN]; - char lun_name_array[SPDK_SCSI_DEV_MAX_LUN][SPDK_SCSI_LUN_MAX_NAME_LENGTH] = {}; - char *lun_name_list[SPDK_SCSI_DEV_MAX_LUN]; + const char *bdev_name_list[SPDK_SCSI_DEV_MAX_LUN]; int num_luns, queue_depth; target_num = spdk_conf_section_get_num(sp); @@ -1150,8 +1149,7 @@ spdk_cf_add_iscsi_tgt_node(struct spdk_conf_section *sp) continue; } - snprintf(lun_name_array[num_luns], SPDK_SCSI_LUN_MAX_NAME_LENGTH, "%s", val); - lun_name_list[num_luns] = lun_name_array[num_luns]; + bdev_name_list[num_luns] = val; lun_id_list[num_luns] = i; num_luns++; } @@ -1163,7 +1161,7 @@ spdk_cf_add_iscsi_tgt_node(struct spdk_conf_section *sp) target = spdk_iscsi_tgt_node_construct(target_num, name, alias, pg_tag_list, ig_tag_list, num_target_maps, - lun_name_list, lun_id_list, num_luns, queue_depth, + bdev_name_list, lun_id_list, num_luns, queue_depth, auth_chap_disabled, auth_chap_required, auth_chap_mutual, auth_group, header_digest, data_digest); @@ -1180,7 +1178,7 @@ spdk_cf_add_iscsi_tgt_node(struct spdk_conf_section *sp) SPDK_INFOLOG(SPDK_LOG_ISCSI, "device %d: LUN%d %s\n", spdk_scsi_dev_get_id(target->dev), spdk_scsi_lun_get_id(lun), - spdk_scsi_lun_get_name(lun)); + spdk_scsi_lun_get_bdev_name(lun)); } } diff --git a/lib/iscsi/tgt_node.h b/lib/iscsi/tgt_node.h index e3eb20f29..8f94f13bf 100644 --- a/lib/iscsi/tgt_node.h +++ b/lib/iscsi/tgt_node.h @@ -100,11 +100,17 @@ int spdk_iscsi_send_tgts(struct spdk_iscsi_conn *conn, const char *iiqn, */ typedef struct spdk_iscsi_tgt_node _spdk_iscsi_tgt_node; +/* + * bdev_name_list and lun_id_list are equal sized arrays of size num_luns. + * bdev_name_list refers to the names of the bdevs that will be used for the LUNs on the + * new target node. + * lun_id_list refers to the LUN IDs that will be used for the LUNs on the target node. + */ _spdk_iscsi_tgt_node * spdk_iscsi_tgt_node_construct(int target_index, const char *name, const char *alias, int *pg_tag_list, int *ig_tag_list, uint16_t num_maps, - char *lun_name_list[], int *lun_id_list, int num_luns, + const char *bdev_name_list[], int *lun_id_list, int num_luns, int queue_depth, int no_auth_chap, int auth_chap, int auth_chap_mutual, int auth_group, int header_digest, int data_digest); diff --git a/lib/scsi/dev.c b/lib/scsi/dev.c index 12c4daa58..fa0f35288 100644 --- a/lib/scsi/dev.c +++ b/lib/scsi/dev.c @@ -116,8 +116,9 @@ spdk_scsi_dev_delete_lun(struct spdk_scsi_dev *dev, typedef struct spdk_scsi_dev _spdk_scsi_dev; _spdk_scsi_dev * -spdk_scsi_dev_construct(const char *name, char *lun_name_list[], int *lun_id_list, int num_luns, - uint8_t protocol_id, void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), +spdk_scsi_dev_construct(const char *name, const char *bdev_name_list[], + int *lun_id_list, int num_luns, uint8_t protocol_id, + void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), void *hotremove_ctx) { struct spdk_scsi_dev *dev; @@ -145,7 +146,7 @@ spdk_scsi_dev_construct(const char *name, char *lun_name_list[], int *lun_id_lis } for (i = 0; i < num_luns; i++) { - if (lun_name_list[i] == NULL) { + if (bdev_name_list[i] == NULL) { SPDK_ERRLOG("NULL spdk_scsi_lun for LUN %d\n", lun_id_list[i]); return NULL; @@ -163,14 +164,14 @@ spdk_scsi_dev_construct(const char *name, char *lun_name_list[], int *lun_id_lis dev->protocol_id = protocol_id; for (i = 0; i < num_luns; i++) { - bdev = spdk_bdev_get_by_name(lun_name_list[i]); + bdev = spdk_bdev_get_by_name(bdev_name_list[i]); if (bdev == NULL) { SPDK_ERRLOG("device %s: cannot find bdev '%s' (target %d)\n", - name, lun_name_list[i], i); + name, bdev_name_list[i], i); goto error; } - lun = spdk_scsi_lun_construct(spdk_bdev_get_name(bdev), bdev, hotremove_cb, hotremove_ctx); + lun = spdk_scsi_lun_construct(bdev, hotremove_cb, hotremove_ctx); if (lun == NULL) { goto error; } diff --git a/lib/scsi/lun.c b/lib/scsi/lun.c index 9c1a8e787..0f3549893 100644 --- a/lib/scsi/lun.c +++ b/lib/scsi/lun.c @@ -227,15 +227,15 @@ spdk_scsi_lun_hot_remove(void *remove_ctx) /** * \brief Constructs a new spdk_scsi_lun object based on the provided parameters. * - * \param name Name for the SCSI LUN. * \param bdev bdev associated with this LUN * * \return NULL if bdev == NULL * \return pointer to the new spdk_scsi_lun object otherwise */ _spdk_scsi_lun * -spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev, - void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), void *hotremove_ctx) +spdk_scsi_lun_construct(struct spdk_bdev *bdev, + void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), + void *hotremove_ctx) { struct spdk_scsi_lun *lun; int rc; @@ -254,7 +254,7 @@ spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev, rc = spdk_bdev_open(bdev, true, spdk_scsi_lun_hot_remove, lun, &lun->bdev_desc); if (rc != 0) { - SPDK_ERRLOG("LUN %s: bdev %s cannot be opened, error=%d\n", name, spdk_bdev_get_name(bdev), rc); + SPDK_ERRLOG("bdev %s cannot be opened, error=%d\n", spdk_bdev_get_name(bdev), rc); free(lun); return NULL; } @@ -263,7 +263,6 @@ spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev, lun->bdev = bdev; lun->io_channel = NULL; - snprintf(lun->name, sizeof(lun->name), "%s", name); lun->hotremove_cb = hotremove_cb; lun->hotremove_ctx = hotremove_ctx; @@ -308,7 +307,8 @@ int spdk_scsi_lun_allocate_io_channel(struct spdk_scsi_lun *lun) lun->ref++; return 0; } - SPDK_ERRLOG("io_channel already allocated for lun %s\n", lun->name); + SPDK_ERRLOG("io_channel already allocated for lun %s\n", + spdk_bdev_get_name(lun->bdev)); return -1; } @@ -339,9 +339,9 @@ spdk_scsi_lun_get_id(const struct spdk_scsi_lun *lun) } const char * -spdk_scsi_lun_get_name(const struct spdk_scsi_lun *lun) +spdk_scsi_lun_get_bdev_name(const struct spdk_scsi_lun *lun) { - return lun->name; + return spdk_bdev_get_name(lun->bdev); } const struct spdk_scsi_dev * diff --git a/lib/scsi/scsi_internal.h b/lib/scsi/scsi_internal.h index 62e96d8bd..94d1c3d82 100644 --- a/lib/scsi/scsi_internal.h +++ b/lib/scsi/scsi_internal.h @@ -95,9 +95,6 @@ struct spdk_scsi_lun { /** The reference number for this LUN, thus we can correctly free the io_channel */ uint32_t ref; - /** Name for this LUN. */ - char name[SPDK_SCSI_LUN_MAX_NAME_LENGTH]; - /** Poller to release the resource of the lun when it is hot removed */ struct spdk_poller *hotplug_poller; @@ -125,7 +122,7 @@ extern struct spdk_lun_db_entry *spdk_scsi_lun_list_head; */ typedef struct spdk_scsi_lun _spdk_scsi_lun; -_spdk_scsi_lun *spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev, +_spdk_scsi_lun *spdk_scsi_lun_construct(struct spdk_bdev *bdev, void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), void *hotremove_ctx); int spdk_scsi_lun_destruct(struct spdk_scsi_lun *lun); diff --git a/lib/vhost/vhost_rpc.c b/lib/vhost/vhost_rpc.c index 36c2b6f03..39a1fef6f 100644 --- a/lib/vhost/vhost_rpc.c +++ b/lib/vhost/vhost_rpc.c @@ -103,7 +103,7 @@ SPDK_RPC_REGISTER("construct_vhost_scsi_controller", spdk_rpc_construct_vhost_sc struct rpc_add_vhost_scsi_ctrlr_lun { char *ctrlr; uint32_t scsi_target_num; - char *lun_name; + char *bdev_name; struct spdk_jsonrpc_request *request; }; @@ -112,14 +112,14 @@ static void free_rpc_add_vhost_scsi_ctrlr_lun(struct rpc_add_vhost_scsi_ctrlr_lun *req) { free(req->ctrlr); - free(req->lun_name); + free(req->bdev_name); free(req); } static const struct spdk_json_object_decoder rpc_vhost_add_lun[] = { {"ctrlr", offsetof(struct rpc_add_vhost_scsi_ctrlr_lun, ctrlr), spdk_json_decode_string }, {"scsi_target_num", offsetof(struct rpc_add_vhost_scsi_ctrlr_lun, scsi_target_num), spdk_json_decode_uint32}, - {"lun_name", offsetof(struct rpc_add_vhost_scsi_ctrlr_lun, lun_name), spdk_json_decode_string }, + {"bdev_name", offsetof(struct rpc_add_vhost_scsi_ctrlr_lun, bdev_name), spdk_json_decode_string }, }; static int @@ -135,7 +135,7 @@ spdk_rpc_add_vhost_scsi_lun_cb(struct spdk_vhost_dev *vdev, void *arg) goto invalid; } - rc = spdk_vhost_scsi_dev_add_tgt(vdev, rpc->scsi_target_num, rpc->lun_name); + rc = spdk_vhost_scsi_dev_add_tgt(vdev, rpc->scsi_target_num, rpc->bdev_name); if (rc < 0) { goto invalid; } diff --git a/lib/vhost/vhost_scsi.c b/lib/vhost/vhost_scsi.c index e160d9d58..47e188a75 100644 --- a/lib/vhost/vhost_scsi.c +++ b/lib/vhost/vhost_scsi.c @@ -780,12 +780,12 @@ spdk_vhost_scsi_lun_hotremove(const struct spdk_scsi_lun *lun, void *arg) int spdk_vhost_scsi_dev_add_tgt(struct spdk_vhost_dev *vdev, unsigned scsi_tgt_num, - const char *lun_name) + const char *bdev_name) { struct spdk_vhost_scsi_dev *svdev; char target_name[SPDK_SCSI_DEV_MAX_NAME]; int lun_id_list[1]; - char *lun_names_list[1]; + const char *bdev_names_list[1]; svdev = to_scsi_dev(vdev); if (svdev == NULL) { @@ -798,12 +798,9 @@ spdk_vhost_scsi_dev_add_tgt(struct spdk_vhost_dev *vdev, unsigned scsi_tgt_num, return -EINVAL; } - if (lun_name == NULL) { + if (bdev_name == NULL) { SPDK_ERRLOG("No lun name specified \n"); return -EINVAL; - } else if (strlen(lun_name) >= SPDK_SCSI_DEV_MAX_NAME) { - SPDK_ERRLOG("LUN name '%s' too long (max %d).\n", lun_name, SPDK_SCSI_DEV_MAX_NAME - 1); - return -1; } if (vdev->lcore != -1 && !spdk_vhost_dev_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) { @@ -821,16 +818,16 @@ spdk_vhost_scsi_dev_add_tgt(struct spdk_vhost_dev *vdev, unsigned scsi_tgt_num, */ snprintf(target_name, sizeof(target_name), "Target %u", scsi_tgt_num); lun_id_list[0] = 0; - lun_names_list[0] = (char *)lun_name; + bdev_names_list[0] = (char *)bdev_name; svdev->scsi_dev_state[scsi_tgt_num].removed = false; - svdev->scsi_dev[scsi_tgt_num] = spdk_scsi_dev_construct(target_name, lun_names_list, lun_id_list, + svdev->scsi_dev[scsi_tgt_num] = spdk_scsi_dev_construct(target_name, bdev_names_list, lun_id_list, 1, SPDK_SPC_PROTOCOL_IDENTIFIER_SAS, spdk_vhost_scsi_lun_hotremove, svdev); if (svdev->scsi_dev[scsi_tgt_num] == NULL) { - SPDK_ERRLOG("Couldn't create spdk SCSI target '%s' using lun device '%s' in controller: %s\n", - target_name, lun_name, vdev->name); + SPDK_ERRLOG("Couldn't create spdk SCSI target '%s' using bdev '%s' in controller: %s\n", + target_name, bdev_name, vdev->name); return -EINVAL; } spdk_scsi_dev_add_port(svdev->scsi_dev[scsi_tgt_num], 0, "vhost"); @@ -840,8 +837,8 @@ spdk_vhost_scsi_dev_add_tgt(struct spdk_vhost_dev *vdev, unsigned scsi_tgt_num, eventq_enqueue(svdev, scsi_tgt_num, VIRTIO_SCSI_T_TRANSPORT_RESET, VIRTIO_SCSI_EVT_RESET_RESCAN); } - SPDK_NOTICELOG("Controller %s: defined target '%s' using lun '%s'\n", - vdev->name, target_name, lun_name); + SPDK_NOTICELOG("Controller %s: defined target '%s' using bdev '%s'\n", + vdev->name, target_name, bdev_name); return 0; } @@ -910,7 +907,7 @@ spdk_vhost_scsi_controller_construct(void) struct spdk_vhost_dev *vdev; int i, dev_num; unsigned ctrlr_num = 0; - char *lun_name, *tgt_num_str; + char *bdev_name, *tgt_num_str; char *cpumask; char *name; char *keyword; @@ -967,16 +964,16 @@ spdk_vhost_scsi_controller_construct(void) } dev_num = (int)strtol(tgt_num_str, NULL, 10); - lun_name = spdk_conf_section_get_nmval(sp, keyword, i, 1); - if (lun_name == NULL) { - SPDK_ERRLOG("%s: Invalid or missing LUN name for target %d\n", name, dev_num); + bdev_name = spdk_conf_section_get_nmval(sp, keyword, i, 1); + if (bdev_name == NULL) { + SPDK_ERRLOG("%s: Invalid or missing bdev name for target %d\n", name, dev_num); return -1; } else if (spdk_conf_section_get_nmval(sp, keyword, i, 2)) { SPDK_ERRLOG("%s: Only one LUN per vhost SCSI device supported\n", name); return -1; } - if (spdk_vhost_scsi_dev_add_tgt(vdev, dev_num, lun_name) < 0) { + if (spdk_vhost_scsi_dev_add_tgt(vdev, dev_num, bdev_name) < 0) { return -1; } } @@ -1199,8 +1196,8 @@ spdk_vhost_scsi_config_json(struct spdk_vhost_dev *vdev, struct spdk_json_write_ spdk_json_write_name(w, "id"); spdk_json_write_int32(w, spdk_scsi_lun_get_id(lun)); - spdk_json_write_name(w, "name"); - spdk_json_write_string(w, spdk_scsi_lun_get_name(lun)); + spdk_json_write_name(w, "bdev_name"); + spdk_json_write_string(w, spdk_scsi_lun_get_bdev_name(lun)); spdk_json_write_object_end(w); } diff --git a/scripts/rpc.py b/scripts/rpc.py index 0a76adf23..eda1e5b7e 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -105,10 +105,10 @@ p.set_defaults(func=get_target_nodes) def construct_target_node(args): - lun_name_id_dict = dict(u.split(":") - for u in args.lun_name_id_pairs.strip().split(" ")) - lun_names = lun_name_id_dict.keys() - lun_ids = list(map(int, lun_name_id_dict.values())) + bdev_name_id_dict = dict(u.split(":") + for u in args.bdev_name_id_pairs.strip().split(" ")) + bdev_names = bdev_name_id_dict.keys() + lun_ids = list(map(int, bdev_name_id_dict.values())) pg_tags = [] ig_tags = [] @@ -122,7 +122,7 @@ def construct_target_node(args): 'alias_name': args.alias_name, 'pg_tags': pg_tags, 'ig_tags': ig_tags, - 'lun_names': lun_names, + 'bdev_names': bdev_names, 'lun_ids': lun_ids, 'queue_depth': args.queue_depth, 'chap_disabled': args.chap_disabled, @@ -135,12 +135,12 @@ def construct_target_node(args): p = subparsers.add_parser('construct_target_node', help='Add a target node') p.add_argument('name', help='Target node name (ASCII)') p.add_argument('alias_name', help='Target node alias name (ASCII)') -p.add_argument('lun_name_id_pairs', help="""Whitespace-separated list of LUN pairs enclosed -in quotes. Format: 'lun_name0:id0 lun_name1:id1' etc +p.add_argument('bdev_name_id_pairs', help="""Whitespace-separated list of pairs enclosed +in quotes. Format: 'bdev_name0:id0 bdev_name1:id1' etc Example: 'Malloc0:0 Malloc1:1 Malloc5:2' -*** The LUNs must pre-exist *** +*** The bdevs must pre-exist *** *** LUN0 (id = 0) is required *** -*** LUN names cannot contain space or colon characters ***""") +*** bdev names cannot contain space or colon characters ***""") p.add_argument('pg_ig_mappings', help="""List of (Portal_Group_Tag:Initiator_Group_Tag) mappings Whitespace separated, quoted, mapping defined with colon separated list of "tags" (int > 0) @@ -759,7 +759,7 @@ p.set_defaults(func=construct_vhost_scsi_controller) def add_vhost_scsi_lun(args): params = { 'ctrlr': args.ctrlr, - 'lun_name': args.lun_name, + 'bdev_name': args.bdev_name, 'scsi_target_num': args.scsi_target_num } @@ -768,7 +768,7 @@ def add_vhost_scsi_lun(args): p = subparsers.add_parser('add_vhost_scsi_lun', help='Add lun to vhost controller') p.add_argument('ctrlr', help='conntroller name where add lun') p.add_argument('scsi_target_num', help='scsi_target_num', type=int) -p.add_argument('lun_name', help='lun name') +p.add_argument('bdev_name', help='bdev name') p.set_defaults(func=add_vhost_scsi_lun) def remove_vhost_scsi_target(args): diff --git a/test/iscsi_tgt/rpc_config/rpc_config.py b/test/iscsi_tgt/rpc_config/rpc_config.py index 2e3dab5f6..e6c5b50cd 100755 --- a/test/iscsi_tgt/rpc_config/rpc_config.py +++ b/test/iscsi_tgt/rpc_config/rpc_config.py @@ -290,8 +290,8 @@ def verify_target_nodes_rpc_methods(rpc_py, rpc_param): jsonvalues = json.loads(output) verify(len(jsonvalues) == 1, 1, "get_target_nodes returned {} nodes, expected 1".format(len(jsonvalues))) - verify(jsonvalues[0]['luns'][0]['name'] == "Malloc" + str(rpc_param['lun_total']), 1, - "lun_name value is {}, expected Malloc{}".format(jsonvalues[0]['luns'][0]['name'], str(rpc_param['lun_total']))) + verify(jsonvalues[0]['luns'][0]['bdev_name'] == "Malloc" + str(rpc_param['lun_total']), 1, + "bdev_name value is {}, expected Malloc{}".format(jsonvalues[0]['luns'][0]['bdev_name'], str(rpc_param['lun_total']))) name = jsonvalues[0]['name'] verify(name == "iqn.2016-06.io.spdk:" + rpc_param['target_name'], 1, "target name value is {}, expected {}".format(name, "iqn.2016-06.io.spdk:" + rpc_param['target_name'])) diff --git a/test/unit/lib/iscsi/common.c b/test/unit/lib/iscsi/common.c index 82ff2a17d..15c0c43f0 100644 --- a/test/unit/lib/iscsi/common.c +++ b/test/unit/lib/iscsi/common.c @@ -113,7 +113,7 @@ spdk_event_allocate(uint32_t core, spdk_event_fn fn, void *arg1, void *arg2) } struct spdk_scsi_dev * - spdk_scsi_dev_construct(const char *name, char **lun_name_list, + spdk_scsi_dev_construct(const char *name, const char **bdev_name_list, int *lun_id_list, int num_luns, uint8_t protocol_id, void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), void *hotremove_ctx) diff --git a/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c b/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c index 99b8dbb76..050a1d392 100644 --- a/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c +++ b/test/unit/lib/iscsi/tgt_node.c/tgt_node_ut.c @@ -51,7 +51,7 @@ DEFINE_STUB(spdk_scsi_dev_get_id, (const struct spdk_scsi_dev *dev), 0); -DEFINE_STUB(spdk_scsi_lun_get_name, +DEFINE_STUB(spdk_scsi_lun_get_bdev_name, const char *, (const struct spdk_scsi_lun *lun), NULL); diff --git a/test/unit/lib/scsi/dev.c/dev_ut.c b/test/unit/lib/scsi/dev.c/dev_ut.c index 0ca6d12f9..af6f3be29 100644 --- a/test/unit/lib/scsi/dev.c/dev_ut.c +++ b/test/unit/lib/scsi/dev.c/dev_ut.c @@ -51,19 +51,6 @@ static struct spdk_bdev g_bdevs[] = { {"malloc1"}, }; -struct lun_entry { - TAILQ_ENTRY(lun_entry) lun_entries; - struct spdk_scsi_lun *lun; -}; -TAILQ_HEAD(, lun_entry) g_lun_head; - -static int -test_setup(void) -{ - TAILQ_INIT(&g_lun_head); - return 0; -} - const char * spdk_bdev_get_name(const struct spdk_bdev *bdev) { @@ -90,49 +77,23 @@ spdk_scsi_task_put(struct spdk_scsi_task *task) } _spdk_scsi_lun * -spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev, +spdk_scsi_lun_construct(struct spdk_bdev *bdev, void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), void *hotremove_ctx) { struct spdk_scsi_lun *lun; - struct lun_entry *p; - - TAILQ_FOREACH(p, &g_lun_head, lun_entries) { - CU_ASSERT_FATAL(p->lun != NULL); - if (strcmp(p->lun->name, name) == 0) { - return NULL; - } - } lun = calloc(1, sizeof(struct spdk_scsi_lun)); SPDK_CU_ASSERT_FATAL(lun != NULL); - snprintf(lun->name, sizeof(lun->name), "%s", name); + lun->bdev = bdev; - p = calloc(1, sizeof(struct lun_entry)); - SPDK_CU_ASSERT_FATAL(p != NULL); - - p->lun = lun; - - TAILQ_INSERT_TAIL(&g_lun_head, p, lun_entries); - return lun; } int spdk_scsi_lun_destruct(struct spdk_scsi_lun *lun) { - struct lun_entry *p, *tmp; - - TAILQ_FOREACH_SAFE(p, &g_lun_head, lun_entries, tmp) { - CU_ASSERT_FATAL(p->lun != NULL); - if (strncmp(p->lun->name, lun->name, sizeof(lun->name)) == 0) { - TAILQ_REMOVE(&g_lun_head, p, lun_entries); - free(p); - break; - } - } - free(lun); return 0; } @@ -229,10 +190,10 @@ static void dev_construct_num_luns_zero(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[1] = {}; + const char *bdev_name_list[1] = {}; int lun_id_list[1] = { 0 }; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 0, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 0, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* dev should be null since we passed num_luns = 0 */ @@ -243,12 +204,12 @@ static void dev_construct_no_lun_zero(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[1] = {}; + const char *bdev_name_list[1] = {}; int lun_id_list[1] = { 0 }; lun_id_list[0] = 1; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 1, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 1, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* dev should be null since no LUN0 was specified (lun_id_list[0] = 1) */ @@ -259,10 +220,10 @@ static void dev_construct_null_lun(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[1] = {}; + const char *bdev_name_list[1] = {}; int lun_id_list[1] = { 0 }; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 1, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 1, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* dev should be null since no LUN0 was specified (lun_list[0] = NULL) */ @@ -273,10 +234,10 @@ static void dev_construct_success(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[1] = {"malloc0"}; + const char *bdev_name_list[1] = {"malloc0"}; int lun_id_list[1] = { 0 }; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 1, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 1, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* Successfully constructs and returns a dev */ @@ -284,18 +245,16 @@ dev_construct_success(void) /* free the dev */ spdk_scsi_dev_destruct(dev); - - CU_ASSERT(TAILQ_EMPTY(&g_lun_head)); } static void dev_construct_success_lun_zero_not_first(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[2] = {"malloc1", "malloc0"}; + const char *bdev_name_list[2] = {"malloc1", "malloc0"}; int lun_id_list[2] = { 1, 0 }; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 2, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 2, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* Successfully constructs and returns a dev */ @@ -303,60 +262,17 @@ dev_construct_success_lun_zero_not_first(void) /* free the dev */ spdk_scsi_dev_destruct(dev); - - CU_ASSERT(TAILQ_EMPTY(&g_lun_head)); -} - -static void -dev_construct_same_lun_two_devices(void) -{ - struct spdk_scsi_dev *dev, *dev2; - char *lun_name_list[1] = {"malloc0"}; - int lun_id_list[1] = { 0 }; - - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 1, - SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); - - /* Successfully constructs and returns a dev */ - CU_ASSERT_TRUE(dev != NULL); - - dev2 = spdk_scsi_dev_construct("Name2", lun_name_list, lun_id_list, 1, - SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); - - /* Fails to construct dev and returns NULL */ - CU_ASSERT_TRUE(dev2 == NULL); - - /* free the dev */ - spdk_scsi_dev_destruct(dev); - - CU_ASSERT(TAILQ_EMPTY(&g_lun_head)); -} - -static void -dev_construct_same_lun_one_device(void) -{ - struct spdk_scsi_dev *dev; - char *lun_name_list[2] = {"malloc0", "malloc0"}; - int lun_id_list[2] = { 0, 1 }; - - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 2, - SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); - - /* Fails to construct dev and returns NULL */ - CU_ASSERT_TRUE(dev == NULL); - - CU_ASSERT(TAILQ_EMPTY(&g_lun_head)); } static void dev_queue_mgmt_task_success(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[1] = {"malloc0"}; + const char *bdev_name_list[1] = {"malloc0"}; int lun_id_list[1] = { 0 }; struct spdk_scsi_task *task; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 1, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 1, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* Successfully constructs and returns a dev */ @@ -375,11 +291,11 @@ static void dev_queue_task_success(void) { struct spdk_scsi_dev *dev; - char *lun_name_list[1] = {"malloc0"}; + const char *bdev_name_list[1] = {"malloc0"}; int lun_id_list[1] = { 0 }; struct spdk_scsi_task *task; - dev = spdk_scsi_dev_construct("Name", lun_name_list, lun_id_list, 1, + dev = spdk_scsi_dev_construct("Name", bdev_name_list, lun_id_list, 1, SPDK_SPC_PROTOCOL_IDENTIFIER_ISCSI, NULL, NULL); /* Successfully constructs and returns a dev */ @@ -626,7 +542,7 @@ main(int argc, char **argv) return CU_get_error(); } - suite = CU_add_suite("dev_suite", test_setup, NULL); + suite = CU_add_suite("dev_suite", NULL, NULL); if (suite == NULL) { CU_cleanup_registry(); return CU_get_error(); @@ -647,10 +563,6 @@ main(int argc, char **argv) || CU_add_test(suite, "construct - success", dev_construct_success) == NULL || CU_add_test(suite, "construct - success - LUN zero not first", dev_construct_success_lun_zero_not_first) == NULL - || CU_add_test(suite, "construct - same lun on two devices", - dev_construct_same_lun_two_devices) == NULL - || CU_add_test(suite, "construct - same lun on once device", - dev_construct_same_lun_one_device) == NULL || CU_add_test(suite, "dev queue task mgmt - success", dev_queue_mgmt_task_success) == NULL || CU_add_test(suite, "dev queue task - success", diff --git a/test/unit/lib/scsi/lun.c/lun_ut.c b/test/unit/lib/scsi/lun.c/lun_ut.c index 96cf2de7e..2dc81b68b 100644 --- a/test/unit/lib/scsi/lun.c/lun_ut.c +++ b/test/unit/lib/scsi/lun.c/lun_ut.c @@ -206,7 +206,7 @@ lun_construct(void) struct spdk_scsi_lun *lun; struct spdk_bdev bdev; - lun = spdk_scsi_lun_construct("lun0", &bdev, NULL, NULL); + lun = spdk_scsi_lun_construct(&bdev, NULL, NULL); SPDK_CU_ASSERT_FATAL(lun != NULL); return lun; @@ -568,7 +568,7 @@ lun_construct_null_ctx(void) { struct spdk_scsi_lun *lun; - lun = spdk_scsi_lun_construct("lun0", NULL, NULL, NULL); + lun = spdk_scsi_lun_construct(NULL, NULL, NULL); /* lun should be NULL since we passed NULL for the ctx pointer. */ CU_ASSERT(lun == NULL); diff --git a/test/unit/lib/vhost/vhost_scsi.c/vhost_scsi_ut.c b/test/unit/lib/vhost/vhost_scsi.c/vhost_scsi_ut.c index 9eef75e93..e642cb7e3 100644 --- a/test/unit/lib/vhost/vhost_scsi.c/vhost_scsi_ut.c +++ b/test/unit/lib/vhost/vhost_scsi.c/vhost_scsi_ut.c @@ -47,7 +47,7 @@ DEFINE_STUB_V(spdk_scsi_task_put, (struct spdk_scsi_task *task)); DEFINE_STUB(spdk_scsi_dev_allocate_io_channels, int, (struct spdk_scsi_dev *dev), 0); -DEFINE_STUB_P(spdk_scsi_lun_get_name, const char, (const struct spdk_scsi_lun *lun), {0}); +DEFINE_STUB_P(spdk_scsi_lun_get_bdev_name, const char, (const struct spdk_scsi_lun *lun), {0}); DEFINE_STUB(spdk_scsi_lun_get_id, int, (const struct spdk_scsi_lun *lun), 0); DEFINE_STUB(spdk_scsi_dev_has_pending_tasks, bool, (const struct spdk_scsi_dev *dev), false); DEFINE_STUB_V(spdk_scsi_dev_free_io_channels, (struct spdk_scsi_dev *dev)); @@ -64,7 +64,7 @@ DEFINE_STUB_V(spdk_scsi_task_process_null_lun, (struct spdk_scsi_task *task)); DEFINE_STUB_P(spdk_scsi_lun_get_dev, const struct spdk_scsi_dev, (const struct spdk_scsi_lun *lun), {0}); DEFINE_STUB_P(spdk_scsi_dev_get_name, const char, (const struct spdk_scsi_dev *dev), {0}); DEFINE_STUB_P(spdk_scsi_dev_construct, struct spdk_scsi_dev, (const char *name, - char *lun_name_list[], int *lun_id_list, int num_luns, uint8_t protocol_id, + const char *bdev_name_list[], int *lun_id_list, int num_luns, uint8_t protocol_id, void (*hotremove_cb)(const struct spdk_scsi_lun *, void *), void *hotremove_ctx), {0}); DEFINE_STUB(spdk_scsi_dev_add_port, int, (struct spdk_scsi_dev *dev, uint64_t id, const char *name), 0);