scsi: Remove the claimed flag from LUN
Struct spdk_scsi_lun has the claimed flag as a member. However the claimed flag is no longer required. Moreover the claimed flag itself is not used but spdk_scsi_lun_claim() and _unclaim() functions are used in the UT code by hard to understand manner. Moving the logic into spdk_scsi_lun_construct() and _destruct() in the UT code will be more natural. Hence remove the claimed flag from LUN and do a little refactoring in the UT code. Change-Id: Ica9680b49bbdb5be7c5c4161210fb3a6dcb35229 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/390566 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
7e5ec29a0e
commit
e44731d659
@ -81,7 +81,6 @@ spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_scsi_lun_unclaim(dev->lun[i]);
|
|
||||||
spdk_scsi_lun_destruct(dev->lun[i]);
|
spdk_scsi_lun_destruct(dev->lun[i]);
|
||||||
dev->lun[i] = NULL;
|
dev->lun[i] = NULL;
|
||||||
}
|
}
|
||||||
@ -89,22 +88,13 @@ spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev)
|
|||||||
free_dev(dev);
|
free_dev(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static void
|
||||||
spdk_scsi_dev_add_lun(struct spdk_scsi_dev *dev,
|
spdk_scsi_dev_add_lun(struct spdk_scsi_dev *dev,
|
||||||
struct spdk_scsi_lun *lun, int id)
|
struct spdk_scsi_lun *lun, int id)
|
||||||
{
|
{
|
||||||
int rc;
|
|
||||||
|
|
||||||
rc = spdk_scsi_lun_claim(lun);
|
|
||||||
if (rc < 0) {
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
lun->id = id;
|
lun->id = id;
|
||||||
lun->dev = dev;
|
lun->dev = dev;
|
||||||
dev->lun[id] = lun;
|
dev->lun[id] = lun;
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -133,7 +123,7 @@ spdk_scsi_dev_construct(const char *name, char *lun_name_list[], int *lun_id_lis
|
|||||||
struct spdk_bdev *bdev;
|
struct spdk_bdev *bdev;
|
||||||
struct spdk_scsi_lun *lun = NULL;
|
struct spdk_scsi_lun *lun = NULL;
|
||||||
bool found_lun_0;
|
bool found_lun_0;
|
||||||
int i, rc;
|
int i;
|
||||||
|
|
||||||
if (num_luns == 0) {
|
if (num_luns == 0) {
|
||||||
SPDK_ERRLOG("device %s: no LUNs specified\n", name);
|
SPDK_ERRLOG("device %s: no LUNs specified\n", name);
|
||||||
@ -182,11 +172,7 @@ spdk_scsi_dev_construct(const char *name, char *lun_name_list[], int *lun_id_lis
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = spdk_scsi_dev_add_lun(dev, lun, lun_id_list[i]);
|
spdk_scsi_dev_add_lun(dev, lun, lun_id_list[i]);
|
||||||
if (rc < 0) {
|
|
||||||
spdk_scsi_lun_destruct(lun);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return dev;
|
return dev;
|
||||||
|
@ -336,30 +336,6 @@ spdk_scsi_lun_destruct(struct spdk_scsi_lun *lun)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
spdk_scsi_lun_claim(struct spdk_scsi_lun *lun)
|
|
||||||
{
|
|
||||||
assert(spdk_lun_db_get_lun(lun->name) != NULL);
|
|
||||||
|
|
||||||
if (lun->claimed != false) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
lun->claimed = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
spdk_scsi_lun_unclaim(struct spdk_scsi_lun *lun)
|
|
||||||
{
|
|
||||||
assert(spdk_lun_db_get_lun(lun->name) != NULL);
|
|
||||||
assert(lun->claimed == true);
|
|
||||||
lun->claimed = false;
|
|
||||||
lun->dev = NULL;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_scsi_lun_delete(const char *lun_name)
|
spdk_scsi_lun_delete(const char *lun_name)
|
||||||
{
|
{
|
||||||
|
@ -107,9 +107,6 @@ struct spdk_scsi_lun {
|
|||||||
/** The LUN is removed */
|
/** The LUN is removed */
|
||||||
bool removed;
|
bool removed;
|
||||||
|
|
||||||
/** The LUN is clamed */
|
|
||||||
bool claimed;
|
|
||||||
|
|
||||||
/** Callback to be fired when LUN removal is first triggered. */
|
/** Callback to be fired when LUN removal is first triggered. */
|
||||||
void (*hotremove_cb)(const struct spdk_scsi_lun *lun, void *arg);
|
void (*hotremove_cb)(const struct spdk_scsi_lun *lun, void *arg);
|
||||||
|
|
||||||
@ -143,8 +140,6 @@ void spdk_scsi_lun_execute_tasks(struct spdk_scsi_lun *lun);
|
|||||||
int spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task, enum spdk_scsi_task_func func);
|
int spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task, enum spdk_scsi_task_func func);
|
||||||
void spdk_scsi_lun_complete_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task);
|
void spdk_scsi_lun_complete_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task);
|
||||||
void spdk_scsi_lun_complete_mgmt_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task);
|
void spdk_scsi_lun_complete_mgmt_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *task);
|
||||||
int spdk_scsi_lun_claim(struct spdk_scsi_lun *lun);
|
|
||||||
int spdk_scsi_lun_unclaim(struct spdk_scsi_lun *lun);
|
|
||||||
int spdk_scsi_lun_delete(const char *lun_name);
|
int spdk_scsi_lun_delete(const char *lun_name);
|
||||||
int spdk_scsi_lun_allocate_io_channel(struct spdk_scsi_lun *lun);
|
int spdk_scsi_lun_allocate_io_channel(struct spdk_scsi_lun *lun);
|
||||||
void spdk_scsi_lun_free_io_channel(struct spdk_scsi_lun *lun);
|
void spdk_scsi_lun_free_io_channel(struct spdk_scsi_lun *lun);
|
||||||
|
@ -62,8 +62,6 @@ spdk_rpc_get_luns(struct spdk_jsonrpc_request *request,
|
|||||||
struct spdk_scsi_lun *lun = current->lun;
|
struct spdk_scsi_lun *lun = current->lun;
|
||||||
|
|
||||||
spdk_json_write_object_begin(w);
|
spdk_json_write_object_begin(w);
|
||||||
spdk_json_write_name(w, "claimed");
|
|
||||||
spdk_json_write_bool(w, lun->claimed);
|
|
||||||
spdk_json_write_name(w, "name");
|
spdk_json_write_name(w, "name");
|
||||||
spdk_json_write_string(w, lun->name);
|
spdk_json_write_string(w, lun->name);
|
||||||
spdk_json_write_object_end(w);
|
spdk_json_write_object_end(w);
|
||||||
|
@ -318,10 +318,6 @@ def verify_target_nodes_rpc_methods(rpc_py, rpc_param):
|
|||||||
"chap required value is {}, expected {}".format(jsonvalues[0]['chap_required'], rpc_param['chap_required']))
|
"chap required value is {}, expected {}".format(jsonvalues[0]['chap_required'], rpc_param['chap_required']))
|
||||||
verify(jsonvalues[0]['chap_auth_group'] == rpc_param['chap_auth_group'], 1,
|
verify(jsonvalues[0]['chap_auth_group'] == rpc_param['chap_auth_group'], 1,
|
||||||
"chap auth group value is {}, expected {}".format(jsonvalues[0]['chap_auth_group'], rpc_param['chap_auth_group']))
|
"chap auth group value is {}, expected {}".format(jsonvalues[0]['chap_auth_group'], rpc_param['chap_auth_group']))
|
||||||
output = rpc.get_luns()
|
|
||||||
jsonvalue = json.loads(output)
|
|
||||||
verify(jsonvalue[0]['claimed'] is True, 1,
|
|
||||||
"The claimed value is {}, expected true".format(jsonvalue[0]['claimed']))
|
|
||||||
|
|
||||||
rpc.delete_target_node(name)
|
rpc.delete_target_node(name)
|
||||||
output = rpc.get_target_nodes()
|
output = rpc.get_target_nodes()
|
||||||
|
@ -95,18 +95,44 @@ spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev,
|
|||||||
void *hotremove_ctx)
|
void *hotremove_ctx)
|
||||||
{
|
{
|
||||||
struct spdk_scsi_lun *lun;
|
struct spdk_scsi_lun *lun;
|
||||||
|
struct lun_entry *p;
|
||||||
|
|
||||||
lun = calloc(1, sizeof(struct spdk_scsi_lun));
|
lun = calloc(1, sizeof(struct spdk_scsi_lun));
|
||||||
SPDK_CU_ASSERT_FATAL(lun != NULL);
|
SPDK_CU_ASSERT_FATAL(lun != NULL);
|
||||||
|
|
||||||
snprintf(lun->name, sizeof(lun->name), "%s", name);
|
snprintf(lun->name, sizeof(lun->name), "%s", name);
|
||||||
lun->bdev = bdev;
|
lun->bdev = bdev;
|
||||||
|
|
||||||
|
TAILQ_FOREACH(p, &g_lun_head, lun_entries) {
|
||||||
|
CU_ASSERT_FATAL(p->lun != NULL);
|
||||||
|
if (strncmp(p->lun->name, lun->name, sizeof(lun->name)) == 0)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
return lun;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_scsi_lun_destruct(struct spdk_scsi_lun *lun)
|
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);
|
free(lun);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -125,42 +151,6 @@ spdk_bdev_get_by_name(const char *bdev_name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
spdk_scsi_lun_claim(struct spdk_scsi_lun *lun)
|
|
||||||
{
|
|
||||||
struct lun_entry *p;
|
|
||||||
|
|
||||||
TAILQ_FOREACH(p, &g_lun_head, lun_entries) {
|
|
||||||
CU_ASSERT_FATAL(p->lun != NULL);
|
|
||||||
if (strncmp(p->lun->name, lun->name, sizeof(lun->name)) == 0)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
spdk_scsi_lun_unclaim(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);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task, enum spdk_scsi_task_func func)
|
spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task, enum spdk_scsi_task_func func)
|
||||||
{
|
{
|
||||||
|
@ -659,9 +659,6 @@ lun_delete(void)
|
|||||||
|
|
||||||
lun = lun_construct();
|
lun = lun_construct();
|
||||||
|
|
||||||
rc = spdk_scsi_lun_claim(lun);
|
|
||||||
CU_ASSERT_EQUAL(rc, 0);
|
|
||||||
|
|
||||||
rc = spdk_scsi_lun_delete(lun->name);
|
rc = spdk_scsi_lun_delete(lun->name);
|
||||||
CU_ASSERT_EQUAL(rc, 0);
|
CU_ASSERT_EQUAL(rc, 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user