Whamcloud - gitweb
LU-3527 nodemap: add NID range management
[fs/lustre-release.git] / lustre / mgs / mgs_llog.c
index f88c10b..945dca5 100644 (file)
@@ -3896,7 +3896,10 @@ int mgs_nodemap_cmd(const struct lu_env *env, struct mgs_device *mgs,
                    enum lcfg_command_type cmd, const char *nodemap_name,
                    const char *param)
 {
-       int rc = 0;
+       lnet_nid_t      nid[2];
+       bool            bool_switch;
+       __u32           int_id;
+       int             rc = 0;
        ENTRY;
 
        switch (cmd) {
@@ -3906,6 +3909,34 @@ int mgs_nodemap_cmd(const struct lu_env *env, struct mgs_device *mgs,
        case LCFG_NODEMAP_DEL:
                rc = nodemap_del(nodemap_name);
                break;
+       case LCFG_NODEMAP_ADD_RANGE:
+               rc = nodemap_parse_range(param, nid);
+               if (rc != 0)
+                       break;
+               rc = nodemap_add_range(nodemap_name, nid);
+               break;
+       case LCFG_NODEMAP_DEL_RANGE:
+               rc = nodemap_parse_range(param, nid);
+               if (rc != 0)
+                       break;
+               rc = nodemap_del_range(nodemap_name, nid);
+               break;
+       case LCFG_NODEMAP_ADMIN:
+               bool_switch = simple_strtoul(param, NULL, 10);
+               rc = nodemap_set_allow_root(nodemap_name, bool_switch);
+               break;
+       case LCFG_NODEMAP_TRUSTED:
+               bool_switch = simple_strtoul(param, NULL, 10);
+               rc = nodemap_set_trust_client_ids(nodemap_name, bool_switch);
+               break;
+       case LCFG_NODEMAP_SQUASH_UID:
+               int_id = simple_strtoul(param, NULL, 10);
+               rc = nodemap_set_squash_uid(nodemap_name, int_id);
+               break;
+       case LCFG_NODEMAP_SQUASH_GID:
+               int_id = simple_strtoul(param, NULL, 10);
+               rc = nodemap_set_squash_gid(nodemap_name, int_id);
+               break;
        default:
                rc = -EINVAL;
        }