From 16d84b030520c431daafcca4f1df00a1de5d20bb Mon Sep 17 00:00:00 2001 From: Mr NeilBrown Date: Mon, 9 May 2022 14:02:18 +1000 Subject: [PATCH] LU-10391 obdclass: change class_add/check_uuid to large nid 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 Change-Id: Iffb7aa830ca8da737fd989b11522a50f2e23effd Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50086 Tested-by: jenkins Tested-by: Maloo Reviewed-by: jsimmons Reviewed-by: Frank Sehr Reviewed-by: Chris Horn Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- lustre/include/obd_class.h | 4 ++-- lustre/ldlm/ldlm_lib.c | 13 +++++++++---- lustre/obdclass/lustre_peer.c | 24 ++++++++++-------------- lustre/obdclass/obd_config.c | 5 +++-- lustre/target/tgt_mount.c | 11 +++++++---- 5 files changed, 31 insertions(+), 26 deletions(-) diff --git a/lustre/include/obd_class.h b/lustre/include/obd_class.h index 5a9bd43..4b1d04e 100644 --- a/lustre/include/obd_class.h +++ b/lustre/include/obd_class.h @@ -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[]; diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index 850d2d3..41b6b95 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -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, diff --git a/lustre/obdclass/lustre_peer.c b/lustre/obdclass/lustre_peer.c index 19f30eb..8b47ccb 100644 --- a/lustre/obdclass/lustre_peer.c +++ b/lustre/obdclass/lustre_peer.c @@ -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; } diff --git a/lustre/obdclass/obd_config.c b/lustre/obdclass/obd_config.c index b93d50b..56dacf7 100644 --- a/lustre/obdclass/obd_config.c +++ b/lustre/obdclass/obd_config.c @@ -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: { diff --git a/lustre/target/tgt_mount.c b/lustre/target/tgt_mount.c index 442e289..5ad7670 100644 --- a/lustre/target/tgt_mount.c +++ b/lustre/target/tgt_mount.c @@ -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); -- 1.8.3.1