Whamcloud - gitweb
LU-6070 libcfs: provide separate buffers for libcfs_*2str()
[fs/lustre-release.git] / lustre / obdclass / obd_config.c
index 08bd8c4..b386331 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -183,7 +183,7 @@ EXPORT_SYMBOL(class_get_next_param);
 
 /* returns 0 if this is the first key in the buffer, else 1.
    valp points to first char after key. */
-int class_match_param(char *buf, char *key, char **valp)
+int class_match_param(char *buf, const char *key, char **valp)
 {
         if (!buf)
                 return 1;
@@ -284,7 +284,6 @@ int class_parse_net(char *buf, __u32 *net, char **endh)
 {
        return class_parse_value(buf, CLASS_PARSE_NET, (void *)net, endh, 0);
 }
-EXPORT_SYMBOL(class_parse_net);
 
 /* 1 param contains key and match
  * 0 param contains key and not match
@@ -306,7 +305,6 @@ int class_match_nid(char *buf, char *key, lnet_nid_t nid)
         }
         return rc;
 }
-EXPORT_SYMBOL(class_match_nid);
 
 int class_match_net(char *buf, char *key, __u32 net)
 {
@@ -324,7 +322,6 @@ int class_match_net(char *buf, char *key, __u32 net)
         }
         return rc;
 }
-EXPORT_SYMBOL(class_match_net);
 
 /********************** class fns **********************/
 
@@ -690,7 +687,6 @@ int class_cleanup(struct obd_device *obd, struct lustre_cfg *lcfg)
 
         RETURN(0);
 }
-EXPORT_SYMBOL(class_cleanup);
 
 struct obd_device *class_incref(struct obd_device *obd,
                                 const char *scope, const void *source)
@@ -782,7 +778,6 @@ int class_add_conn(struct obd_device *obd, struct lustre_cfg *lcfg)
 
         RETURN(rc);
 }
-EXPORT_SYMBOL(class_add_conn);
 
 /** Remove a failover nid location.
  */
@@ -1016,7 +1011,6 @@ struct lustre_cfg *lustre_cfg_rename(struct lustre_cfg *cfg,
        lustre_cfg_bufs_set_string(bufs, 1, new_param);
 
        new_cfg = lustre_cfg_new(cfg->lcfg_command, bufs);
-
        OBD_FREE(new_param, new_len);
        OBD_FREE_PTR(bufs);
        if (new_cfg == NULL)
@@ -1053,7 +1047,7 @@ static int process_param2_config(struct lustre_cfg *lcfg)
        }
 
        do_gettimeofday(&start);
-       rc = call_usermodehelper(argv[0], argv, NULL, 0);
+       rc = call_usermodehelper(argv[0], argv, NULL, UMH_WAIT_PROC);
        do_gettimeofday(&end);
 
        if (rc < 0) {
@@ -1163,7 +1157,7 @@ int class_process_config(struct lustre_cfg *lcfg)
                 char *tmp;
                 /* llite has no obd */
                 if ((class_match_param(lustre_cfg_string(lcfg, 1),
-                                       PARAM_LLITE, 0) == 0) &&
+                                      PARAM_LLITE, NULL) == 0) &&
                     client_process_config) {
                         err = (*client_process_config)(lcfg);
                         GOTO(out, err);
@@ -1260,10 +1254,10 @@ out:
 }
 EXPORT_SYMBOL(class_process_config);
 
-int class_process_proc_param(char *prefix, struct lprocfs_seq_vars *lvars,
+int class_process_proc_param(char *prefix, struct lprocfs_vars *lvars,
                             struct lustre_cfg *lcfg, void *data)
 {
-       struct lprocfs_seq_vars *var;
+       struct lprocfs_vars *var;
        struct file fakefile;
        struct seq_file fake_seqfile;
        char *key, *sval;
@@ -1305,7 +1299,7 @@ int class_process_proc_param(char *prefix, struct lprocfs_seq_vars *lvars,
                /* Search proc entries */
                while (lvars[j].name) {
                        var = &lvars[j];
-                       if (class_match_param(key, (char *)var->name, 0) == 0 &&
+                       if (class_match_param(key, var->name, NULL) == 0 &&
                            keylen == strlen(var->name)) {
                                matched++;
                                rc = -EROFS;
@@ -1739,10 +1733,13 @@ int class_config_yaml_output(struct llog_rec_hdr *rec, char *buf, int size)
        if (lcfg->lcfg_num)
                ptr += snprintf(ptr, end - ptr, ", num: %#08x",
                                lcfg->lcfg_num);
-       if (lcfg->lcfg_nid)
+       if (lcfg->lcfg_nid) {
+               char nidstr[LNET_NIDSTR_SIZE];
+
+               libcfs_nid2str_r(lcfg->lcfg_nid, nidstr, sizeof(nidstr));
                ptr += snprintf(ptr, end - ptr, ", nid: %s("LPX64")",
-                               libcfs_nid2str(lcfg->lcfg_nid),
-                               lcfg->lcfg_nid);
+                               nidstr, lcfg->lcfg_nid);
+       }
 
        if (LUSTRE_CFG_BUFLEN(lcfg, 0) > 0)
                ptr += snprintf(ptr, end - ptr, ", device: %s",
@@ -1788,10 +1785,13 @@ static int class_config_parse_rec(struct llog_rec_hdr *rec, char *buf, int size)
        if (lcfg->lcfg_num)
                ptr += snprintf(ptr, end-ptr, "num=%#08x ", lcfg->lcfg_num);
 
-       if (lcfg->lcfg_nid)
+       if (lcfg->lcfg_nid) {
+               char nidstr[LNET_NIDSTR_SIZE];
+
+               libcfs_nid2str_r(lcfg->lcfg_nid, nidstr, sizeof(nidstr));
                ptr += snprintf(ptr, end-ptr, "nid=%s("LPX64")\n     ",
-                               libcfs_nid2str(lcfg->lcfg_nid),
-                               lcfg->lcfg_nid);
+                               nidstr, lcfg->lcfg_nid);
+       }
 
        if (lcfg->lcfg_command == LCFG_MARKER) {
                struct cfg_marker *marker = lustre_cfg_buf(lcfg, 1);
@@ -1889,11 +1889,11 @@ int class_manual_cleanup(struct obd_device *obd)
         CDEBUG(D_CONFIG, "Manual cleanup of %s (flags='%s')\n",
                obd->obd_name, flags);
 
-        lustre_cfg_bufs_reset(&bufs, obd->obd_name);
-        lustre_cfg_bufs_set_string(&bufs, 1, flags);
-        lcfg = lustre_cfg_new(LCFG_CLEANUP, &bufs);
-        if (!lcfg)
-                RETURN(-ENOMEM);
+       lustre_cfg_bufs_reset(&bufs, obd->obd_name);
+       lustre_cfg_bufs_set_string(&bufs, 1, flags);
+       lcfg = lustre_cfg_new(LCFG_CLEANUP, &bufs);
+       if (lcfg == NULL)
+               RETURN(-ENOMEM);
 
         rc = class_process_config(lcfg);
         if (rc) {