LU-18210 utils: Fix issues with enhanced 'lfs check'
lfs check takes an optional path argument that should restrict its
output to the targets that are related to the specified file system.
To determine which MGC should be shown the NID embedded in the OBD
name is compared against a NID that is parsed from the mount command
line. There are a few problems with this code:
1. The NID is parsed from the mount command by looking for a ':', but
IPv6 NIDs can contain this character.
2. It doesn't handle case where multiple NIDs are listed on mount
command separated by commas. e.g. "1@kfi,2@kfi:3@kfi,4@kfi:/lustre"
will parse to "1@kfi,2@kfi" which is not a valid NID.
3. Even in the case where we have just two NIDs separated by ':', it
assumes that the first one will be the one we are connected to.
To resolve these issues get_root_path_slow() will now store the entire
NID string used at mount time (after it has been processed by
convert_hostnames()) in the struct root_cache::nid. do_target_check()
will then iterate over each NID in the string using a new nidstrings
function, cfs_nidstr_find_delimiter(). This function contains logic
that was formerly in convert_hostnames(). This should ensure that
each MGS NID is checked.
convert_hostnames() is updated to use cfs_nidstr_find_delimiter() as
well.
Fixes:
6301419509 ("LU-17367 utils: improved hostname and IPv6 NID support")
Fixes:
f5ca6853b8 ("LU-16076 utils: enhance 'lfs check' command")
Test-Parameters: testlist=sanityn env=ONLY=113,FORCE_LARGE_NID=true,LOAD_MODULES_REMOTE=true
Signed-off-by: Chris Horn <chris.horn@hpe.com>
Change-Id: I478c66d77a2b241b910324210475d61b3786c986
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56286
Tested-by: Maloo <maloo@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Feng Lei <flei@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Maximilian Dilger <mdilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>