Module Name: src Committed By: kre Date: Tue Jun 14 08:06:18 UTC 2022
Modified Files: src/sbin/raidctl: raidctl.8 raidctl.c Log Message: Implement "raidctl -t config-file" This does the same config file parse that -c/-C do, but only that (hence no raidframe device is needed, or accepted). Any syntax errors in the config file will be reported, nothing else happens. To generate a diff of this commit: cvs rdiff -u -r1.78 -r1.79 src/sbin/raidctl/raidctl.8 cvs rdiff -u -r1.77 -r1.78 src/sbin/raidctl/raidctl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sbin/raidctl/raidctl.8 diff -u src/sbin/raidctl/raidctl.8:1.78 src/sbin/raidctl/raidctl.8:1.79 --- src/sbin/raidctl/raidctl.8:1.78 Mon Aug 2 20:31:15 2021 +++ src/sbin/raidctl/raidctl.8 Tue Jun 14 08:06:18 2022 @@ -1,4 +1,4 @@ -.\" $NetBSD: raidctl.8,v 1.78 2021/08/02 20:31:15 oster Exp $ +.\" $NetBSD: raidctl.8,v 1.79 2022/06/14 08:06:18 kre Exp $ .\" .\" Copyright (c) 1998, 2002 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -53,7 +53,7 @@ .\" any improvements or extensions that they make and grant Carnegie the .\" rights to redistribute these changes. .\" -.Dd August 2, 2021 +.Dd June 13, 2022 .Dt RAIDCTL 8 .Os .Sh NAME @@ -127,6 +127,9 @@ .Fl s Ar dev .Nm .Op Fl v +.Fl t Ar config_file +.Nm +.Op Fl v .Fl U Ar unit Ar dev .Nm .Op Fl v @@ -330,6 +333,11 @@ achieved in each of these areas. .It Fl s Ar dev Display the status of the RAIDframe device for each of the components and spares. +.It Fl t Ar config_file +Read and parse the +.Ar config_file , +reporting any errors, then exit. +No raidframe operations are performed. .It Fl U Ar unit Ar dev Set the .Dv last_unit Index: src/sbin/raidctl/raidctl.c diff -u src/sbin/raidctl/raidctl.c:1.77 src/sbin/raidctl/raidctl.c:1.78 --- src/sbin/raidctl/raidctl.c:1.77 Tue Jun 14 08:06:07 2022 +++ src/sbin/raidctl/raidctl.c Tue Jun 14 08:06:18 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: raidctl.c,v 1.77 2022/06/14 08:06:07 kre Exp $ */ +/* $NetBSD: raidctl.c,v 1.78 2022/06/14 08:06:18 kre Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -39,7 +39,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: raidctl.c,v 1.77 2022/06/14 08:06:07 kre Exp $"); +__RCSID("$NetBSD: raidctl.c,v 1.78 2022/06/14 08:06:18 kre Exp $"); #endif @@ -64,6 +64,8 @@ __RCSID("$NetBSD: raidctl.c,v 1.77 2022/ #include "rf_configure.h" #include "prog_ops.h" +#define CONFIGURE_TEST 1 /* must be different from any raidframe ioctl */ + void do_ioctl(int, u_long, void *, const char *); static void rf_configure(int, char*, int); static const char *device_status(RF_DiskStatus_t); @@ -133,9 +135,9 @@ main(int argc,char *argv[]) last_unit = 0; openmode = O_RDWR; /* default to read/write */ - while ((ch = getopt(argc, argv, "a:A:Bc:C:f:F:g:GiI:l:LmM:r:R:sSpPuU:v")) - != -1) - switch(ch) { + while ((ch = getopt(argc, argv, + "a:A:Bc:C:f:F:g:GiI:l:LmM:r:R:sSpPt:uU:v")) != -1) + switch (ch) { case 'a': action = RAIDFRAME_ADD_HOT_SPARE; get_comp(component, optarg, sizeof(component)); @@ -253,6 +255,12 @@ main(int argc,char *argv[]) openmode = O_RDONLY; num_options++; break; + case 't': + action = CONFIGURE_TEST; + strlcpy(config_filename, optarg, + sizeof(config_filename)); + num_options++; + break; case 'u': action = RAIDFRAME_SHUTDOWN; num_options++; @@ -276,7 +284,20 @@ main(int argc,char *argv[]) argc -= optind; argv += optind; - if ((num_options > 1) || (argc == 0)) + if (num_options > 1) + usage(); + + if (action == CONFIGURE_TEST) { + RF_Config_t cfg; + + if (argc != 0) + usage(); + if (rf_MakeConfig(config_filename, &cfg) != 0) + exit(1); + exit(0);; + } + + if (argc != 1) usage(); if (prog_init && prog_init() == -1) @@ -1216,6 +1237,7 @@ usage(void) fprintf(stderr, " %s [-v] -r component dev\n", progname); fprintf(stderr, " %s [-v] -S dev\n", progname); fprintf(stderr, " %s [-v] -s dev\n", progname); + fprintf(stderr, " %s [-v] -t config_file\n", progname); fprintf(stderr, " %s [-v] -U unit dev\n", progname); fprintf(stderr, " %s [-v] -u dev\n", progname); exit(1);