Lines Matching +full:i +full:- +full:drive
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
64 " status [-qv] [<drive>...]\n"
65 " Display status for <drive> or all drives if none is listed\n"
66 " -q Suppress output.\n"
67 " -v Display verbose information.\n"
74 " rescan -a\n"
78 " detach <drive> [<drive>...]\n"
79 " Detaches <drive> from the controller.\n"
80 " detach -a <controller>\n"
83 "consistency-check a system drive",
84 " check <drive>\n"
85 " Requests a check and rebuild of the parity information on <drive>.\n"
86 " Note that each controller can only check one system drive at a time."},
88 "initiate a rebuild of a dead physical drive",
90 " All system drives using space on the physical drive <physdrive>\n"
91 " are rebuilt, reconstructing all data on the drive.\n"
96 " pause [-t <howlong>] [-d <delay>] <controller> [<channel>...]\n"
97 " Pauses SCSI I/O on <channel> and <controller>. If no channel is specified,\n"
101 " pause <controller> -c\n"
121 int ch, i, oargc; in main() local
126 while ((ch = getopt(argc, argv, "")) != -1) in main()
132 argc -= optind; in main()
136 for (i = 0; commands[i].cmd != NULL; i++) in main()
137 if (!strcmp(argv[0], commands[i].cmd)) in main()
138 return(commands[i].func(argc, argv)); in main()
149 int i; in cmd_help() local
152 for (i = 0; commands[i].cmd != NULL; i++) in cmd_help()
153 if (!strcmp(argv[1], commands[i].cmd)) { in cmd_help()
154 fprintf(stderr, "%s\n", commands[i].text); in cmd_help()
162 for (i = 0; commands[i].cmd != NULL; i++) in cmd_help()
163 fprintf(stderr, " %-20s %s\n", commands[i].cmd, commands[i].desc); in cmd_help()
171 * status [-qv] [<device> ...]
174 * -q Suppresses output, command returns 0 if devices are OK, 1 if one or
178 static int rs_ctrlr = -1;
188 /* Find which controller and what system drive we are */ in status_print()
191 warnx("couldn't get controller/drive for %s", drivepath(unit)); in status_print()
244 /* rebuild/check in progress on this drive? */ in status_print()
262 ((rs.rs_size - rs.rs_remaining) / (rs.rs_size / 100))); in status_print()
285 {-1, NULL}
296 int i, channel, target; in controller_print() local
306 for (i = 0, model = NULL; mlx_controller_names[i].name != NULL; i++) { in controller_print()
307 if ((enq.me_hardware_id & 0xff) == mlx_controller_names[i].hwid) { in controller_print()
308 model = mlx_controller_names[i].name; in controller_print()
317 printf("mlx%d: DAC%s, %d channel%s, firmware %d.%02d-%c-%02d, %dMB RAM\n", in controller_print()
366 /* fetch and print physical drive data */ in controller_print()
371 mlx_print_phys_drv(&pd, channel, target, " ", verbosity - 1); in controller_print()
384 int ch, verbosity = 1, i, unit; in cmd_status() local
388 while ((ch = getopt(argc, argv, "qv")) != -1) in cmd_status()
399 argc -= optind; in cmd_status()
406 for (i = 0; i < argc; i++) { in cmd_status()
407 if ((unit = driveunit(argv[i])) == -1) { in cmd_status()
408 warnx("'%s' is not a valid drive", argv[i]); in cmd_status()
421 * rescan -a
442 int all = 0, i, ch, unit; in cmd_rescan() local
446 while ((ch = getopt(argc, argv, "a")) != -1) in cmd_rescan()
454 argc -= optind; in cmd_rescan()
460 for (i = 0; i < argc; i++) { in cmd_rescan()
461 if ((unit = ctrlrunit(argv[i])) == -1) { in cmd_rescan()
462 warnx("'%s' is not a valid controller", argv[i]); in cmd_rescan()
474 * detach <drive> [<drive>...]
475 * Detach <drive>.
477 * detach -a <controller> [<controller>...]
501 int all = 0, i, ch, unit; in cmd_detach() local
505 while ((ch = getopt(argc, argv, "a")) != -1) in cmd_detach()
513 argc -= optind; in cmd_detach()
519 for (i = 0; i < argc; i++) { in cmd_detach()
520 if ((unit = ctrlrunit(argv[i])) == -1) { in cmd_detach()
521 warnx("'%s' is not a valid controller", argv[i]); in cmd_detach()
527 for (i = 0; i < argc; i++) { in cmd_detach()
528 if ((unit = driveunit(argv[i])) == -1) { in cmd_detach()
529 warnx("'%s' is not a valid drive", argv[i]); in cmd_detach()
531 /* run across all controllers to find this drive */ in cmd_detach()
540 * Initiate a consistency check on a system drive.
542 * check [<drive>]
543 * Start a check of <drive>
554 if ((unit = driveunit(argv[1])) == -1) { in cmd_check()
555 warnx("'%s' is not a valid drive", argv[1]); in cmd_check()
566 warnx("one or more of the SCSI disks on which the drive '%s' depends is DEAD", argv[1]); in cmd_check()
569 warnx("drive %s is invalid, or not a drive which can be checked", argv[1]); in cmd_check()
572 warnx("drive rebuild or consistency check is already in progress on this controller"); in cmd_check()
584 * Initiate a physical drive rebuild
600 if ((unit = ctrlrunit(argv[1])) == -1) { in cmd_rebuild()
604 /* try diskXXXX and unknownXXXX as we report the latter for a dead drive ... */ in cmd_rebuild()
607 warnx("'%s' is not a valid physical drive", argv[2]); in cmd_rebuild()
619 warnx("the drive at %d:%d is already ONLINE", rb.rr_channel, rb.rr_target); in cmd_rebuild()
622 warnx("drive failed during rebuild"); in cmd_rebuild()
625 warnx("there is no drive at channel %d, target %d", rb.rr_channel, rb.rr_target); in cmd_rebuild()
628 warnx("drive rebuild or consistency check is already in progress on this controller"); in cmd_rebuild()
641 * pause [-d <delay>] [-t <time>] <controller> [<channel>...]
644 * pause <controller> -c
651 int unit, i, ch, fd, cancel = 0; in cmd_pause() local
661 while ((ch = getopt(argc, argv, "cd:t:")) != -1) in cmd_pause()
679 argc -= optind; in cmd_pause()
683 if ((argc < 1) || ((unit = ctrlrunit(argv[0])) == -1)) in cmd_pause()
693 /* controller-wide pause/cancel */ in cmd_pause()
696 for (i = 1; i < argc; i++) { in cmd_pause()
697 ch = strtol(argv[i], &cp, 0); in cmd_pause()
699 warnx("bad channel number '%s'", argv[i]); in cmd_pause()