X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Futils%2Flustre_cfg.c;h=29b3ae1be35082392ddb05a6c484bd925968b93f;hp=54312d442a55da93a9f803cf6aa9a703b7db921a;hb=12e311012ae337276dc3e7da3e7ad8d85d11e764;hpb=8e357d93ccc26e85e6ddf53360df72b47a254852 diff --git a/lustre/utils/lustre_cfg.c b/lustre/utils/lustre_cfg.c index 54312d4..29b3ae1 100644 --- a/lustre/utils/lustre_cfg.c +++ b/lustre/utils/lustre_cfg.c @@ -49,14 +49,9 @@ #include #include -#ifndef __KERNEL__ -#include -#endif -#include +#include #include #include -#include -#include /* for struct lov_stripe_md */ #include #include @@ -133,8 +128,12 @@ int jt_lcfg_attach(int argc, char **argv) lustre_cfg_bufs_set_string(&bufs, 2, argv[3]); lcfg = lustre_cfg_new(LCFG_ATTACH, &bufs); - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) { fprintf(stderr, "error: %s: LCFG_ATTACH %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -169,8 +168,12 @@ int jt_lcfg_setup(int argc, char **argv) } lcfg = lustre_cfg_new(LCFG_SETUP, &bufs); - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -197,8 +200,12 @@ int jt_obd_detach(int argc, char **argv) return CMD_HELP; lcfg = lustre_cfg_new(LCFG_DETACH, &bufs); - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -236,19 +243,23 @@ int jt_obd_cleanup(int argc, char **argv) flags[flag_cnt++] = force; } else if (strcmp(argv[n], "failover") == 0) { flags[flag_cnt++] = failover; - } else { - fprintf(stderr, "unknown option: %s", argv[n]); - return CMD_HELP; - } - } + } else { + fprintf(stderr, "unknown option: %s\n", argv[n]); + return CMD_HELP; + } + } if (flag_cnt) { lustre_cfg_bufs_set_string(&bufs, 1, flags); } lcfg = lustre_cfg_new(LCFG_CLEANUP, &bufs); - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -259,34 +270,33 @@ int jt_obd_cleanup(int argc, char **argv) static int do_add_uuid(char * func, char *uuid, lnet_nid_t nid) { - int rc; - struct lustre_cfg_bufs bufs; - struct lustre_cfg *lcfg; + int rc; + struct lustre_cfg_bufs bufs; + struct lustre_cfg *lcfg; - lustre_cfg_bufs_reset(&bufs, lcfg_devname); - if (uuid) - lustre_cfg_bufs_set_string(&bufs, 1, uuid); + lustre_cfg_bufs_reset(&bufs, lcfg_devname); + if (uuid != NULL) + lustre_cfg_bufs_set_string(&bufs, 1, uuid); lcfg = lustre_cfg_new(LCFG_ADD_UUID, &bufs); - lcfg->lcfg_nid = nid; - /* Poison NAL -- pre 1.4.6 will LASSERT on 0 NAL, this way it - doesn't work without crashing (bz 10130) */ - lcfg->lcfg_nal = 0x5a; - -#if 0 - fprintf(stderr, "adding\tnid: %d\tuuid: %s\n", - lcfg->lcfg_nid, uuid); -#endif - rc = lcfg_ioctl(func, OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + lcfg->lcfg_nid = nid; + + rc = lcfg_ioctl(func, OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc) { fprintf(stderr, "IOC_PORTAL_ADD_UUID failed: %s\n", strerror(errno)); return -1; } - printf ("Added uuid %s: %s\n", uuid, libcfs_nid2str(nid)); - return 0; + if (uuid != NULL) + printf("Added uuid %s: %s\n", uuid, libcfs_nid2str(nid)); + + return 0; } int jt_lcfg_add_uuid(int argc, char **argv) @@ -306,11 +316,6 @@ int jt_lcfg_add_uuid(int argc, char **argv) return do_add_uuid(argv[0], argv[1], nid); } -int obd_add_uuid(char *uuid, lnet_nid_t nid) -{ - return do_add_uuid("obd_add_uuid", uuid, nid); -} - int jt_lcfg_del_uuid(int argc, char **argv) { int rc; @@ -327,8 +332,12 @@ int jt_lcfg_del_uuid(int argc, char **argv) lustre_cfg_bufs_set_string(&bufs, 1, argv[1]); lcfg = lustre_cfg_new(LCFG_DEL_UUID, &bufs); - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc) { fprintf(stderr, "IOC_PORTAL_DEL_UUID failed: %s\n", strerror(errno)); @@ -352,8 +361,12 @@ int jt_lcfg_del_mount_option(int argc, char **argv) lustre_cfg_bufs_set_string(&bufs, 1, argv[1]); lcfg = lustre_cfg_new(LCFG_DEL_MOUNTOPT, &bufs); - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) { fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -378,12 +391,14 @@ int jt_lcfg_set_timeout(int argc, char **argv) lustre_cfg_bufs_reset(&bufs, lcfg_devname); lcfg = lustre_cfg_new(LCFG_SET_TIMEOUT, &bufs); - lcfg->lcfg_num = atoi(argv[1]); - - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - //rc = lcfg_mgs_ioctl(argv[0], OBD_DEV_ID, lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + lcfg->lcfg_num = atoi(argv[1]); - lustre_cfg_free(lcfg); + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) { fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -417,10 +432,14 @@ int jt_lcfg_add_conn(int argc, char **argv) lustre_cfg_bufs_set_string(&bufs, 1, argv[1]); lcfg = lustre_cfg_new(LCFG_ADD_CONN, &bufs); - lcfg->lcfg_num = priority; + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + lcfg->lcfg_num = priority; - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free (lcfg); + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) { fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -451,9 +470,12 @@ int jt_lcfg_del_conn(int argc, char **argv) lustre_cfg_bufs_set_string(&bufs, 1, argv[1]); lcfg = lustre_cfg_new(LCFG_DEL_MOUNTOPT, &bufs); - - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) { fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -479,9 +501,12 @@ int jt_lcfg_param(int argc, char **argv) } lcfg = lustre_cfg_new(LCFG_PARAM, &bufs); - - rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (rc < 0) { fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); @@ -544,11 +569,11 @@ static int jt_lcfg_mgsparam2(int argc, char **argv, struct param_opts *popt) lustre_cfg_bufs_set_string(&bufs, 1, buf); lcfg = lustre_cfg_new(LCFG_SET_PARAM, &bufs); - if (IS_ERR(lcfg)) { + if (lcfg == NULL) { fprintf(stderr, "error: allocating lcfg for %s: %s\n", - jt_cmdname(argv[0]), strerror(PTR_ERR(lcfg))); + jt_cmdname(argv[0]), strerror(-ENOMEM)); if (rc == 0) - rc = PTR_ERR(lcfg); + rc = -ENOMEM; } else { int rc2 = lcfg_mgs_ioctl(argv[0], OBD_DEV_ID, lcfg); if (rc2 != 0) { @@ -618,9 +643,12 @@ int jt_lcfg_mgsparam(int argc, char **argv) /* We could put other opcodes here. */ lcfg = lustre_cfg_new(LCFG_PARAM, &bufs); - - rc = lcfg_mgs_ioctl(argv[0], OBD_DEV_ID, lcfg); - lustre_cfg_free(lcfg); + if (lcfg == NULL) { + rc = -ENOMEM; + } else { + rc = lcfg_mgs_ioctl(argv[0], OBD_DEV_ID, lcfg); + lustre_cfg_free(lcfg); + } if (buf) free(buf); if (rc < 0) { @@ -731,24 +759,21 @@ static void clean_path(char *path) * Path support is deprecated. * If a path is supplied it must begin with /proc. */ static void lprocfs_param_pattern(const char *cmd, const char *path, char *buf, - size_t buf_size) + size_t buf_size) { - /* test path to see if it begins with '/proc/' */ - if (strncmp(path, "/proc/", strlen("/proc/")) == 0) { - static int warned; - if (!warned) { - fprintf(stderr, "%s: specifying parameters via " - "full paths is deprecated.\n", cmd); -#if LUSTRE_VERSION_CODE >= OBD_OCD_VERSION(2, 6, 50, 0) -#warning "remove deprecated full path tunable access" +#if LUSTRE_VERSION_CODE >= OBD_OCD_VERSION(2, 6, 53, 0) + /* test path to see if it begins with '/proc/' */ + if (strncmp(path, "/proc/", strlen("/proc/")) == 0) { + static int warned; + if (!warned) { + fprintf(stderr, "%s: specifying parameters via " + "full paths is deprecated.\n", cmd); + warned = 1; + } + snprintf(buf, buf_size, "%s", path); + } else #endif - warned = 1; - } - snprintf(buf, buf_size, "%s", path); - } else { - snprintf(buf, buf_size, "/proc/{fs,sys}/{lnet,lustre}/%s", - path); - } + snprintf(buf, buf_size, "/proc/{fs,sys}/{lnet,lustre}/%s", path); } static int listparam_cmdline(int argc, char **argv, struct param_opts *popt) @@ -1087,6 +1112,8 @@ int jt_lcfg_setparam(int argc, char **argv) *value = '\0'; value ++; path = argv[i]; + if (*value == '\0') + break; } else { /* format: set_param a b */ if (path == NULL) { @@ -1107,6 +1134,9 @@ int jt_lcfg_setparam(int argc, char **argv) if (rc2 < 0 && rc == 0) rc = rc2; } + if (path != NULL && (value == NULL || *value == '\0')) + fprintf(stderr, "error: %s: setting %s=: %s\n", + jt_cmdname(argv[0]), path, strerror(rc = EINVAL)); return rc; }