nvme/opal: deprecate spdk_opal_supported()

The spdk_opal_supported() is redundant with spdk_opal_dev_construct(),
because we only return the spdk_opal_dev structure when the drive
can support OPAL feature.

Change-Id: Ieadf271a0c8530f2440cded05ad139483a8c5937
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2383
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Changpeng Liu 2020-05-12 03:00:52 -04:00 committed by Tomasz Zawadzki
parent 18504e3f4d
commit b2947f528f
7 changed files with 303 additions and 351 deletions

View File

@ -978,11 +978,9 @@ opal_scan(struct dev *iter)
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("\n\nOpal Supported:\n"); printf("\n\nOpal Supported:\n");
display_controller(iter, CONTROLLER_DISPLAY_SIMPLISTIC); display_controller(iter, CONTROLLER_DISPLAY_SIMPLISTIC);
opal_dump_info(spdk_opal_get_d0_features_info(iter->opal_dev)); opal_dump_info(spdk_opal_get_d0_features_info(iter->opal_dev));
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\n",
@ -1005,7 +1003,6 @@ opal_init(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please input the new password for ownership:"); printf("Please input the new password for ownership:");
while ((ch = getchar()) != '\n' && ch != EOF); while ((ch = getchar()) != '\n' && ch != EOF);
passwd_p = get_line(new_passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true); passwd_p = get_line(new_passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true);
@ -1028,7 +1025,6 @@ opal_init(struct dev *iter)
} else { } else {
printf("Input password invalid. Opal Init failure\n"); printf("Input password invalid. Opal Init failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1063,7 +1059,6 @@ opal_setup_lockingrange(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please input the password for setting up locking range:"); printf("Please input the password for setting up locking range:");
while ((ch = getchar()) != '\n' && ch != EOF); while ((ch = getchar()) != '\n' && ch != EOF);
passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true); passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true);
@ -1120,7 +1115,6 @@ opal_setup_lockingrange(struct dev *iter)
} else { } else {
printf("Input password invalid. Opal setup locking range failure\n"); printf("Input password invalid. Opal setup locking range failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1144,7 +1138,6 @@ opal_list_locking_ranges(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please input password:"); printf("Please input password:");
while ((ch = getchar()) != '\n' && ch != EOF); while ((ch = getchar()) != '\n' && ch != EOF);
passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true); passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true);
@ -1186,7 +1179,6 @@ opal_list_locking_ranges(struct dev *iter)
} else { } else {
printf("Input password invalid. List locking ranges failure\n"); printf("Input password invalid. List locking ranges failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1210,7 +1202,6 @@ opal_new_user_enable(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please input admin password:"); printf("Please input admin password:");
while ((ch = getchar()) != '\n' && ch != EOF); while ((ch = getchar()) != '\n' && ch != EOF);
passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true); passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true);
@ -1249,7 +1240,6 @@ opal_new_user_enable(struct dev *iter)
} else { } else {
printf("Input password invalid. Enable user failure\n"); printf("Input password invalid. Enable user failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1273,7 +1263,6 @@ opal_change_password(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("user id: "); printf("user id: ");
if (!scanf("%d", &user_id)) { if (!scanf("%d", &user_id)) {
printf("Invalid user id\n"); printf("Invalid user id\n");
@ -1305,7 +1294,6 @@ opal_change_password(struct dev *iter)
} else { } else {
printf("Input password invalid. Change password failure\n"); printf("Input password invalid. Change password failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1327,7 +1315,6 @@ opal_add_user_to_locking_range(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please input admin password:"); printf("Please input admin password:");
while ((ch = getchar()) != '\n' && ch != EOF); while ((ch = getchar()) != '\n' && ch != EOF);
passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true); passwd_p = get_line(passwd, SPDK_OPAL_MAX_PASSWORD_SIZE, stdin, true);
@ -1349,11 +1336,9 @@ opal_add_user_to_locking_range(struct dev *iter)
while (getchar() != '\n'); while (getchar() != '\n');
ret = spdk_opal_cmd_add_user_to_locking_range(iter->opal_dev, user_id, locking_range_id, ret = spdk_opal_cmd_add_user_to_locking_range(iter->opal_dev, user_id, locking_range_id,
OPAL_READONLY, OPAL_READONLY, passwd_p);
passwd_p);
ret += spdk_opal_cmd_add_user_to_locking_range(iter->opal_dev, user_id, locking_range_id, ret += spdk_opal_cmd_add_user_to_locking_range(iter->opal_dev, user_id, locking_range_id,
OPAL_READWRITE, OPAL_READWRITE, passwd_p);
passwd_p);
if (ret) { if (ret) {
printf("Add user to locking range error: %d\n", ret); printf("Add user to locking range error: %d\n", ret);
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
@ -1364,7 +1349,6 @@ opal_add_user_to_locking_range(struct dev *iter)
} else { } else {
printf("Input password invalid. Add user to locking range failure\n"); printf("Input password invalid. Add user to locking range failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1389,7 +1373,6 @@ opal_user_lock_unlock_range(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("User id: "); printf("User id: ");
if (!scanf("%d", &user_id)) { if (!scanf("%d", &user_id)) {
printf("Invalid user id\n"); printf("Invalid user id\n");
@ -1441,7 +1424,6 @@ opal_user_lock_unlock_range(struct dev *iter)
} else { } else {
printf("Input password invalid. lock/unlock range failure\n"); printf("Input password invalid. lock/unlock range failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1462,7 +1444,6 @@ opal_revert_tper(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please be noted this operation will erase ALL DATA on this drive\n"); printf("Please be noted this operation will erase ALL DATA on this drive\n");
printf("Please don't ternminate this excecution. Otherwise undefined error may occur\n"); printf("Please don't ternminate this excecution. Otherwise undefined error may occur\n");
printf("Please input password for revert TPer:"); printf("Please input password for revert TPer:");
@ -1480,7 +1461,6 @@ opal_revert_tper(struct dev *iter)
} else { } else {
printf("Input password invalid. Revert TPer failure\n"); printf("Input password invalid. Revert TPer failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",
@ -1502,7 +1482,6 @@ opal_erase_locking_range(struct dev *iter)
if (iter->opal_dev == NULL) { if (iter->opal_dev == NULL) {
return; return;
} }
if (spdk_opal_supported(iter->opal_dev)) {
printf("Please be noted this operation will erase ALL DATA on this range\n"); printf("Please be noted this operation will erase ALL DATA on this range\n");
printf("Please input password for erase locking range:"); printf("Please input password for erase locking range:");
while ((ch = getchar()) != '\n' && ch != EOF); while ((ch = getchar()) != '\n' && ch != EOF);
@ -1526,7 +1505,6 @@ opal_erase_locking_range(struct dev *iter)
} else { } else {
printf("Input password invalid. Erase locking range failure\n"); printf("Input password invalid. Erase locking range failure\n");
} }
}
spdk_opal_dev_destruct(iter->opal_dev); spdk_opal_dev_destruct(iter->opal_dev);
} else { } else {
printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n",

View File

@ -102,7 +102,7 @@ void spdk_opal_dev_destruct(struct spdk_opal_dev *dev);
struct spdk_opal_d0_features_info *spdk_opal_get_d0_features_info(struct spdk_opal_dev *dev); struct spdk_opal_d0_features_info *spdk_opal_get_d0_features_info(struct spdk_opal_dev *dev);
bool spdk_opal_supported(struct spdk_opal_dev *dev); __attribute__((__deprecated__)) bool spdk_opal_supported(struct spdk_opal_dev *dev);
int spdk_opal_cmd_take_ownership(struct spdk_opal_dev *dev, char *new_passwd); int spdk_opal_cmd_take_ownership(struct spdk_opal_dev *dev, char *new_passwd);

View File

@ -834,7 +834,6 @@ opal_discovery0_end(struct spdk_opal_dev *dev, void *payload, uint32_t payload_s
SPDK_INFOLOG(SPDK_LOG_OPAL, "Single User Mode Not Supported\n"); SPDK_INFOLOG(SPDK_LOG_OPAL, "Single User Mode Not Supported\n");
} }
dev->supported = true;
dev->comid = comid; dev->comid = comid;
return 0; return 0;
} }
@ -1766,9 +1765,7 @@ spdk_opal_cmd_take_ownership(struct spdk_opal_dev *dev, char *new_passwd)
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
struct opal_session *sess; struct opal_session *sess;
if (!dev || dev->supported == false) { assert(dev != NULL);
return -ENODEV;
}
sess = opal_alloc_session(dev); sess = opal_alloc_session(dev);
if (!sess) { if (!sess) {
@ -2040,9 +2037,7 @@ spdk_opal_cmd_revert_tper(struct spdk_opal_dev *dev, const char *passwd)
struct opal_session *sess; struct opal_session *sess;
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, passwd); ret = opal_init_key(&opal_key, passwd);
if (ret) { if (ret) {
@ -2144,9 +2139,7 @@ spdk_opal_cmd_lock_unlock(struct spdk_opal_dev *dev, enum spdk_opal_user user,
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, passwd); ret = opal_init_key(&opal_key, passwd);
if (ret != 0) { if (ret != 0) {
@ -2188,9 +2181,7 @@ spdk_opal_cmd_setup_locking_range(struct spdk_opal_dev *dev, enum spdk_opal_user
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, passwd); ret = opal_init_key(&opal_key, passwd);
if (ret != 0) { if (ret != 0) {
@ -2231,9 +2222,7 @@ spdk_opal_cmd_get_max_ranges(struct spdk_opal_dev *dev, const char *passwd)
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
if (dev->max_ranges) { if (dev->max_ranges) {
return dev->max_ranges; return dev->max_ranges;
@ -2280,9 +2269,7 @@ spdk_opal_cmd_get_locking_range_info(struct spdk_opal_dev *dev, const char *pass
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, passwd); ret = opal_init_key(&opal_key, passwd);
if (ret != 0) { if (ret != 0) {
@ -2323,9 +2310,7 @@ spdk_opal_cmd_enable_user(struct spdk_opal_dev *dev, enum spdk_opal_user user_id
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, passwd); ret = opal_init_key(&opal_key, passwd);
if (ret != 0) { if (ret != 0) {
@ -2368,9 +2353,7 @@ spdk_opal_cmd_add_user_to_locking_range(struct spdk_opal_dev *dev, enum spdk_opa
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, passwd); ret = opal_init_key(&opal_key, passwd);
if (ret != 0) { if (ret != 0) {
@ -2413,9 +2396,7 @@ spdk_opal_cmd_set_new_passwd(struct spdk_opal_dev *dev, enum spdk_opal_user user
struct spdk_opal_key new_key = {}; struct spdk_opal_key new_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&old_key, old_passwd); ret = opal_init_key(&old_key, old_passwd);
if (ret != 0) { if (ret != 0) {
@ -2462,9 +2443,7 @@ spdk_opal_cmd_erase_locking_range(struct spdk_opal_dev *dev, enum spdk_opal_user
struct spdk_opal_key opal_key = {}; struct spdk_opal_key opal_key = {};
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENODEV;
}
ret = opal_init_key(&opal_key, password); ret = opal_init_key(&opal_key, password);
if (ret != 0) { if (ret != 0) {
@ -2506,9 +2485,7 @@ spdk_opal_cmd_secure_erase_locking_range(struct spdk_opal_dev *dev, enum spdk_op
struct spdk_opal_key *active_key; struct spdk_opal_key *active_key;
int ret; int ret;
if (dev->supported == false) { assert(dev != NULL);
return -ENOTSUP;
}
ret = opal_init_key(&opal_key, password); ret = opal_init_key(&opal_key, password);
if (ret != 0) { if (ret != 0) {
@ -2566,7 +2543,7 @@ spdk_opal_get_d0_features_info(struct spdk_opal_dev *dev)
bool bool
spdk_opal_supported(struct spdk_opal_dev *dev) spdk_opal_supported(struct spdk_opal_dev *dev)
{ {
return dev->supported; return false;
} }
struct spdk_opal_locking_range_info * struct spdk_opal_locking_range_info *

View File

@ -259,7 +259,6 @@ struct opal_session {
}; };
struct spdk_opal_dev { struct spdk_opal_dev {
bool supported;
struct spdk_nvme_ctrlr *ctrlr; struct spdk_nvme_ctrlr *ctrlr;
uint16_t comid; uint16_t comid;

View File

@ -916,7 +916,7 @@ bdev_nvme_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
if (cdata->oacs.security) { if (cdata->oacs.security) {
spdk_json_write_named_object_begin(w, "security"); spdk_json_write_named_object_begin(w, "security");
spdk_json_write_named_bool(w, "opal", spdk_opal_supported(nvme_bdev_ctrlr->opal_dev)); spdk_json_write_named_bool(w, "opal", nvme_bdev_ctrlr->opal_dev ? true : false);
spdk_json_write_object_end(w); spdk_json_write_object_end(w);
} }

View File

@ -350,7 +350,7 @@ vbdev_opal_create(const char *nvme_ctrlr_name, uint32_t nsid, uint8_t locking_ra
return -ENODEV; return -ENODEV;
} }
if (!nvme_ctrlr->opal_dev || !spdk_opal_supported(nvme_ctrlr->opal_dev)) { if (!nvme_ctrlr->opal_dev) {
SPDK_ERRLOG("Opal not supported\n"); SPDK_ERRLOG("Opal not supported\n");
return -ENOTSUP; return -ENOTSUP;
} }

View File

@ -74,8 +74,7 @@ rpc_bdev_nvme_opal_init(struct spdk_jsonrpc_request *request,
/* check if opal supported */ /* check if opal supported */
nvme_ctrlr = nvme_bdev_ctrlr_get_by_name(req.nvme_ctrlr_name); nvme_ctrlr = nvme_bdev_ctrlr_get_by_name(req.nvme_ctrlr_name);
if (nvme_ctrlr == NULL || nvme_ctrlr->opal_dev == NULL || if (nvme_ctrlr == NULL || nvme_ctrlr->opal_dev == NULL) {
!spdk_opal_supported(nvme_ctrlr->opal_dev)) {
SPDK_ERRLOG("%s not support opal\n", req.nvme_ctrlr_name); SPDK_ERRLOG("%s not support opal\n", req.nvme_ctrlr_name);
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters"); spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters");
goto out; goto out;
@ -153,8 +152,7 @@ rpc_bdev_nvme_opal_revert(struct spdk_jsonrpc_request *request,
/* check if opal supported */ /* check if opal supported */
nvme_ctrlr = nvme_bdev_ctrlr_get_by_name(req.nvme_ctrlr_name); nvme_ctrlr = nvme_bdev_ctrlr_get_by_name(req.nvme_ctrlr_name);
if (nvme_ctrlr == NULL || nvme_ctrlr->opal_dev == NULL || if (nvme_ctrlr == NULL || nvme_ctrlr->opal_dev == NULL) {
!spdk_opal_supported(nvme_ctrlr->opal_dev)) {
SPDK_ERRLOG("%s not support opal\n", req.nvme_ctrlr_name); SPDK_ERRLOG("%s not support opal\n", req.nvme_ctrlr_name);
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters"); spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters");
goto out; goto out;