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:
Shuhei Matsumoto 2017-12-06 15:46:37 +09:00 committed by Jim Harris
parent 7e5ec29a0e
commit e44731d659
7 changed files with 29 additions and 91 deletions

View File

@ -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;

View File

@ -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)
{ {

View File

@ -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);

View File

@ -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);

View File

@ -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()

View File

@ -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)
{ {

View File

@ -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);