nvme/opal: remove callback from opal_finalize_and_send()
The function inside opal_finalize_and_send() will be executed synchronously, so remove the callback will make the code more clear. Also rename the completion function with "_done" suffix. No code logic change from this patch. Change-Id: I03c5875457e52009768410ad29a89730a7df1c8b Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1648 Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
6d1bb438bf
commit
5b767e1787
@ -37,8 +37,6 @@
|
|||||||
|
|
||||||
#include "nvme_opal_internal.h"
|
#include "nvme_opal_internal.h"
|
||||||
|
|
||||||
typedef int (*spdk_opal_sess_cb)(struct opal_session *sess, void *ctx);
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_send_cmd(struct spdk_opal_dev *dev, struct opal_session *sess)
|
opal_send_cmd(struct spdk_opal_dev *dev, struct opal_session *sess)
|
||||||
{
|
{
|
||||||
@ -91,8 +89,7 @@ opal_recv_check(struct spdk_opal_dev *dev, struct opal_session *sess)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_send_recv(struct spdk_opal_dev *dev, struct opal_session *sess, spdk_opal_sess_cb cb,
|
opal_send_recv(struct spdk_opal_dev *dev, struct opal_session *sess)
|
||||||
void *data)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -106,12 +103,7 @@ opal_send_recv(struct spdk_opal_dev *dev, struct opal_session *sess, spdk_opal_s
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = opal_recv_check(dev, sess);
|
return opal_recv_check(dev, sess);
|
||||||
if (ret) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return cb(sess, data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -285,8 +277,7 @@ opal_cmd_finalize(struct opal_session *sess, uint32_t hsn, uint32_t tsn, bool eo
|
|||||||
* Wait until response is received. And then call the callback functions.
|
* Wait until response is received. And then call the callback functions.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
opal_finalize_and_send(struct spdk_opal_dev *dev, struct opal_session *sess,
|
opal_finalize_and_send(struct spdk_opal_dev *dev, struct opal_session *sess, bool eod)
|
||||||
bool eod, spdk_opal_sess_cb cb, void *data)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -296,7 +287,7 @@ opal_finalize_and_send(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_send_recv(dev, sess, cb, data);
|
return opal_send_recv(dev, sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
@ -629,7 +620,7 @@ opal_response_status(const struct spdk_opal_resp_parsed *resp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_parse_and_check_status(struct opal_session *sess, void *data)
|
opal_parse_and_check_status(struct opal_session *sess)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
@ -858,19 +849,11 @@ opal_setup_session(struct opal_session *sess)
|
|||||||
sess->hsn = 0;
|
sess->hsn = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
opal_end_session_cb(struct opal_session *sess, void *data)
|
|
||||||
{
|
|
||||||
sess->hsn = 0;
|
|
||||||
sess->tsn = 0;
|
|
||||||
return opal_parse_and_check_status(sess, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_end_session(struct spdk_opal_dev *dev, struct opal_session *sess, uint16_t comid)
|
opal_end_session(struct spdk_opal_dev *dev, struct opal_session *sess, uint16_t comid)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
bool eod = 0;
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, comid);
|
opal_set_comid(sess, comid);
|
||||||
@ -879,7 +862,15 @@ opal_end_session(struct spdk_opal_dev *dev, struct opal_session *sess, uint16_t
|
|||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
return opal_finalize_and_send(dev, sess, eod, opal_end_session_cb, NULL);
|
ret = opal_finalize_and_send(dev, sess, false);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
sess->hsn = 0;
|
||||||
|
sess->tsn = 0;
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -890,12 +881,12 @@ spdk_opal_dev_destruct(struct spdk_opal_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_start_session_cb(struct opal_session *sess, void *data)
|
opal_start_session_done(struct opal_session *sess)
|
||||||
{
|
{
|
||||||
uint32_t hsn, tsn;
|
uint32_t hsn, tsn;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
error = opal_parse_and_check_status(sess, NULL);
|
error = opal_parse_and_check_status(sess);
|
||||||
if (error) {
|
if (error) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -924,6 +915,7 @@ opal_start_generic_session(struct spdk_opal_dev *dev,
|
|||||||
{
|
{
|
||||||
uint32_t hsn;
|
uint32_t hsn;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (key == NULL && auth != UID_ANYBODY) {
|
if (key == NULL && auth != UID_ANYBODY) {
|
||||||
return OPAL_INVAL_PARAM;
|
return OPAL_INVAL_PARAM;
|
||||||
@ -972,18 +964,23 @@ opal_start_generic_session(struct spdk_opal_dev *dev,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_start_session_cb, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_start_session_done(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_get_msid_cpin_pin_cb(struct opal_session *sess, void *cb_arg)
|
opal_get_msid_cpin_pin_done(struct opal_session *sess,
|
||||||
|
struct spdk_opal_key *opal_key)
|
||||||
{
|
{
|
||||||
const char *msid_pin;
|
const char *msid_pin;
|
||||||
struct spdk_opal_key *opal_key = cb_arg;
|
|
||||||
size_t strlen;
|
size_t strlen;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
error = opal_parse_and_check_status(sess, NULL);
|
error = opal_parse_and_check_status(sess);
|
||||||
if (error) {
|
if (error) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -994,7 +991,6 @@ opal_get_msid_cpin_pin_cb(struct opal_session *sess, void *cb_arg)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(cb_arg != NULL);
|
|
||||||
opal_key->key_len = strlen;
|
opal_key->key_len = strlen;
|
||||||
memcpy(opal_key->key, msid_pin, opal_key->key_len);
|
memcpy(opal_key->key, msid_pin, opal_key->key_len);
|
||||||
|
|
||||||
@ -1007,6 +1003,7 @@ opal_get_msid_cpin_pin(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
struct spdk_opal_key *opal_key)
|
struct spdk_opal_key *opal_key)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1034,7 +1031,12 @@ opal_get_msid_cpin_pin(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_get_msid_cpin_pin_cb, (void *)opal_key);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_get_msid_cpin_pin_done(sess, opal_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1068,12 +1070,12 @@ opal_generic_pw_cmd(struct opal_session *sess, uint8_t *key, size_t key_len, uin
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_get_locking_sp_lifecycle_cb(struct opal_session *sess, void *data)
|
opal_get_locking_sp_lifecycle_done(struct opal_session *sess)
|
||||||
{
|
{
|
||||||
uint8_t lifecycle;
|
uint8_t lifecycle;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
error = opal_parse_and_check_status(sess, NULL);
|
error = opal_parse_and_check_status(sess);
|
||||||
if (error) {
|
if (error) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -1091,6 +1093,7 @@ static int
|
|||||||
opal_get_locking_sp_lifecycle(struct spdk_opal_dev *dev, struct opal_session *sess)
|
opal_get_locking_sp_lifecycle(struct spdk_opal_dev *dev, struct opal_session *sess)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1118,13 +1121,19 @@ opal_get_locking_sp_lifecycle(struct spdk_opal_dev *dev, struct opal_session *se
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_get_locking_sp_lifecycle_cb, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_get_locking_sp_lifecycle_done(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_activate(struct spdk_opal_dev *dev, struct opal_session *sess)
|
opal_activate(struct spdk_opal_dev *dev, struct opal_session *sess)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1144,7 +1153,12 @@ opal_activate(struct spdk_opal_dev *dev, struct opal_session *sess)
|
|||||||
|
|
||||||
/* TODO: Single User Mode for activatation */
|
/* TODO: Single User Mode for activatation */
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1155,6 +1169,7 @@ opal_start_auth_session(struct spdk_opal_dev *dev,
|
|||||||
{
|
{
|
||||||
uint8_t uid_user[OPAL_UID_LENGTH];
|
uint8_t uid_user[OPAL_UID_LENGTH];
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
uint32_t hsn = GENERIC_HOST_SESSION_NUM;
|
uint32_t hsn = GENERIC_HOST_SESSION_NUM;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
@ -1189,7 +1204,12 @@ opal_start_auth_session(struct spdk_opal_dev *dev,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_start_session_cb, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_start_session_done(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1200,6 +1220,7 @@ opal_lock_unlock_range(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
||||||
uint8_t read_locked, write_locked;
|
uint8_t read_locked, write_locked;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1248,7 +1269,12 @@ opal_lock_unlock_range(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
SPDK_ERRLOG("Error building SET command.\n");
|
SPDK_ERRLOG("Error building SET command.\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int opal_generic_locking_range_enable_disable(struct spdk_opal_dev *dev,
|
static int opal_generic_locking_range_enable_disable(struct spdk_opal_dev *dev,
|
||||||
@ -1303,6 +1329,7 @@ opal_setup_locking_range(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
{
|
{
|
||||||
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1353,16 +1380,20 @@ opal_setup_locking_range(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_get_max_ranges_cb(struct opal_session *sess, void *data)
|
opal_get_max_ranges_done(struct opal_session *sess, uint8_t *max_ranges)
|
||||||
{
|
{
|
||||||
uint8_t *max_ranges = data;
|
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
error = opal_parse_and_check_status(sess, NULL);
|
error = opal_parse_and_check_status(sess);
|
||||||
if (error) {
|
if (error) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -1376,6 +1407,7 @@ static int
|
|||||||
opal_get_max_ranges(struct spdk_opal_dev *dev, struct opal_session *sess, uint8_t *max_ranges)
|
opal_get_max_ranges(struct spdk_opal_dev *dev, struct opal_session *sess, uint8_t *max_ranges)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1403,16 +1435,21 @@ opal_get_max_ranges(struct spdk_opal_dev *dev, struct opal_session *sess, uint8_
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_get_max_ranges_cb, (void *)max_ranges);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_get_max_ranges_done(sess, max_ranges);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_get_locking_range_info_cb(struct opal_session *sess, void *cb_arg)
|
opal_get_locking_range_info_done(struct opal_session *sess,
|
||||||
|
struct spdk_opal_locking_range_info *info)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
struct spdk_opal_locking_range_info *info = cb_arg;
|
|
||||||
|
|
||||||
error = opal_parse_and_check_status(sess, NULL);
|
error = opal_parse_and_check_status(sess);
|
||||||
if (error) {
|
if (error) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -1433,6 +1470,7 @@ opal_get_locking_range_info(struct spdk_opal_dev *dev,
|
|||||||
enum spdk_opal_locking_range locking_range_id)
|
enum spdk_opal_locking_range locking_range_id)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
||||||
struct spdk_opal_locking_range_info *info;
|
struct spdk_opal_locking_range_info *info;
|
||||||
|
|
||||||
@ -1469,7 +1507,12 @@ opal_get_locking_range_info(struct spdk_opal_dev *dev,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_get_locking_range_info_cb, (void *)info);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_get_locking_range_info_done(sess, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1477,6 +1520,7 @@ opal_enable_user(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
enum spdk_opal_user user)
|
enum spdk_opal_user user)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
uint8_t uid_user[OPAL_UID_LENGTH];
|
uint8_t uid_user[OPAL_UID_LENGTH];
|
||||||
|
|
||||||
memcpy(uid_user, spdk_opal_uid[UID_USER1], OPAL_UID_LENGTH);
|
memcpy(uid_user, spdk_opal_uid[UID_USER1], OPAL_UID_LENGTH);
|
||||||
@ -1507,7 +1551,12 @@ opal_enable_user(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1518,6 +1567,7 @@ opal_add_user_to_locking_range(struct spdk_opal_dev *dev,
|
|||||||
enum spdk_opal_lock_state l_state)
|
enum spdk_opal_lock_state l_state)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
uint8_t uid_user[OPAL_UID_LENGTH];
|
uint8_t uid_user[OPAL_UID_LENGTH];
|
||||||
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
||||||
|
|
||||||
@ -1578,7 +1628,12 @@ opal_add_user_to_locking_range(struct spdk_opal_dev *dev,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1602,7 +1657,12 @@ opal_new_user_passwd(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1624,7 +1684,12 @@ opal_set_sid_cpin_pin(struct spdk_opal_dev *dev, struct opal_session *sess, void
|
|||||||
SPDK_ERRLOG("Error building Set SID cpin\n");
|
SPDK_ERRLOG("Error building Set SID cpin\n");
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -1753,6 +1818,7 @@ opal_gen_new_active_key(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
uint8_t uid_data[OPAL_UID_LENGTH] = {0};
|
uint8_t uid_data[OPAL_UID_LENGTH] = {0};
|
||||||
int err = 0;
|
int err = 0;
|
||||||
int length;
|
int length;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1777,18 +1843,22 @@ opal_gen_new_active_key(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
opal_get_active_key_cb(struct opal_session *sess, void *cb_arg)
|
opal_get_active_key_done(struct opal_session *sess, struct spdk_opal_key *active_key)
|
||||||
{
|
{
|
||||||
const char *key;
|
const char *key;
|
||||||
struct spdk_opal_key *active_key = cb_arg;
|
|
||||||
size_t str_len;
|
size_t str_len;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
error = opal_parse_and_check_status(sess, NULL);
|
error = opal_parse_and_check_status(sess);
|
||||||
if (error) {
|
if (error) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -1813,6 +1883,7 @@ opal_get_active_key(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
{
|
{
|
||||||
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1842,7 +1913,12 @@ opal_get_active_key(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_get_active_key_cb, (void *)active_key);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_get_active_key_done(sess, active_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1851,6 +1927,7 @@ opal_erase_locking_range(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
{
|
{
|
||||||
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
uint8_t uid_locking_range[OPAL_UID_LENGTH];
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
opal_clear_cmd(sess);
|
opal_clear_cmd(sess);
|
||||||
opal_set_comid(sess, dev->comid);
|
opal_set_comid(sess, dev->comid);
|
||||||
@ -1868,7 +1945,12 @@ opal_erase_locking_range(struct spdk_opal_dev *dev, struct opal_session *sess,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return opal_finalize_and_send(dev, sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, sess, true);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opal_parse_and_check_status(sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -1893,9 +1975,9 @@ spdk_opal_cmd_revert_tper(struct spdk_opal_dev *dev, const char *passwd)
|
|||||||
ret = opal_start_generic_session(dev, &dev->sess, UID_SID, UID_ADMINSP,
|
ret = opal_start_generic_session(dev, &dev->sess, UID_SID, UID_ADMINSP,
|
||||||
opal_key.key, opal_key.key_len);
|
opal_key.key, opal_key.key_len);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
opal_end_session(dev, &dev->sess, dev->comid);
|
pthread_mutex_unlock(&dev->mutex_lock);
|
||||||
SPDK_ERRLOG("Error on starting admin SP session with error %d\n", ret);
|
SPDK_ERRLOG("Error on starting admin SP session with error %d\n", ret);
|
||||||
goto end;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = opal_revert_tper(dev, &dev->sess);
|
ret = opal_revert_tper(dev, &dev->sess);
|
||||||
@ -1905,13 +1987,18 @@ spdk_opal_cmd_revert_tper(struct spdk_opal_dev *dev, const char *passwd)
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = opal_finalize_and_send(dev, &dev->sess, 1, opal_parse_and_check_status, NULL);
|
ret = opal_finalize_and_send(dev, &dev->sess, true);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
opal_end_session(dev, &dev->sess, dev->comid);
|
opal_end_session(dev, &dev->sess, dev->comid);
|
||||||
SPDK_ERRLOG("Error on reverting TPer with error %d\n", ret);
|
SPDK_ERRLOG("Error on reverting TPer with error %d\n", ret);
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Controller will terminate session. No "end session" here needed. */
|
ret = opal_parse_and_check_status(&dev->sess);
|
||||||
|
if (ret) {
|
||||||
|
opal_end_session(dev, &dev->sess, dev->comid);
|
||||||
|
}
|
||||||
|
/* No opal_end_session() required here for successful case */
|
||||||
|
|
||||||
end:
|
end:
|
||||||
pthread_mutex_unlock(&dev->mutex_lock);
|
pthread_mutex_unlock(&dev->mutex_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user