Changeset 8b51009 in mainline for uspace/app/hrctl/hrctl.c
- Timestamp:
- 2025-03-28T23:37:16Z (3 months ago)
- Children:
- 0437dd5
- Parents:
- 7bfe468
- git-author:
- Miroslav Cimerman <mc@…> (2025-03-28 23:25:57)
- git-committer:
- Miroslav Cimerman <mc@…> (2025-03-28 23:37:16)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/hrctl/hrctl.c
r7bfe468 r8b51009 1 1 /* 2 * Copyright (c) 202 4Miroslav Cimerman2 * Copyright (c) 2025 Miroslav Cimerman 3 3 * All rights reserved. 4 4 * … … 45 45 #define HRCTL_SAMPLE_CONFIG_PATH "/cfg/sample_hr_config.sif" 46 46 47 static void 48 static errno_t 49 static errno_t 47 static void usage(void); 48 static errno_t fill_config_devs(int, char **, int, hr_config_t *); 49 static errno_t load_config(const char *, hr_config_t *); 50 50 51 51 static const char usage_str[] = … … 53 53 "\n" 54 54 "Options:\n" 55 " -h, --help display this helpand exit\n"55 " -h, --help display this message and exit\n" 56 56 " -C, --create-file=PATH create an array from file,\n" 57 57 " sample file at: " HRCTL_SAMPLE_CONFIG_PATH "\n" 58 " -A, --a ssemble-file=PATH create an array from file\n"58 " -A, --auto-assemble try to auto assemble all valid arrays\n" 59 59 " -s, --status display status of active arrays\n" 60 60 " -H, --hotspare=DEV add hotspare extent\n" … … 62 62 " -F, --fail-extent fail an extent, use with -D and set it before\n" 63 63 " -c, --create=NAME create new array\n" 64 " -a, --assemble=NAME assemble an existing array\n"64 " -a, --assemble=NAME assemble from specified extents\n" 65 65 " -n non-zero number of devices\n" 66 66 " -l, --level=LEVEL set the RAID level,\n" … … 95 95 { "level", required_argument, 0, 'l' }, 96 96 { "create-file", required_argument, 0, 'C' }, 97 { "a ssemble-file", required_argument, 0, 'A' },97 { "auto-assemble", no_argument, 0, 'A' }, 98 98 { "destroy", required_argument, 0, 'D' }, 99 99 { "fail-extent", required_argument, 0, 'F' }, … … 253 253 254 254 while (c != -1) { 255 c = getopt_long(argc, argv, "hsC:c:A :a:l:0145Ln:D:F:H:",255 c = getopt_long(argc, argv, "hsC:c:Aa:l:0145Ln:D:F:H:", 256 256 long_options, NULL); 257 257 switch (c) { … … 282 282 break; 283 283 case 'A': 284 rc = load_config(optarg, cfg); 285 if (rc != EOK) { 286 printf("hrctl: failed to load config\n"); 287 free(cfg); 288 return 1; 289 } 290 assemble = true; 291 goto skip; 284 size_t cnt; 285 rc = hr_auto_assemble(&cnt); 286 if (rc != EOK) { 287 /* XXX: here have own error codes */ 288 printf("hrctl: auto assemble rc: %s\n", 289 str_error(rc)); 290 } else { 291 printf("hrctl: auto assembled %lu volumes\n", 292 cnt); 293 } 294 return rc; 292 295 case 'a': 293 296 if (str_size(optarg) > sizeof(cfg->devname) - 1) { … … 303 306 free(cfg); 304 307 if (rc != EOK) { 305 if (rc == ENOENT) 306 printf("hrctl: service named \"%s\" does not exist\n", 307 optarg); 308 return 1; 308 printf("hrctl: got %s\n", str_error(rc)); 309 return rc; 309 310 } 310 311 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.