Whamcloud - gitweb
LU-10391 obdclass: change class_add/check_uuid to large nid 86/50086/8
authorMr NeilBrown <neilb@suse.de>
Mon, 9 May 2022 04:02:18 +0000 (14:02 +1000)
committerOleg Drokin <green@whamcloud.com>
Tue, 11 Apr 2023 20:02:26 +0000 (20:02 +0000)
class_add_uuid() and class_check_uuid() are changed to take
a struct lnet_nid* rather than a __u64 (aka lnet_nid_t).

Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Iffb7aa830ca8da737fd989b11522a50f2e23effd
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50086
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: jsimmons <jsimmons@infradead.org>
Reviewed-by: Frank Sehr <fsehr@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/include/obd_class.h
lustre/ldlm/ldlm_lib.c
lustre/obdclass/lustre_peer.c
lustre/obdclass/obd_config.c
lustre/target/tgt_mount.c

index 5a9bd43..4b1d04e 100644 (file)
@@ -1905,11 +1905,11 @@ int lustre_check_exclusion(struct super_block *sb, char *svname);
 /* lustre_peer.c    */
 int lustre_uuid_to_peer(const char *uuid, struct lnet_nid *peer_nid,
                        int index);
-int class_add_uuid(const char *uuid, __u64 nid);
+int class_add_uuid(const char *uuid, struct lnet_nid *nid);
 int class_del_uuid (const char *uuid);
 int class_add_nids_to_uuid(struct obd_uuid *uuid, lnet_nid_t *nids,
                           int nid_count);
-int class_check_uuid(struct obd_uuid *uuid, __u64 nid);
+int class_check_uuid(struct obd_uuid *uuid, struct lnet_nid *nid);
 
 /* class_obd.c */
 extern char obd_jobid_name[];
