Whamcloud - gitweb
LU-13307 nodemap: have nodemap_add_member support large NIDs
[fs/lustre-release.git] / lustre / utils / obd.c
index 9a39c6a..ebf1cee 100644 (file)
@@ -4319,10 +4319,29 @@ int jt_nodemap_test_id(int argc, char **argv)
  */
 static int parse_nid_range(char *nodemap_range, char *nid_range, int range_len)
 {
-       char                    min_nid[LNET_NIDSTR_SIZE + 1];
-       char                    max_nid[LNET_NIDSTR_SIZE + 1];
-       struct list_head        nidlist;
-       int                     rc = 0;
+       char min_nid[LNET_NIDSTR_SIZE + 1];
+       char max_nid[LNET_NIDSTR_SIZE + 1];
+       struct list_head nidlist;
+       char *netmask = NULL;
+       int rc = 0;
+
+       netmask = strchr(nodemap_range, '/');
+       if (netmask) {
+               unsigned long mask;
+
+               /* FIXME !!! Only 128 netmask is supported. This means
+                * nodemap will only support one large NID.
+                */
+               mask = strtoul(++netmask, NULL, 10);
+               if (mask < 0)
+                       return -errno;
+
+               if (mask != 128)
+                       return -ERANGE;
+
+               strncpy(nid_range, nodemap_range, range_len);
+               return rc;
+       }
 
        INIT_LIST_HEAD(&nidlist);