Whamcloud - gitweb
LU-11607 tests: remove duplicate code lnet-selftest
[fs/lustre-release.git] / lustre / utils / liblustreapi_param.c
index 65cad29..3dd79cd 100644 (file)
  *
  * This code handles user interaction with the configuration interface
  * to the Lustre file system to fine tune it.
+ *
+ * Copyright (c) 2016, Intel Corporation.
  */
 #include <errno.h>
 #include <stdint.h>
 
 #include <libcfs/util/param.h>
-#include <lustre/lustre_user.h>
+#include <linux/lustre/lustre_user.h>
 #include <lustre/lustreapi.h>
 #include "lustreapi_internal.h"
 
@@ -67,7 +69,7 @@ get_lustre_param_path(const char *obd_type, const char *filter,
        char pattern[PATH_MAX];
        int rc = 0;
 
-       if (filter == NULL || obd_type == NULL)
+       if (filter == NULL && type != FILTER_BY_NONE)
                return -EINVAL;
 
        switch (type) {
@@ -81,7 +83,7 @@ get_lustre_param_path(const char *obd_type, const char *filter,
                }
                if (strlen(pattern) + 3 > sizeof(pattern))
                        return -E2BIG;
-               strncat(pattern, "-*", sizeof(pattern));
+               strncat(pattern, "-*", sizeof(pattern) - 1);
                break;
        case FILTER_BY_FS_NAME:
                rc = snprintf(pattern, sizeof(pattern) - 1, "%s-*", filter);
@@ -91,14 +93,20 @@ get_lustre_param_path(const char *obd_type, const char *filter,
                        return -EINVAL;
                rc = 0;
                break;
-       default:
+       case FILTER_BY_EXACT:
                if (strlen(filter) + 1 > sizeof(pattern))
                        return -E2BIG;
                strncpy(pattern, filter, sizeof(pattern));
                break;
+       case FILTER_BY_NONE:
+       default:
+               break;
        }
 
-       if (param_name != NULL) {
+       if (type == FILTER_BY_NONE) {
+               if (cfs_get_param_paths(param, "%s", param_name) != 0)
+                       rc = -errno;
+       } else if (param_name != NULL) {
                if (cfs_get_param_paths(param, "%s/%s/%s",
                                       obd_type, pattern, param_name) != 0)
                        rc = -errno;