X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Flustre_cfg.c;h=69f734b6cf98025974e7427add4fbc75bc530fe0;hb=0e660eab787c3b2857e4295f1ec554e016393885;hp=aa8c1e3c83dd61d764d3a2b8653e9067876228ce;hpb=83cd980e9c28a06c79bc7bdac01efe64cbd4f1b5;p=fs%2Flustre-release.git diff --git a/lustre/utils/lustre_cfg.c b/lustre/utils/lustre_cfg.c index aa8c1e3..69f734b 100644 --- a/lustre/utils/lustre_cfg.c +++ b/lustre/utils/lustre_cfg.c @@ -1,27 +1,44 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (C) 2002 Cluster File Systems, Inc. - * Author: Peter J. Braam - * Author: Phil Schwan - * Author: Andreas Dilger - * Author: Robert Read + * GPL HEADER START * - * This file is part of Lustre, http://www.lustre.org. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * Lustre is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. * - * Lustre is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). * - * You should have received a copy of the GNU General Public License - * along with Lustre; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + * GPL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + * + * lustre/utils/lustre_cfg.c + * + * Author: Peter J. Braam + * Author: Phil Schwan + * Author: Andreas Dilger + * Author: Robert Read */ #include @@ -52,7 +69,7 @@ #include "obdctl.h" #include -#include "parser.h" +#include #include static char * lcfg_devname; @@ -65,7 +82,7 @@ int lcfg_set_devname(char *name) /* quietly strip the unnecessary '$' */ if (*name == '$' || *name == '%') name++; - if (isdigit(*name)) { + if (isdigit(*name)) { /* We can't translate from dev # to name */ lcfg_devname = NULL; } else { @@ -73,7 +90,7 @@ int lcfg_set_devname(char *name) } } else { lcfg_devname = NULL; - } + } return 0; } @@ -137,8 +154,8 @@ int jt_lcfg_setup(int argc, char **argv) if (lcfg_devname == NULL) { fprintf(stderr, "%s: please use 'device name' to set the " - "device name for config commands.\n", - jt_cmdname(argv[0])); + "device name for config commands.\n", + jt_cmdname(argv[0])); return -EINVAL; } @@ -169,8 +186,8 @@ int jt_obd_detach(int argc, char **argv) if (lcfg_devname == NULL) { fprintf(stderr, "%s: please use 'device name' to set the " - "device name for config commands.\n", - jt_cmdname(argv[0])); + "device name for config commands.\n", + jt_cmdname(argv[0])); return -EINVAL; } @@ -201,8 +218,8 @@ int jt_obd_cleanup(int argc, char **argv) if (lcfg_devname == NULL) { fprintf(stderr, "%s: please use 'device name' to set the " - "device name for config commands.\n", - jt_cmdname(argv[0])); + "device name for config commands.\n", + jt_cmdname(argv[0])); return -EINVAL; } @@ -239,8 +256,8 @@ int jt_obd_cleanup(int argc, char **argv) return rc; } -static -int do_add_uuid(char * func, char *uuid, lnet_nid_t nid) +static +int do_add_uuid(char * func, char *uuid, lnet_nid_t nid) { int rc; struct lustre_cfg_bufs bufs; @@ -252,7 +269,7 @@ int do_add_uuid(char * func, char *uuid, lnet_nid_t nid) 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 + /* 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; @@ -275,8 +292,8 @@ int do_add_uuid(char * func, char *uuid, lnet_nid_t nid) int jt_lcfg_add_uuid(int argc, char **argv) { lnet_nid_t nid; - - if (argc != 3) { + + if (argc != 3) { return CMD_HELP; } @@ -308,7 +325,7 @@ int jt_lcfg_del_uuid(int argc, char **argv) lustre_cfg_bufs_reset(&bufs, lcfg_devname); if (strcmp (argv[1], "_all_")) 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); @@ -365,7 +382,7 @@ 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); @@ -395,8 +412,8 @@ int jt_lcfg_add_conn(int argc, char **argv) if (lcfg_devname == NULL) { fprintf(stderr, "%s: please use 'device name' to set the " - "device name for config commands.\n", - jt_cmdname(argv[0])); + "device name for config commands.\n", + jt_cmdname(argv[0])); return -EINVAL; } @@ -428,8 +445,8 @@ int jt_lcfg_del_conn(int argc, char **argv) if (lcfg_devname == NULL) { fprintf(stderr, "%s: please use 'device name' to set the " - "device name for config commands.\n", - jt_cmdname(argv[0])); + "device name for config commands.\n", + jt_cmdname(argv[0])); return -EINVAL; } @@ -467,7 +484,7 @@ 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 (rc < 0) { @@ -502,7 +519,7 @@ int jt_lcfg_mgsparam(int argc, char **argv) fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), strerror(rc = errno)); } - + return rc; } @@ -530,6 +547,7 @@ static char *display_name(char *filename) } /* Find a character in a length limited string */ +/* BEWARE - kernel definition of strnchr has args in different order! */ static char *strnchr(const char *p, char c, size_t n) { if (!p) @@ -546,13 +564,17 @@ static char *strnchr(const char *p, char c, size_t n) int jt_lcfg_getparam(int argc, char **argv) { int fp; - int rc = 0, i, show_path = 0; + int rc = 0, i, show_path = 0, only_path = 0; char pattern[PATH_MAX]; char *path, *tmp, *buf; glob_t glob_info; - if (argc == 3 && strcmp(argv[1], "-n") == 0) { + if (argc == 3 && (strcmp(argv[1], "-n") == 0 || strcmp(argv[1], "-N") == 0)) { path = argv[2]; + if (strcmp(argv[1], "-N") == 0) { + only_path = 1; + show_path = 1; + } } else if (argc == 2) { show_path = 1; path = argv[1]; @@ -595,6 +617,10 @@ int jt_lcfg_getparam(int argc, char **argv) char *filename; filename = strdup(glob_info.gl_pathv[i]); valuename = display_name(filename); + if (valuename && only_path) { + printf("%s\n", valuename); + continue; + } } /* Write the contents of file to stdout */