From c61b70c3d50efbee700b703ceb931f94d1cd8ff5 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Tue, 3 Mar 2020 23:09:30 +0800 Subject: [PATCH] nvme/opal: rename spdk_opal_init_dev() and spdk_opal_close() with construct/destruct suffix Since the OPAL here is just for NVMe device, so we don't need to use dev_handler as common handler, just rename it to spdk_nvme_ctrlr. And we don't exit the initialization if OPAL construnction had a failure. Also move the timeout initialization to construct(). Change-Id: I11f0aea961eaa3da0c6253eb03d0227f7e7e5f11 Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1101 Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- examples/nvme/nvme_manage/nvme_manage.c | 92 +++++++++---------- include/spdk/opal.h | 4 +- lib/nvme/nvme_opal.c | 18 ++-- lib/nvme/nvme_opal_internal.h | 2 +- module/bdev/nvme/bdev_nvme.c | 3 +- module/bdev/nvme/common.c | 2 +- .../lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c | 2 +- 7 files changed, 61 insertions(+), 62 deletions(-) diff --git a/examples/nvme/nvme_manage/nvme_manage.c b/examples/nvme/nvme_manage/nvme_manage.c index e765b709d..4d646a555 100644 --- a/examples/nvme/nvme_manage/nvme_manage.c +++ b/examples/nvme/nvme_manage/nvme_manage.c @@ -973,7 +973,7 @@ opal_scan(struct dev *iter) { while (getchar() != '\n'); if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -984,7 +984,7 @@ opal_scan(struct dev *iter) spdk_opal_cmd_scan(iter->opal_dev); opal_dump_info(spdk_opal_get_d0_features_info(iter->opal_dev)); } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1002,7 +1002,7 @@ opal_init(struct dev *iter) int ch; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1015,14 +1015,14 @@ opal_init(struct dev *iter) ret = spdk_opal_cmd_take_ownership(iter->opal_dev, passwd_p); if (ret) { printf("Take ownership failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } ret = spdk_opal_cmd_activate_locking_sp(iter->opal_dev, passwd_p); if (ret) { printf("Locking SP activate failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("...\nOpal Init Success\n"); @@ -1030,7 +1030,7 @@ opal_init(struct dev *iter) printf("Input password invalid. Opal Init failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1060,7 +1060,7 @@ opal_setup_lockingrange(struct dev *iter) struct spdk_opal_locking_range_info *info; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1073,21 +1073,21 @@ opal_setup_lockingrange(struct dev *iter) printf("Specify locking range id:\n"); if (!scanf("%d", &locking_range_id)) { printf("Invalid locking range id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("range length:\n"); if (!scanf("%" SCNu64, &range_length)) { printf("Invalid range length\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("range start:\n"); if (!scanf("%" SCNu64, &range_start)) { printf("Invalid range start address\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } while (getchar() != '\n'); @@ -1096,7 +1096,7 @@ opal_setup_lockingrange(struct dev *iter) OPAL_ADMIN1, locking_range_id, range_start, range_length, passwd_p); if (ret) { printf("Setup locking range failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1104,7 +1104,7 @@ opal_setup_lockingrange(struct dev *iter) passwd_p, OPAL_ADMIN1, locking_range_id); if (ret) { printf("Get locking range info failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } info = spdk_opal_get_locking_range_info(iter->opal_dev, locking_range_id); @@ -1122,7 +1122,7 @@ opal_setup_lockingrange(struct dev *iter) printf("Input password invalid. Opal setup locking range failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1141,7 +1141,7 @@ opal_list_locking_ranges(struct dev *iter) struct spdk_opal_locking_range_info *info; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1154,7 +1154,7 @@ opal_list_locking_ranges(struct dev *iter) ret = spdk_opal_cmd_get_max_ranges(iter->opal_dev, passwd_p); if (ret) { printf("get max ranges failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1164,7 +1164,7 @@ opal_list_locking_ranges(struct dev *iter) passwd_p, OPAL_ADMIN1, i); if (ret) { printf("Get locking range info failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } info = spdk_opal_get_locking_range_info(iter->opal_dev, i); @@ -1188,7 +1188,7 @@ opal_list_locking_ranges(struct dev *iter) printf("Input password invalid. List locking ranges failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1207,7 +1207,7 @@ opal_new_user_enable(struct dev *iter) int ch; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1220,14 +1220,14 @@ opal_new_user_enable(struct dev *iter) printf("which user to enable: "); if (!scanf("%d", &user_id)) { printf("Invalid user id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } ret = spdk_opal_cmd_enable_user(iter->opal_dev, user_id, passwd_p); if (ret) { printf("Enable user failure error code: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("Please set a new password for this user:"); @@ -1235,14 +1235,14 @@ opal_new_user_enable(struct dev *iter) user_pw_p = get_line(user_pw, MAX_PASSWORD_SIZE, stdin, true); if (user_pw_p == NULL) { printf("Input password invalid. Enable user failure\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } ret = spdk_opal_cmd_set_new_passwd(iter->opal_dev, user_id, user_pw_p, passwd_p, true); if (ret) { printf("Set new password failure error code: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1251,7 +1251,7 @@ opal_new_user_enable(struct dev *iter) printf("Input password invalid. Enable user failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1270,7 +1270,7 @@ opal_change_password(struct dev *iter) int ch; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1278,7 +1278,7 @@ opal_change_password(struct dev *iter) printf("user id: "); if (!scanf("%d", &user_id)) { printf("Invalid user id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("Password:"); @@ -1291,14 +1291,14 @@ opal_change_password(struct dev *iter) printf("\n"); if (new_passwd_p == NULL) { printf("Input password invalid. Change password failure\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } ret = spdk_opal_cmd_set_new_passwd(iter->opal_dev, user_id, new_passwd_p, old_passwd_p, false); if (ret) { printf("Set new password failure error code: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1307,7 +1307,7 @@ opal_change_password(struct dev *iter) printf("Input password invalid. Change password failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1324,7 +1324,7 @@ opal_add_user_to_locking_range(struct dev *iter) int ch; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1337,14 +1337,14 @@ opal_add_user_to_locking_range(struct dev *iter) printf("Specify locking range id:\n"); if (!scanf("%d", &locking_range_id)) { printf("Invalid locking range id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("which user to enable:\n"); if (!scanf("%d", &user_id)) { printf("Invalid user id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } while (getchar() != '\n'); @@ -1357,7 +1357,7 @@ opal_add_user_to_locking_range(struct dev *iter) passwd_p); if (ret) { printf("Add user to locking range error: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1366,7 +1366,7 @@ opal_add_user_to_locking_range(struct dev *iter) printf("Input password invalid. Add user to locking range failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1386,7 +1386,7 @@ opal_user_lock_unlock_range(struct dev *iter) enum spdk_opal_lock_state state_flag; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1394,7 +1394,7 @@ opal_user_lock_unlock_range(struct dev *iter) printf("User id: "); if (!scanf("%d", &user_id)) { printf("Invalid user id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1406,7 +1406,7 @@ opal_user_lock_unlock_range(struct dev *iter) printf("Specify locking range id:\n"); if (!scanf("%d", &locking_range_id)) { printf("Invalid locking range id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } @@ -1426,7 +1426,7 @@ opal_user_lock_unlock_range(struct dev *iter) break; default: printf("Invalid options\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } while (getchar() != '\n'); @@ -1435,7 +1435,7 @@ opal_user_lock_unlock_range(struct dev *iter) locking_range_id, passwd_p); if (ret) { printf("lock/unlock range failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("...\n...\nLock/unlock range Success\n"); @@ -1443,7 +1443,7 @@ opal_user_lock_unlock_range(struct dev *iter) printf("Input password invalid. lock/unlock range failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1459,7 +1459,7 @@ opal_revert_tper(struct dev *iter) int ch; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1474,7 +1474,7 @@ opal_revert_tper(struct dev *iter) ret = spdk_opal_cmd_revert_tper(iter->opal_dev, passwd_p); if (ret) { printf("Revert TPer failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("...\nRevert TPer Success\n"); @@ -1482,7 +1482,7 @@ opal_revert_tper(struct dev *iter) printf("Input password invalid. Revert TPer failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); @@ -1499,7 +1499,7 @@ opal_erase_locking_range(struct dev *iter) int locking_range_id; if (spdk_nvme_ctrlr_get_flags(iter->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - iter->opal_dev = spdk_opal_init_dev(iter->ctrlr); + iter->opal_dev = spdk_opal_dev_construct(iter->ctrlr); if (iter->opal_dev == NULL) { return; } @@ -1512,14 +1512,14 @@ opal_erase_locking_range(struct dev *iter) printf("\nSpecify locking range id:\n"); if (!scanf("%d", &locking_range_id)) { printf("Invalid locking range id\n"); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("\n...\n"); ret = spdk_opal_cmd_erase_locking_range(iter->opal_dev, OPAL_ADMIN1, locking_range_id, passwd_p); if (ret) { printf("Erase locking range failure: %d\n", ret); - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); return; } printf("...\nErase locking range Success\n"); @@ -1527,7 +1527,7 @@ opal_erase_locking_range(struct dev *iter) printf("Input password invalid. Erase locking range failure\n"); } } - spdk_opal_close(iter->opal_dev); + spdk_opal_dev_destruct(iter->opal_dev); } else { printf("%04x:%02x:%02x.%02x: NVMe Security Support/Receive Not supported.\nOpal Not Supported\n\n\n", iter->pci_addr.domain, iter->pci_addr.bus, iter->pci_addr.dev, iter->pci_addr.func); diff --git a/include/spdk/opal.h b/include/spdk/opal.h index 95c253c4e..06d75b571 100644 --- a/include/spdk/opal.h +++ b/include/spdk/opal.h @@ -131,9 +131,9 @@ struct spdk_opal_dev; typedef void (*spdk_opal_revert_cb)(struct spdk_opal_dev *dev, void *ctx, int rc); -struct spdk_opal_dev *spdk_opal_init_dev(void *dev_handler); +struct spdk_opal_dev *spdk_opal_dev_construct(struct spdk_nvme_ctrlr *ctrlr); +void spdk_opal_dev_destruct(struct spdk_opal_dev *dev); -void spdk_opal_close(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); diff --git a/lib/nvme/nvme_opal.c b/lib/nvme/nvme_opal.c index b31dd85fc..198a4c6a2 100644 --- a/lib/nvme/nvme_opal.c +++ b/lib/nvme/nvme_opal.c @@ -61,7 +61,7 @@ opal_flush_response_buffer(struct spdk_opal_dev *dev) void *response = dev->resp; int ret = 0; - ret = spdk_nvme_ctrlr_security_receive(dev->dev_handler, SPDK_SCSI_SECP_TCG, dev->comid, + ret = spdk_nvme_ctrlr_security_receive(dev->ctrlr, SPDK_SCSI_SECP_TCG, dev->comid, 0, response, IO_BUFFER_LENGTH); if (ret) { SPDK_ERRLOG("Security Receive Error on dev = %p\n", dev); @@ -75,7 +75,7 @@ opal_flush_response_buffer(struct spdk_opal_dev *dev) static int opal_send_cmd(struct spdk_opal_dev *dev) { - return spdk_nvme_ctrlr_security_send(dev->dev_handler, SPDK_SCSI_SECP_TCG, dev->comid, + return spdk_nvme_ctrlr_security_send(dev->ctrlr, SPDK_SCSI_SECP_TCG, dev->comid, 0, dev->cmd, IO_BUFFER_LENGTH); } @@ -89,7 +89,7 @@ opal_recv_cmd(struct spdk_opal_dev *dev) uint64_t now; do { - ret = spdk_nvme_ctrlr_security_receive(dev->dev_handler, SPDK_SCSI_SECP_TCG, dev->comid, + ret = spdk_nvme_ctrlr_security_receive(dev->ctrlr, SPDK_SCSI_SECP_TCG, dev->comid, 0, dev->resp, IO_BUFFER_LENGTH); if (ret) { SPDK_ERRLOG("Security Receive Error on dev = %p\n", dev); @@ -908,7 +908,6 @@ opal_setup_dev(struct spdk_opal_dev *dev) dev->tsn = 0; dev->hsn = 0; dev->prev_data = NULL; - dev->timeout = SPDK_OPAL_TPER_TIMEOUT; } static int @@ -949,7 +948,7 @@ opal_check_support(struct spdk_opal_dev *dev) } void -spdk_opal_close(struct spdk_opal_dev *dev) +spdk_opal_dev_destruct(struct spdk_opal_dev *dev) { pthread_mutex_destroy(&dev->mutex_lock); if (dev->max_ranges > 0) { @@ -1840,7 +1839,7 @@ end: } struct spdk_opal_dev * -spdk_opal_init_dev(void *dev_handler) + spdk_opal_dev_construct(struct spdk_nvme_ctrlr *ctrlr) { struct spdk_opal_dev *dev; @@ -1850,7 +1849,8 @@ spdk_opal_init_dev(void *dev_handler) return NULL; } - dev->dev_handler = dev_handler; + dev->ctrlr = ctrlr; + dev->timeout = SPDK_OPAL_TPER_TIMEOUT; if (opal_check_support(dev) != 0) { SPDK_INFOLOG(SPDK_LOG_OPAL, "Opal is not supported on this device\n"); @@ -1874,7 +1874,7 @@ spdk_opal_cmd_scan(struct spdk_opal_dev *dev) ret = opal_check_support(dev); if (ret) { SPDK_ERRLOG("check opal support failed: %d\n", ret); - spdk_opal_close(dev); + spdk_opal_dev_destruct(dev); } return ret; } @@ -2066,7 +2066,7 @@ spdk_opal_revert_poll(struct spdk_opal_dev *dev) assert(dev->revert_cb_fn); - ret = spdk_nvme_ctrlr_security_receive(dev->dev_handler, SPDK_SCSI_SECP_TCG, dev->comid, + ret = spdk_nvme_ctrlr_security_receive(dev->ctrlr, SPDK_SCSI_SECP_TCG, dev->comid, 0, dev->resp, IO_BUFFER_LENGTH); if (ret) { SPDK_ERRLOG("Security Receive Error on dev = %p\n", dev); diff --git a/lib/nvme/nvme_opal_internal.h b/lib/nvme/nvme_opal_internal.h index 83bdafbfa..299db975f 100644 --- a/lib/nvme/nvme_opal_internal.h +++ b/lib/nvme/nvme_opal_internal.h @@ -268,7 +268,7 @@ struct spdk_opal_header { struct spdk_opal_dev { bool supported; - void *dev_handler; + struct spdk_nvme_ctrlr *ctrlr; uint16_t comid; uint32_t hsn; diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 4958a4e14..8c1cb4d6b 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1295,10 +1295,9 @@ create_ctrlr(struct spdk_nvme_ctrlr *ctrlr, if (spdk_nvme_ctrlr_get_flags(nvme_bdev_ctrlr->ctrlr) & SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED) { - nvme_bdev_ctrlr->opal_dev = spdk_opal_init_dev(nvme_bdev_ctrlr->ctrlr); + nvme_bdev_ctrlr->opal_dev = spdk_opal_dev_construct(nvme_bdev_ctrlr->ctrlr); if (nvme_bdev_ctrlr->opal_dev == NULL) { SPDK_ERRLOG("Failed to initialize Opal\n"); - return -ENOMEM; } } return 0; diff --git a/module/bdev/nvme/common.c b/module/bdev/nvme/common.c index b30f26a45..c8aaa8ad9 100644 --- a/module/bdev/nvme/common.c +++ b/module/bdev/nvme/common.c @@ -140,7 +140,7 @@ nvme_bdev_ctrlr_destruct(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr) /* wait until we get the result */ while (spdk_opal_revert_poll(nvme_bdev_ctrlr->opal_dev) == -EAGAIN); } - spdk_opal_close(nvme_bdev_ctrlr->opal_dev); + spdk_opal_dev_destruct(nvme_bdev_ctrlr->opal_dev); nvme_bdev_ctrlr->opal_dev = NULL; } diff --git a/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c b/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c index 29761e89c..85c3c811c 100644 --- a/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c +++ b/test/unit/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut.c @@ -49,7 +49,7 @@ DEFINE_STUB(spdk_nvme_ctrlr_is_ocssd_ns, bool, (struct spdk_nvme_ctrlr *ctrlr, u true); DEFINE_STUB(spdk_nvme_ns_get_extended_sector_size, uint32_t, (struct spdk_nvme_ns *ns), 4096); DEFINE_STUB(spdk_nvme_ns_is_active, bool, (struct spdk_nvme_ns *ns), true); -DEFINE_STUB_V(spdk_opal_close, (struct spdk_opal_dev *dev)); +DEFINE_STUB_V(spdk_opal_dev_destruct, (struct spdk_opal_dev *dev)); DEFINE_STUB(spdk_opal_revert_poll, int, (struct spdk_opal_dev *dev), 0); DEFINE_STUB_V(spdk_bdev_io_complete_nvme_status, (struct spdk_bdev_io *bdev_io, uint32_t cdw0, int sct, int sc));