Whamcloud - gitweb
LU-1301 helpers: quiet class_parse_nid()
authorAlex Zhuravlev <bzzz@whamcloud.com>
Wed, 15 Aug 2012 05:49:34 +0000 (09:49 +0400)
committerOleg Drokin <green@whamcloud.com>
Mon, 24 Sep 2012 19:46:12 +0000 (15:46 -0400)
class_parse_nid_quiet() is a version of class_parse_nid()
which doesn't complain on an invalid nid.
i.e. used in obd_mount.c where nid can be followed by
another (non-nid) mount option.

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I8938a50e56007bd626b207e4a69a2a76c572632d
Reviewed-on: http://review.whamcloud.com/3678
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Mike Pershin <tappro@whamcloud.com>
lustre/include/lustre_param.h
lustre/mgs/mgs_handler.c
lustre/obdclass/obd_config.c
lustre/obdclass/obd_mount.c

index 9c53292..320f641 100644 (file)
@@ -61,6 +61,7 @@ struct cfg_interop_param *class_find_old_param(const char *param,
 int class_get_next_param(char **params, char *copy);
 int class_match_param(char *buf, char *key, char **valp);
 int class_parse_nid(char *buf, lnet_nid_t *nid, char **endh);
 int class_get_next_param(char **params, char *copy);
 int class_match_param(char *buf, char *key, char **valp);
 int class_parse_nid(char *buf, lnet_nid_t *nid, char **endh);
+int class_parse_nid_quiet(char *buf, lnet_nid_t *nid, char **endh);
 int class_parse_net(char *buf, __u32 *net, char **endh);
 int class_match_nid(char *buf, char *key, lnet_nid_t nid);
 int class_match_net(char *buf, char *key, __u32 net);
 int class_parse_net(char *buf, __u32 *net, char **endh);
 int class_match_nid(char *buf, char *key, lnet_nid_t nid);
 int class_match_net(char *buf, char *key, __u32 net);
index e5bff51..5d4a143 100644 (file)
@@ -306,7 +306,7 @@ static int mgs_check_failover_reg(struct mgs_target_info *mti)
 
         ptr = mti->mti_params;
         while (class_find_param(ptr, PARAM_FAILNODE, &ptr) == 0) {
 
         ptr = mti->mti_params;
         while (class_find_param(ptr, PARAM_FAILNODE, &ptr) == 0) {
-                while (class_parse_nid(ptr, &nid, &ptr) == 0) {
+               while (class_parse_nid_quiet(ptr, &nid, &ptr) == 0) {
                         for (i = 0; i < mti->mti_nid_count; i++) {
                                 if (nid == mti->mti_nids[i]) {
                                         LCONSOLE_WARN("Denying initial registra"
                         for (i = 0; i < mti->mti_nid_count; i++) {
                                 if (nid == mti->mti_nids[i]) {
                                         LCONSOLE_WARN("Denying initial registra"
index 96460bb..c48bd9e 100644 (file)
@@ -203,7 +203,7 @@ int class_match_param(char *buf, char *key, char **valp)
 }
 EXPORT_SYMBOL(class_match_param);
 
 }
 EXPORT_SYMBOL(class_match_param);
 
-static int parse_nid(char *buf, void *value)
+static int parse_nid(char *buf, void *value, int quiet)
 {
         lnet_nid_t *nid = (lnet_nid_t *)value;
 
 {
         lnet_nid_t *nid = (lnet_nid_t *)value;
 
@@ -211,7 +211,8 @@ static int parse_nid(char *buf, void *value)
         if (*nid != LNET_NID_ANY)
                 return 0;
 
         if (*nid != LNET_NID_ANY)
                 return 0;
 
-        LCONSOLE_ERROR_MSG(0x159, "Can't parse NID '%s'\n", buf);
+       if (!quiet)
+               LCONSOLE_ERROR_MSG(0x159, "Can't parse NID '%s'\n", buf);
         return -EINVAL;
 }
 
         return -EINVAL;
 }
 
@@ -233,7 +234,8 @@ enum {
    1 not found
    < 0 error
    endh is set to next separator */
    1 not found
    < 0 error
    endh is set to next separator */
-static int class_parse_value(char *buf, int opc, void *value, char **endh)
+static int class_parse_value(char *buf, int opc, void *value, char **endh,
+                            int quiet)
 {
         char *endp;
         char  tmp;
 {
         char *endp;
         char  tmp;
@@ -257,7 +259,7 @@ static int class_parse_value(char *buf, int opc, void *value, char **endh)
         default:
                 LBUG();
         case CLASS_PARSE_NID:
         default:
                 LBUG();
         case CLASS_PARSE_NID:
-                rc = parse_nid(buf, value);
+               rc = parse_nid(buf, value, quiet);
                 break;
         case CLASS_PARSE_NET:
                 rc = parse_net(buf, value);
                 break;
         case CLASS_PARSE_NET:
                 rc = parse_net(buf, value);
@@ -273,13 +275,19 @@ static int class_parse_value(char *buf, int opc, void *value, char **endh)
 
 int class_parse_nid(char *buf, lnet_nid_t *nid, char **endh)
 {
 
 int class_parse_nid(char *buf, lnet_nid_t *nid, char **endh)
 {
-        return class_parse_value(buf, CLASS_PARSE_NID, (void *)nid, endh);
+       return class_parse_value(buf, CLASS_PARSE_NID, (void *)nid, endh, 0);
 }
 EXPORT_SYMBOL(class_parse_nid);
 
 }
 EXPORT_SYMBOL(class_parse_nid);
 
+int class_parse_nid_quiet(char *buf, lnet_nid_t *nid, char **endh)
+{
+       return class_parse_value(buf, CLASS_PARSE_NID, (void *)nid, endh, 1);
+}
+EXPORT_SYMBOL(class_parse_nid_quiet);
+
 int class_parse_net(char *buf, __u32 *net, char **endh)
 {
 int class_parse_net(char *buf, __u32 *net, char **endh)
 {
-        return class_parse_value(buf, CLASS_PARSE_NET, (void *)net, endh);
+       return class_parse_value(buf, CLASS_PARSE_NET, (void *)net, endh, 0);
 }
 EXPORT_SYMBOL(class_parse_net);
 
 }
 EXPORT_SYMBOL(class_parse_net);
 
index 55e9666..8dd2830 100644 (file)
@@ -636,7 +636,7 @@ static int lustre_start_mgc(struct super_block *sb)
                 /* New failover node */
                 sprintf(niduuid, "%s_%x", mgcname, i);
                 j = 0;
                 /* New failover node */
                 sprintf(niduuid, "%s_%x", mgcname, i);
                 j = 0;
-                while (class_parse_nid(ptr, &nid, &ptr) == 0) {
+               while (class_parse_nid_quiet(ptr, &nid, &ptr) == 0) {
                         j++;
                         rc = do_lcfg(mgcname, nid,
                                      LCFG_ADD_UUID, niduuid, 0,0,0);
                         j++;
                         rc = do_lcfg(mgcname, nid,
                                      LCFG_ADD_UUID, niduuid, 0,0,0);
@@ -2002,7 +2002,7 @@ static int lmd_parse_mgs(struct lustre_mount_data *lmd, char **ptr)
        int   oldlen = 0;
 
        /* Find end of nidlist */
        int   oldlen = 0;
 
        /* Find end of nidlist */
-       while (class_parse_nid(tail, &nid, &tail) == 0) {}
+       while (class_parse_nid_quiet(tail, &nid, &tail) == 0) {}
        length = tail - *ptr;
        if (length == 0) {
                LCONSOLE_ERROR_MSG(0x159, "Can't parse NID '%s'\n", *ptr);
        length = tail - *ptr;
        if (length == 0) {
                LCONSOLE_ERROR_MSG(0x159, "Can't parse NID '%s'\n", *ptr);