Lines Matching +full:i +full:- +full:drive
1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
48 MFI_TABLE(top, drive);
51 * Print the name of a drive either by drive number as %2u or by enclosure:slot
82 /* Get the info for this drive. */ in mfi_drive_name()
84 warn("Failed to fetch info for drive %2u", device_id); in mfi_drive_name()
105 if (pinfo->encl_device_id == 0xffff) in mfi_drive_name()
107 pinfo->slot_number); in mfi_drive_name()
108 else if (pinfo->encl_device_id == pinfo->ref.v.device_id) in mfi_drive_name()
110 pinfo->encl_index); in mfi_drive_name()
113 pinfo->encl_index, pinfo->slot_number); in mfi_drive_name()
151 mfi_lookup_drive(int fd, char *drive, uint16_t *device_id) in mfi_lookup_drive() argument
156 u_int i; in mfi_lookup_drive() local
161 val = strtol(drive, &cp, 0); in mfi_lookup_drive()
170 if (toupper(drive[0]) == 'E' || toupper(drive[0]) == 'S') { in mfi_lookup_drive()
171 if (drive[1] == '\0') in mfi_lookup_drive()
173 cp = drive; in mfi_lookup_drive()
174 if (toupper(drive[0]) == 'E') { in mfi_lookup_drive()
195 warn("Failed to fetch drive list"); in mfi_lookup_drive()
199 for (i = 0; i < list->count; i++) { in mfi_lookup_drive()
200 if (list->addr[i].scsi_dev_type != 0) in mfi_lookup_drive()
204 list->addr[i].encl_device_id == 0xffff) || in mfi_lookup_drive()
205 list->addr[i].encl_index == encl) && in mfi_lookup_drive()
206 list->addr[i].slot_number == slot) { in mfi_lookup_drive()
207 *device_id = list->addr[i].device_id; in mfi_lookup_drive()
213 warnx("Unknown drive %s", drive); in mfi_lookup_drive()
218 warnx("Invalid drive number %s", drive); in mfi_lookup_drive()
234 mbox[0] = ref->v.device_id & 0xff; in mbox_store_pdref()
235 mbox[1] = ref->v.device_id >> 8; in mbox_store_pdref()
236 mbox[2] = ref->v.seq_num & 0xff; in mbox_store_pdref()
237 mbox[3] = ref->v.seq_num >> 8; in mbox_store_pdref()
255 return (-1); in mfi_pd_get_list()
259 return (-1); in mfi_pd_get_list()
262 if (list->size > list_size) { in mfi_pd_get_list()
263 list_size = list->size; in mfi_pd_get_list()
288 src++, srclen--; in cam_strvis()
290 && (src[srclen-1] == ' ' || src[srclen-1] == '\0')) in cam_strvis()
291 srclen--; in cam_strvis()
297 /* SCSI-II Specifies that these should never occur. */ in cam_strvis()
298 /* non-printable character */ in cam_strvis()
312 srclen--; in cam_strvis()
313 dstlen -= cur_pos - dst; in cam_strvis()
327 memcpy(inq_data, info->inquiry_data, in mfi_pd_inq_string()
328 (sizeof (iqd) < sizeof (info->inquiry_data))? in mfi_pd_inq_string()
329 sizeof (iqd) : sizeof (info->inquiry_data)); in mfi_pd_inq_string()
337 cam_strvis(vendor, inq_data->vendor, sizeof(inq_data->vendor), in mfi_pd_inq_string()
339 cam_strvis(product, inq_data->product, sizeof(inq_data->product), in mfi_pd_inq_string()
341 cam_strvis(revision, inq_data->revision, sizeof(inq_data->revision), in mfi_pd_inq_string()
343 cam_strvis(serial, (char *)inq_data->vendor_specific0, sizeof(inq_data->vendor_specific0), in mfi_pd_inq_string()
355 strcpy(rstr, "SCSI-CCS"); in mfi_pd_inq_string()
361 snprintf(rstr, sizeof (rstr), "SCSI-%d", in mfi_pd_inq_string()
370 /* Helper function to set a drive to a given state. */
372 drive_set_state(char *drive, uint16_t new_state) in drive_set_state() argument
386 error = mfi_lookup_drive(fd, drive, &device_id); in drive_set_state()
392 /* Get the info for this drive. */ in drive_set_state()
395 warn("Failed to fetch info for drive %u", device_id); in drive_set_state()
402 warnx("Drive %u is already in the desired state", device_id); in drive_set_state()
413 warn("Failed to set drive %u to %s", device_id, in drive_set_state()
430 "drive required"); in fail_drive()
444 "drive required"); in good_drive()
458 "drive required"); in rebuild_drive()
472 "drive required"); in syspd_drive()
490 "drive required"); in start_rebuild()
507 /* Get the info for this drive. */ in start_rebuild()
510 warn("Failed to fetch info for drive %u", device_id); in start_rebuild()
517 warnx("Drive %d is not in the REBUILD state", device_id); in start_rebuild()
527 warn("Failed to start rebuild on drive %u", device_id); in start_rebuild()
547 "drive required"); in abort_rebuild()
564 /* Get the info for this drive. */ in abort_rebuild()
567 warn("Failed to fetch info for drive %u", device_id); in abort_rebuild()
574 warn("Drive %d is not in the REBUILD state", device_id); in abort_rebuild()
584 warn("Failed to abort rebuild on drive %u", device_id); in abort_rebuild()
602 warnx("drive progress: %s", ac > 2 ? "extra arguments" : in drive_progress()
603 "drive required"); in drive_progress()
620 /* Get the info for this drive. */ in drive_progress()
623 warn("Failed to fetch info for drive %u", device_id); in drive_progress()
638 printf("No activity in progress for drive %s.\n", in drive_progress()
644 MFI_COMMAND(drive, progress, drive_progress);
657 warnx("drive clear: %s", ac > 3 ? "extra arguments" : in drive_clear()
658 "drive and action requires"); in drive_clear()
669 warnx("drive clear: invalid action, must be 'start' or 'stop'\n"); in drive_clear()
686 /* Get the info for this drive. */ in drive_clear()
689 warn("Failed to fetch info for drive %u", device_id); in drive_clear()
697 warn("Failed to %s clear on drive %u", in drive_clear()
707 MFI_COMMAND(drive, clear, drive_clear);
719 "drive and state required"); in drive_locate()
752 warn("Failed to %s locate on drive %u", in drive_locate()