Split "lctl nodemap_*" command group into subcommands, e.g.
"lctl nodemap_add" to "lctl nodemap add". And "lctl nodemap_*"
commands in sanity-sec.sh are modified to verify this patch.
Also, the old man pages are modified to reflect the new command
format, and the new man page references for lctl-nodemap_xxx.8 are
added to match the old ones.
Test-Parameters: testlist=sanity-sec
Signed-off-by: Emoly Liu <emoly@whamcloud.com>
Change-Id: I165583d95f4a850ce2461c15c56583d64077ef16
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56207
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
Reviewed-by: Marc Vef <mvef@whamcloud.com>
lctl-llog_remove.8 \
lctl-del_ost.8 \
lctl-nodemap-activate.8 \
+ lctl-nodemap_activate.8 \
lctl-nodemap-add-idmap.8 \
+ lctl-nodemap_add_idmap.8 \
lctl-nodemap-add-range.8 \
+ lctl-nodemap_add_range.8 \
lctl-nodemap-add.8 \
+ lctl-nodemap_add.8 \
lctl-nodemap-del-idmap.8 \
+ lctl-nodemap_del_idmap.8 \
lctl-nodemap-del-range.8 \
+ lctl-nodemap_del_range.8 \
lctl-nodemap-del.8 \
+ lctl-nodemap_del.8 \
lctl-nodemap-modify.8 \
+ lctl-nodemap_modify.8 \
lctl-nodemap-set-fileset.8 \
+ lctl-nodemap_set_fileset.8 \
lctl-nodemap-set-sepol.8 \
+ lctl-nodemap_set_sepol.8 \
lctl-nodemap-add-offset.8 \
+ lctl-nodemap_add_offset.8 \
lctl-nodemap-del-offset.8 \
+ lctl-nodemap_del_offset.8 \
lctl-snapshot-create.8 \
lctl-snapshot-destroy.8 \
lctl-snapshot-list.8 \
lctl-nodemap_activate \- activate or deactivate the nodemap feature
.SH SYNOPSIS
.SY "lctl nodemap_activate"
+or
+.SY "lctl nodemap activate"
.RB { <0,off,false,f,no,n> | <1,on,true,t,yes,y> }
.YS
.SH DESCRIPTION
lctl-nodemap_add_idmap \- define ID mappings for a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_add_idmap"
+or
+.SY "lctl nodemap add_idmap"
.B --name
.I NODEMAP_NAME
.BR --idtype " {" uid | gid | projid }
lctl-nodemap_add_offset \- define ID mapping offset for a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_add_offset"
+or
+.SY "lctl nodemap add_offset"
.BI --name " NAME"
.BI --offset " OFFSET"
.BI --limit " FSID_COUNT"
lctl-nodemap_add_range \- define a range of NIDs for a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_add_range"
+or
+.SY "lctl nodemap add_range"
.BI --name " NODEMAP_NAME"
.BI --range " NID_RANGE"
.YS
.SH NAME
lctl-nodemap_add \- create a new nodemap to define client behavior
.SH SYNOPSIS
-.BR "lctl nodemap_add" " [ " -d "|" --dynamic " ] " \fINODEMAP_NAME
+.SY "lctl nodemap_add"
+or
+.SY "lctl nodemap add"
+.BR "[ " -d "|" --dynamic " ] " \fINODEMAP_NAME
.br
.SH DESCRIPTION
.B nodemap_add
lctl-nodemap_del_idmap \- delete an existing idmap from a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_del_idmap"
+or
+.SY "lctl nodemap del_idmap"
.BI --name " NODEMAP_NAME"
.BR --idtype " {" uid | gid | projid }
.B --idmap
lctl-nodemap_del_offset \- remove ID mapping offset from a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_del_offset"
+or
+.SY "lctl nodemap del_offset"
.BI --name " NAME"
.YS
.SH DESCRIPTION
lctl-nodemap_del_range \- delete an existing NID range from a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_del_range"
+or
+.SY "lctl nodemap del_range"
.BI --name " NODEMAP_NAME"
.BI --range " NID_RANGE"
.YS
lctl-nodemap_del \- delete an existing nodemap
.SH SYNOPSIS
.SY "lctl nodemap_del"
+or
+.SY "lctl nodemap del"
.I NODEMAP_NAME
.YS
.SH DESCRIPTION
lctl-nodemap_modify \- modify a nodemap property
.SH SYNOPSIS
.SY "lctl nodemap_modify"
+or
+.SY "lctl nodemap modify"
.BI --name " NODEMAP_NAME"
.BI --property " PROPERTY_NAME"
.BI --value " VALUE"
lctl-nodemap_set_fileset \- add a fileset to a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_set_fileset"
+or
+.SY "lctl nodemap set_fileset"
.BI --name " NODEMAP"
.BI --fileset " SUBDIRECTORY"
.YS
lctl-nodemap_set_sepol \- set SELinux policy info on a nodemap
.SH SYNOPSIS
.SY "lctl nodemap_set_sepol"
+or
+.SY "lctl nodemap set_sepol"
.BI --name " NODEMAP"
.BI --sepol " POLICY"
.YS
--- /dev/null
+.so man8/lctl-nodemap-activate.8
--- /dev/null
+.so man8/lctl-nodemap-add.8
--- /dev/null
+.so man8/lctl-nodemap-add-idmap.8
--- /dev/null
+.so man8/lctl-nodemap-add-offset.8
--- /dev/null
+.so man8/lctl-nodemap-add-range.8
--- /dev/null
+.so man8/lctl-nodemap-del.8
--- /dev/null
+.so man8/lctl-nodemap-del-idmap.8
--- /dev/null
+.so man8/lctl-nodemap-del-offset.8
--- /dev/null
+.so man8/lctl-nodemap-del-range.8
--- /dev/null
+.so man8/lctl-nodemap-modify.8
--- /dev/null
+.so man8/lctl-nodemap-set-fileset.8
--- /dev/null
+.so man8/lctl-nodemap-set-sepol.8
SAVE_PWD=$PWD
+if (( $MDS1_VERSION >= $(version_code 2.16.51) )); then
+ nodemap_activate="nodemap activate"
+ nodemap_add="nodemap add"
+ nodemap_del="nodemap del"
+ nodemap_modify="nodemap modify"
+ nodemap_add_range="nodemap add_range"
+ nodemap_del_range="nodemap del_range"
+ nodemap_add_idmap="nodemap add_idmap"
+ nodemap_del_idmap="nodemap del_idmap"
+ nodemap_test_nid="nodemap test_nid"
+ nodemap_test_id="nodemap test_id"
+ nodemap_set_fileset="nodemap set_fileset"
+ nodemap_set_sepol="nodemap set_sepol"
+else
+ nodemap_activate="nodemap_activate"
+ nodemap_add="nodemap_add"
+ nodemap_del="nodemap_del"
+ nodemap_modify="nodemap_modify"
+ nodemap_add_range="nodemap_add_range"
+ nodemap_del_range="nodemap_del_range"
+ nodemap_add_idmap="nodemap_add_idmap"
+ nodemap_del_idmap="nodemap_del_idmap"
+ nodemap_test_nid="nodemap_test_nid"
+ nodemap_test_id="nodemap_test_id"
+ nodemap_set_fileset="nodemap_set_fileset"
+ nodemap_set_sepol="nodemap_set_sepol"
+fi
+
sec_login() {
local user=$1
local group=$2
for (( i = 0; i < NODEMAP_COUNT; i++ )); do
local csum=${HOSTNAME_CHECKSUM}_${i}
- do_facet mgs $LCTL nodemap_add $csum
+ do_facet mgs $LCTL $nodemap_add $csum
rc=$?
if [ $rc -ne 0 ]; then
- echo "nodemap_add $csum failed with $rc"
+ echo "$nodemap_add $csum failed with $rc"
return $rc
fi
for ((i = 0; i < NODEMAP_COUNT; i++)); do
local csum=${HOSTNAME_CHECKSUM}_${i}
- if ! do_facet mgs $LCTL nodemap_del $csum; then
- error "nodemap_del $csum failed with $?"
+ if ! do_facet mgs $LCTL $nodemap_del $csum; then
+ error "$nodemap_del $csum failed with $?"
return 3
fi
add_range() {
local j
- local cmd="$LCTL nodemap_add_range"
+ local cmd="$LCTL $nodemap_add_range"
local range
local rc=0
delete_range() {
local j
- local cmd="$LCTL nodemap_del_range"
+ local cmd="$LCTL $nodemap_del_range"
local range
local rc=0
add_idmaps() {
local i
- local cmd="$LCTL nodemap_add_idmap"
+ local cmd="$LCTL $nodemap_add_idmap"
local do_proj=true
local rc=0
add_root_idmaps() {
local i
- local cmd="$LCTL nodemap_add_idmap"
+ local cmd="$LCTL $nodemap_add_idmap"
local rc=0
echo "Start to add root idmaps ..."
echo "Start to update idmaps ..."
#Inserting an existed idmap should return error
- cmd="$LCTL nodemap_add_idmap --name $csum --idtype uid"
+ cmd="$LCTL $nodemap_add_idmap --name $csum --idtype uid"
if do_facet mgs \
$cmd --idmap $old_id_client:$old_id_fs 2>/dev/null; then
error "insert idmap {$old_id_client:$old_id_fs} " \
rc=$((rc + 1)); return $rc; }
#Delete above updated idmap
- cmd="$LCTL nodemap_del_idmap --name $csum --idtype uid"
+ cmd="$LCTL $nodemap_del_idmap --name $csum --idtype uid"
if ! do_facet mgs $cmd --idmap $new_id:$new_id; then
error "$cmd --idmap $new_id:$new_id failed"
rc=$((rc + 1))
fi
#restore the idmaps to make delete_idmaps work well
- cmd="$LCTL nodemap_add_idmap --name $csum --idtype uid"
+ cmd="$LCTL $nodemap_add_idmap --name $csum --idtype uid"
if ! do_facet mgs $cmd --idmap $old_id_client:$old_id_fs; then
error "$cmd --idmap $old_id_client:$old_id_fs failed"
rc=$((rc + 1))
delete_idmaps() {
local i
- local cmd="$LCTL nodemap_del_idmap"
+ local cmd="$LCTL $nodemap_del_idmap"
local do_proj=true
local rc=0
delete_root_idmaps() {
local i
- local cmd="$LCTL nodemap_del_idmap"
+ local cmd="$LCTL $nodemap_del_idmap"
local rc=0
echo "Start to delete root idmaps ..."
local i
local proc
local option
- local cmd="$LCTL nodemap_modify"
+ local cmd="$LCTL $nodemap_modify"
local rc=0
proc[0]="admin_nodemap"
local cmd
- cmd[0]="$LCTL nodemap_modify --property squash_uid"
- cmd[1]="$LCTL nodemap_modify --property squash_gid"
- cmd[2]="$LCTL nodemap_modify --property squash_projid"
+ cmd[0]="$LCTL $nodemap_modify --property squash_uid"
+ cmd[1]="$LCTL $nodemap_modify --property squash_gid"
+ cmd[2]="$LCTL $nodemap_modify --property squash_projid"
if ! do_facet mgs ${cmd[$3]} --name $1 --value $2; then
return 1
test_nid() {
local cmd
- cmd="$LCTL nodemap_test_nid"
+ cmd="$LCTL $nodemap_test_nid"
nid=$(do_facet mgs $cmd $1)
cleanup_active() {
# restore activation state
- do_facet mgs $LCTL nodemap_activate 0
+ do_facet mgs $LCTL $nodemap_activate 0
wait_nm_sync active
}
test_idmap() {
local i
- local cmd="$LCTL nodemap_test_id"
+ local cmd="$LCTL $nodemap_test_id"
local do_root_idmap=true
local rc=0
echo "Start to test idmaps ..."
## nodemap deactivated
- if ! do_facet mgs $LCTL nodemap_activate 0; then
+ if ! do_facet mgs $LCTL $nodemap_activate 0; then
return 1
fi
for ((id = $ID0; id < NODEMAP_MAX_ID; id++)); do
done
## nodemap activated
- if ! do_facet mgs $LCTL nodemap_activate 1; then
+ if ! do_facet mgs $LCTL $nodemap_activate 1; then
return 2
fi
for ((i = 0; i < NODEMAP_COUNT; i++)); do
local csum=${HOSTNAME_CHECKSUM}_${i}
- if ! do_facet mgs $LCTL nodemap_modify --name $csum \
+ if ! do_facet mgs $LCTL $nodemap_modify --name $csum \
--property trusted --value 1; then
- error "nodemap_modify $csum failed with $?"
+ error "$nodemap_modify $csum failed with $?"
return 3
fi
done
for ((i = 0; i < NODEMAP_COUNT; i++)); do
local csum=${HOSTNAME_CHECKSUM}_${i}
- if ! do_facet mgs $LCTL nodemap_modify --name $csum \
+ if ! do_facet mgs $LCTL $nodemap_modify --name $csum \
--property admin --value 1; then
- error "nodemap_modify $csum failed with $?"
+ error "$nodemap_modify $csum failed with $?"
return 3
fi
done
for ((i = 0; i < NODEMAP_COUNT; i++)); do
local csum=${HOSTNAME_CHECKSUM}_${i}
- if ! do_facet mgs $LCTL nodemap_modify --name $csum \
+ if ! do_facet mgs $LCTL $nodemap_modify --name $csum \
--property admin --value 0; then
- error "nodemap_modify ${HOSTNAME_CHECKSUM}_${i} "
+ error "$nodemap_modify ${HOSTNAME_CHECKSUM}_${i} "
"failed with $rc"
return 3
fi
## reset client trust to 0
for ((i = 0; i < NODEMAP_COUNT; i++)); do
- if ! do_facet mgs $LCTL nodemap_modify \
+ if ! do_facet mgs $LCTL $nodemap_modify \
--name ${HOSTNAME_CHECKSUM}_${i} \
--property trusted --value 0; then
- error "nodemap_modify ${HOSTNAME_CHECKSUM}_${i} "
+ error "$nodemap_modify ${HOSTNAME_CHECKSUM}_${i} "
"failed with $rc"
return 3
fi
};
JT_SUBCMD(net_delay);
+/**
+ * command_t nodemap_cmdlist - lctl nodemap commands.
+ */
+command_t nodemap_cmdlist[] = {
+ {.pc_name = "activate", .pc_func = jt_nodemap_activate,
+ .pc_help = "activate nodemap idmapping functions\n"
+ "usage: nodemap activate {0|1}"},
+ {.pc_name = "add", .pc_func = jt_nodemap_add,
+ .pc_help = "add a new nodemap\n"
+ "usage: nodemap add [-d|--dynamic] NODEMAP_NAME"},
+ {.pc_name = "del", .pc_func = jt_nodemap_del,
+ .pc_help = "remove a nodemap\n"
+ "usage: nodemap del NODEMAP_NAME"},
+ {.pc_name = "add_range", .pc_func = jt_nodemap_add_range,
+ .pc_help = "add a nid range to a nodemap\n"
+ "usage: nodemap add_range --name NODEMAP_NAME --range NID_RANGE"},
+ {.pc_name = "del_range", .pc_func = jt_nodemap_del_range,
+ .pc_help = "delete a nid range from a nodemap\n"
+ "usage: nodemap del_range --name NODEMAP_NAME --range NID_RANGE"},
+ {.pc_name = "modify", .pc_func = jt_nodemap_modify,
+ .pc_help = "modify a nodemap parameters\n"
+ "usage: nodemap modify --name NODEMAP_NAME --property PROPERTY\n"
+ " --value VALUE"},
+ {.pc_name = "add_offset", .pc_func = jt_nodemap_add_offset,
+ .pc_help = "add an offset for UID/GID/PROJID mappings\n"
+ "usage: nodemap_add_offset --name NODEMAP_NAME --offset OFFSET\n"
+ " --limit LIMIT"},
+ {.pc_name = "del_offset", .pc_func = jt_nodemap_del_offset,
+ .pc_help = "delete an offset for UID/GID/PROJID mappings\n"
+ "usage: nodemap_del_offset --name NODEMAP_NAME"},
+ {.pc_name = "add_idmap", .pc_func = jt_nodemap_add_idmap,
+ .pc_help = "add a UID or GID mapping to a nodemap\n"
+ "usage: nodemap add_idmap --name NAME --idtype {uid|gid|projid}\n"
+ " --idmap CLIENTID:FSID"},
+ {.pc_name = "del_idmap", .pc_func = jt_nodemap_del_idmap,
+ .pc_help = "delete a UID or GID mapping from a nodemap\n"
+ "usage: nodemap del_idmap --name NAME --idtype {uid|gid|projid}\n"
+ " --idmap CLIENTID:FSID"},
+ {.pc_name = "set_fileset", .pc_func = jt_nodemap_set_fileset,
+ .pc_help = "set a fileset on a nodemap\n"
+ "usage: nodemap set_fileset --name NODEMAP_NAME --fileset FILESET"},
+ {.pc_name = "set_sepol", .pc_func = jt_nodemap_set_sepol,
+ .pc_help = "set SELinux policy info on a nodemap\n"
+ "usage: nodemap set_sepol --name NODEMAP_NAME --sepol SEPOL"},
+ {.pc_name = "test_nid", .pc_func = jt_nodemap_test_nid,
+ .pc_help = "test a nid for nodemap membership\n"
+ "usage: nodemap test_nid NID"},
+ {.pc_name = "test_id", .pc_func = jt_nodemap_test_id,
+ .pc_help = "test a nodemap id pair for mapping\n"
+ "usage: nodemap test_id --nid NID --idtype {uid|gid|projid} --id ID"},
+ {.pc_name = "info", .pc_func = jt_nodemap_info,
+ .pc_help = "print nodemap information\n"
+ "usage: nodemap info {list|nodemap_name|all}"},
+ {.pc_help = NULL }
+};
+JT_SUBCMD(nodemap);
+
#ifdef HAVE_SERVER_SUPPORT
/**
* command_t barrier_cmdlist - lctl barrier commands.
"remove a nodemap\n"
"usage: nodemap_del NODEMAP_NAME"},
{"nodemap_add_range", jt_nodemap_add_range, 0,
- "add a range to a nodemap\n"
+ "add a nid range to a nodemap\n"
"usage: nodemap_add_range --name NODEMAP_NAME --range NID_RANGE"},
{"nodemap_del_range", jt_nodemap_del_range, 0,
- "delete a range from a nodemap\n"
+ "delete a nid range from a nodemap\n"
"usage: nodemap_del_range --name NODEMAP_NAME --range NID_RANGE"},
{"nodemap_modify", jt_nodemap_modify, 0,
"modify a nodemap parameter\n"
"usage: nodemap_add_offset --name NODEMAP_NAME --offset OFFSET --limit LIMIT\n"},
{"nodemap_del_offset", jt_nodemap_del_offset, 0,
"delete an offset for UID/GID/PROJID mappings\n"
- "usage: nodemap_del_offset --name NODEMAP_NAME --offset OFFSET\n"},
+ "usage: nodemap_del_offset --name NODEMAP_NAME\n"},
{"nodemap_add_idmap", jt_nodemap_add_idmap, 0,
"add a UID or GID mapping to a nodemap\n"
- "usage: nodemap_add_idmap --name NODEMAP_NAME --idtype ID_TYPE --idmap CLIENTID:FSID"},
+ "usage: nodemap_add_idmap --name NODEMAP_NAME --idtype {uid|gid|projid} --idmap CLIENTID:FSID"},
{"nodemap_del_idmap", jt_nodemap_del_idmap, 0,
"delete a UID or GID mapping from a nodemap\n"
- "usage: nodemap_del_idmap --name NODEMAP_NAME --idtype ID_TYPE --idmap CLIENTID:FSID"},
+ "usage: nodemap_del_idmap --name NODEMAP_NAME --idtype {uid|gid|projid} --idmap CLIENTID:FSID"},
{"nodemap_set_fileset", jt_nodemap_set_fileset, 0,
"set a fileset on a nodemap\n"
"usage: nodemap_set_fileset --name NODEMAP_NAME --fileset FILESET"},
"set SELinux policy info on a nodemap\n"
"usage: nodemap_set_sepol --name NODEMAP_NAME --sepol SEPOL"},
{"nodemap_test_nid", jt_nodemap_test_nid, 0,
+ "test a nid for nodemap membership\n"
"usage: nodemap_test_nid NID"},
{"nodemap_test_id", jt_nodemap_test_id, 0,
+ "test a nodemap id pair for mapping\n"
"Usage: nodemap_test_id --nid NID --idtype ID_TYPE --id ID"},
{"nodemap_info", jt_nodemap_info, 0,
+ "print nodemap information\n"
"Usage: nodemap_info [list|nodemap_name|all]"},
+ {"nodemap", jt_nodemap, nodemap_cmdlist, ""},
/* Changelog commands */
{"=== Changelogs ==", NULL, 0, "changelog user management"},