Page MenuHomeFreeBSD

D19052.diff
No OneTemporary

D19052.diff

Index: head/usr.sbin/sesutil/sesutil.c
===================================================================
--- head/usr.sbin/sesutil/sesutil.c
+++ head/usr.sbin/sesutil/sesutil.c
@@ -112,28 +112,30 @@
}
static void
-do_led(int fd, unsigned int idx, bool onoff, bool setfault)
+do_led(int fd, unsigned int idx, elm_type_t type, bool onoff, bool setfault)
{
+ int state = onoff ? 1 : 0;
encioc_elm_status_t o;
+ struct ses_ctrl_dev_slot *slot;
o.elm_idx = idx;
if (ioctl(fd, ENCIOC_GETELMSTAT, (caddr_t) &o) < 0) {
close(fd);
xo_err(EXIT_FAILURE, "ENCIOC_GETELMSTAT");
}
- o.cstat[0] |= 0x80;
- if (setfault) {
- if (onoff)
- o.cstat[3] |= 0x20;
+ slot = (struct ses_ctrl_dev_slot *) &o.cstat[0];
+ switch (type) {
+ case ELMTYP_DEVICE:
+ case ELMTYP_ARRAY_DEV:
+ ses_ctrl_common_set_select(&slot->common, 1);
+ if (setfault)
+ ses_ctrl_dev_slot_set_rqst_fault(slot, state);
else
- o.cstat[3] &= 0xdf;
- } else {
- if (onoff)
- o.cstat[2] |= 0x02;
- else
- o.cstat[2] &= 0xfd;
+ ses_ctrl_dev_slot_set_rqst_ident(slot, state);
+ break;
+ default:
+ return;
}
-
if (ioctl(fd, ENCIOC_SETELMSTAT, (caddr_t) &o) < 0) {
close(fd);
xo_err(EXIT_FAILURE, "ENCIOC_SETELMSTAT");
@@ -250,14 +252,15 @@
xo_errx(EXIT_FAILURE,
"Requested SES ID does not exist");
}
- do_led(fd, sesid, onoff, setfault);
+ do_led(fd, sesid, objp[sesid].elm_type, onoff, setfault);
ndisks++;
close(fd);
break;
}
for (j = 0; j < nobj; j++) {
if (all) {
- do_led(fd, objp[j].elm_idx, onoff, setfault);
+ do_led(fd, objp[j].elm_idx, objp[j].elm_type,
+ onoff, setfault);
continue;
}
memset(&objdn, 0, sizeof(objdn));
@@ -274,7 +277,7 @@
}
if (objdn.elm_names_len > 0) {
if (disk_match(objdn.elm_devnames, disk, len)) {
- do_led(fd, objdn.elm_idx,
+ do_led(fd, objdn.elm_idx, objp[j].elm_type,
onoff, setfault);
ndisks++;
break;

File Metadata

Mime Type
text/plain
Expires
Wed, Jan 28, 4:38 AM (22 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28063282
Default Alt Text
D19052.diff (1 KB)

Event Timeline