[LU-13340] add LCFG_ADD_UUIDv6 and related commands Created: 07/Mar/20  Updated: 07/Jan/24  Resolved: 09/Jul/23

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.16.0

Type: Improvement Priority: Minor
Reporter: Andreas Dilger Assignee: James A Simmons
Resolution: Fixed Votes: 0
Labels: IPv6

Issue Links:
Related
is related to LU-10360 use Imperative Recovery logs for clie... Open
is related to LU-10391 LNET: Support IPv6 Reopened
is related to LU-10359 remove NIDs from config llogs Open
is related to LU-16827 obdfilter-survey: /usr/bin/obdfilter-... Resolved
Rank (Obsolete): 9223372036854775807

 Description   

In order to configure IPv6 interfaces for Lustre, there needs to be new LCFG_ADD_UUIDv6, LCFG_DEL_UUIDv6, and possibly LCFG_ADD_CONNv6 and LCFG_DEL_CONNv6 configuration log records added to the system. Even with LU-10359 and LU-10360, mount.lustre will pass down an IPv6 address NID (in ASCII format) resolved in userspace to the kernel via the "mgsnode=<nid>[:<nid>]" mount option, and generate a synthetic configuration record(s) in lustre_start_mgc->do_node(LCFG_ADD_UUID) to establish the initial MGC connection.

Later on, whether the config logs have LCFG_ADD_UUIDv6 records, or the target NIDs are passed via Imperative Recovery Target Status Table, the same do_node(LCFG_ADD_UUID) command will generate a configuration record to configure the interfaces.

Rather than storing the IPv6 NIDs in the lcfg_nid field, since this is tied to the on-disk format of the lustre_cfg records and needs to be declared as an lnet_nid4_t, the LCFG_ADD_UUIDv6 record should store the NID in ASCII format in lcfg_buflens[1] and use libcfs_str2nid() in the kernel to convert it to a binary lnet_nid_t (presumably lnet_nid6_t at this point) to pass down to class_add_uuid().

The class_add_uuid() function should be changed to take lnet_nid_t as an argument (as should anywhere else that is currently using __u64 for storing a NID).



 Comments   
Comment by Gerrit Updater [ 22/Apr/23 ]

"Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/c/fs/lustre-release/+/50093/
Subject: LU-13340 mgs: change record_add_uuid() to take large nids
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 8851266823b23e098ca640bc8dc18472c4d40b36

Comment by Gerrit Updater [ 22/Apr/23 ]

"Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/c/fs/lustre-release/+/50094/
Subject: LU-13340 mgs: convert class_parse_nid4 to class_parse_nid
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 6c3b50434b321cc16c9d08bdf22be1ffbdaf9264

Comment by James A Simmons [ 22/Apr/23 ]

More patches coming

 

Comment by James A Simmons [ 06/Jul/23 ]

After patch https://review.whamcloud.com/#/c/fs/lustre-release/+/50096 lands we still need to deal with the UUID overflow issue:

LustreError: 3289918:0:(ldlm_lib.c:385:client_obd_setup()) target UUID must be less than 38 characters
LustreError: 3289918:0:(obd_config.c:782:class_setup()) setup MGC2345:425:2ca1::567:5673:23b5@tcp failed (-22)

Comment by Andreas Dilger [ 06/Jul/23 ]

james, do we ever extract the NID out of the device name/UUID, or is this just for identification? I suspect we would be OK to truncate this part of the NID, since other parts of the NID will be enough to identify it, and it is unlikely that many MGSes will be used by a single client (at most one per unique filesystem).

Comment by Gerrit Updater [ 08/Jul/23 ]

"Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/c/fs/lustre-release/+/50096/
Subject: LU-13340 lustre: Support large nids in LCFG_ADD_UUID
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: e7cf1fc1f274484dbd31e227652153fd4118aeef

Comment by Peter Jones [ 09/Jul/23 ]

Landed for 2.16

Generated at Sat Feb 10 03:00:26 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.