index 850d2d3..41b6b95 100644 (file)
@@ -145,16 +145,18 @@ int client_import_add_conn(struct obd_import *imp, struct obd_uuid *uuid,
 EXPORT_SYMBOL(client_import_add_conn);
 
 int client_import_dyn_add_conn(struct obd_import *imp, struct obd_uuid *uuid,
-                              lnet_nid_t prim_nid, int priority)
+                              lnet_nid_t prim_nid4, int priority)
 {
        struct ptlrpc_connection *ptlrpc_conn;
+       struct lnet_nid prim_nid;
        int rc;
 
-       ptlrpc_conn = ptlrpc_uuid_to_connection(uuid, LNET_NIDNET(prim_nid));
+       lnet_nid4_to_nid(prim_nid4, &prim_nid);
+       ptlrpc_conn = ptlrpc_uuid_to_connection(uuid, LNET_NID_NET(&prim_nid));
        if (!ptlrpc_conn) {
                const char *str_uuid = obd_uuid2str(uuid);
 
-               rc = class_add_uuid(str_uuid, prim_nid);
+               rc = class_add_uuid(str_uuid, &prim_nid);
                if (rc) {
                        CERROR("%s: failed to add UUID '%s': rc = %d\n",
                               imp->imp_obd->obd_name, str_uuid, rc);
@@ -177,7 +179,10 @@ int client_import_add_nids_to_conn(struct obd_import *imp, lnet_nid_t *nids,
 
        spin_lock(&imp->imp_lock);
        list_for_each_entry(conn, &imp->imp_conn_list, oic_item) {
-               if (class_check_uuid(&conn->oic_uuid, nids[0])) {
+               struct lnet_nid nid;
+
+               lnet_nid4_to_nid(nids[0], &nid);
+               if (class_check_uuid(&conn->oic_uuid, &nid)) {
                        *uuid = conn->oic_uuid;
                        spin_unlock(&imp->imp_lock);
                        rc = class_add_nids_to_uuid(&conn->oic_uuid, nids,
index 19f30eb..8b47ccb 100644 (file)
@@ -75,15 +75,13 @@ EXPORT_SYMBOL(lustre_uuid_to_peer);
 
 /* Add a nid to a niduuid.  Multiple nids can be added to a single uuid;
    LNET will choose the best one. */
-int class_add_uuid(const char *uuid, lnet_nid_t nid4)
+int class_add_uuid(const char *uuid, struct lnet_nid *nid)
 {
        struct uuid_nid_data *data, *entry;
-       struct lnet_nid nid;
        int found = 0;
        int rc;
 
-       LASSERT(nid4 != 0);  /* valid newconfig NID is never zero */
-       lnet_nid4_to_nid(nid4, &nid);
+       LASSERT(nid->nid_type != 0);  /* valid newconfig NID is never zero */
 
        if (strlen(uuid) > UUID_MAX - 1)
                return -EOVERFLOW;
@@ -93,7 +91,7 @@ int class_add_uuid(const char *uuid, lnet_nid_t nid4)
                return -ENOMEM;
 
        obd_str2uuid(&data->un_uuid, uuid);
-       data->un_nids[0] = nid;
+       data->un_nids[0] = *nid;
        data->un_nid_count = 1;
 
        spin_lock(&g_uuid_lock);
@@ -103,12 +101,12 @@ int class_add_uuid(const char *uuid, lnet_nid_t nid4)
 
                        found = 1;
                        for (i = 0; i < entry->un_nid_count; i++)
-                               if (nid_same(&nid, &entry->un_nids[i]))
+                               if (nid_same(nid, &entry->un_nids[i]))
                                        break;
 
                        if (i == entry->un_nid_count) {
                                LASSERT(entry->un_nid_count < MTI_NIDS_MAX);
-                               entry->un_nids[entry->un_nid_count++] = nid;
+                               entry->un_nids[entry->un_nid_count++] = *nid;
                        }
                        break;
                }
@@ -119,13 +117,13 @@ int class_add_uuid(const char *uuid, lnet_nid_t nid4)
 
        if (found) {
                CDEBUG(D_INFO, "found uuid %s %s cnt=%d\n", uuid,
-                      libcfs_nidstr(&nid), entry->un_nid_count);
+                      libcfs_nidstr(nid), entry->un_nid_count);
                rc = LNetAddPeer(entry->un_nids, entry->un_nid_count);
                CDEBUG(D_INFO, "Add peer %s rc = %d\n",
                       libcfs_nidstr(&data->un_nids[0]), rc);
                OBD_FREE(data, sizeof(*data));
        } else {
-               CDEBUG(D_INFO, "add uuid %s %s\n", uuid, libcfs_nidstr(&nid));
+               CDEBUG(D_INFO, "add uuid %s %s\n", uuid, libcfs_nidstr(nid));
                rc = LNetAddPeer(data->un_nids, data->un_nid_count);
                CDEBUG(D_INFO, "Add peer %s rc = %d\n",
                       libcfs_nidstr(&data->un_nids[0]), rc);
@@ -217,17 +215,15 @@ int class_add_nids_to_uuid(struct obd_uuid *uuid, lnet_nid_t *nids,
 EXPORT_SYMBOL(class_add_nids_to_uuid);
 
 /* check if @nid exists in nid list of @uuid */
-int class_check_uuid(struct obd_uuid *uuid, lnet_nid_t nid4)
+int class_check_uuid(struct obd_uuid *uuid, struct lnet_nid *nid)
 {
        struct uuid_nid_data *entry;
-       struct lnet_nid nid;
        int found = 0;
 
        ENTRY;
 
-       lnet_nid4_to_nid(nid4, &nid);
        CDEBUG(D_INFO, "check if uuid %s has %s.\n",
-              obd_uuid2str(uuid), libcfs_nidstr(&nid));
+              obd_uuid2str(uuid), libcfs_nidstr(nid));
 
        spin_lock(&g_uuid_lock);
        list_for_each_entry(entry, &g_uuid_list, un_list) {
@@ -238,7 +234,7 @@ int class_check_uuid(struct obd_uuid *uuid, lnet_nid_t nid4)
 
                /* found the uuid, check if it has @nid */
                for (i = 0; i < entry->un_nid_count; i++) {
-                       if (nid_same(&entry->un_nids[i], &nid)) {
+                       if (nid_same(&entry->un_nids[i], nid)) {
                                found = 1;
                                break;
                        }
index b93d50b..56dacf7 100644 (file)
@@ -1381,6 +1381,7 @@ EXPORT_SYMBOL(lustre_register_quota_process_config);
 int class_process_config(struct lustre_cfg *lcfg)
 {
        struct obd_device *obd;
+       struct lnet_nid nid;
        int err;
 
        LASSERT(lcfg && !IS_ERR(lcfg));
@@ -1398,8 +1399,8 @@ int class_process_config(struct lustre_cfg *lcfg)
                       lustre_cfg_string(lcfg, 1), lcfg->lcfg_nid,
                       libcfs_nid2str(lcfg->lcfg_nid));
 
-               err = class_add_uuid(lustre_cfg_string(lcfg, 1),
-                                    lcfg->lcfg_nid);
+               lnet_nid4_to_nid(lcfg->lcfg_nid, &nid);
+               err = class_add_uuid(lustre_cfg_string(lcfg, 1), &nid);
                GOTO(out, err);
        }
        case LCFG_DEL_UUID: {
index 442e289..5ad7670 100644 (file)
@@ -640,11 +640,12 @@ static int lustre_lwp_setup(struct lustre_cfg *lcfg, struct lustre_sb_info *lsi,
        struct obd_device *obd;
        char *lwpname = NULL;
        char *lwpuuid = NULL;
+       struct lnet_nid nid;
        int rc;
 
        ENTRY;
-       rc = class_add_uuid(lustre_cfg_string(lcfg, 1),
-                           lcfg->lcfg_nid);
+       lnet_nid4_to_nid(lcfg->lcfg_nid, &nid);
+       rc = class_add_uuid(lustre_cfg_string(lcfg, 1), &nid);
        if (rc != 0) {
                CERROR("%s: Can't add uuid: rc =%d\n", lsi->lsi_svname, rc);
                RETURN(rc);
@@ -869,8 +870,10 @@ static int client_lwp_config_process(const struct lu_env *env,
                         */
                        cfg->cfg_flags |= CFG_F_SKIP;
                } else if (cfg->cfg_flags == (CFG_F_MARKER | CFG_F_SKIP)) {
-                       rc = class_add_uuid(lustre_cfg_string(lcfg, 1),
-                                           lcfg->lcfg_nid);
+                       struct lnet_nid nid;
+
+                       lnet_nid4_to_nid(lcfg->lcfg_nid, &nid);
+                       rc = class_add_uuid(lustre_cfg_string(lcfg, 1), &nid);
                        if (rc < 0)
                                CERROR("%s: Fail to add uuid, rc:%d\n",
                                       lsi->lsi_svname, rc);