https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200619
Bug ID: 200619 Summary: camcontrol trashes the drive modepage if it's changed Product: Base System Version: 11.0-CURRENT Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: bin Assignee: freebsd-bugs@FreeBSD.org Reporter: n...@freebsd.org Description =========== Something is broken in camcontrol in bsd10. It trashes a drive modepage if it changed. Here is some sample output. ls-10-min252-1# isi_radish -e camcontrol: value 0 is out of range for entry Report Count; clipping to -1 This will happen for other values if you attempt to change them as well. ls-10-min252-1# echo -e "Interval Timer: 1800" | camcontrol modepage da4 -m 0x1c -P 3 -e camcontrol: value 1800 is out of range for entry Interval Timer; clipping to -1 ls-10-min252-1# camcontrol modepage da4 -m 0x1c -P 3 Interval Timer: -1258291201 The line of code that fixes this is changing.... #define RESOLUTION_MAX(size) ((resolution * (size) == 32)? \ (int)0xffffffff: (1 << (resolution * (size))) - 1) to #define RESOLUTION_MAX(size) ((resolution * (size) == 32)? \ INT_MAX: (1 << (resolution * (size))) - 1) Even with this change in place the error goes away, but the value reported by cam control after "changing" the modepage field does not change. Essentially changing mode page fields is broken. Proposed Fix ============ diff --git a/sbin/camcontrol/modeedit.c b/sbin/camcontrol/modeedit.c index 00ab974..8262c3c 100644 --- a/sbin/camcontrol/modeedit.c +++ b/sbin/camcontrol/modeedit.c @@ -246,7 +246,7 @@ editentry_set(char *name, char *newvalue, int editonly) * currently workaround it (even for int64's), so we have to kludge it. */ #define RESOLUTION_MAX(size) ((resolution * (size) == 32)? \ - (int)0xffffffff: (1 << (resolution * (size))) - 1) + INT_MAX: (1 << (resolution * (size))) - 1) assert(newvalue != NULL); if (*newvalue == '\0') diff --git a/share/misc/scsi_modes b/share/misc/scsi_modes index 781b8f1..80752e7 100644 --- a/share/misc/scsi_modes +++ b/share/misc/scsi_modes @@ -106,7 +106,7 @@ {EBACKERR} t1 {LogErr} t1 {Reserved} *t4 - {MRIE} b4 + {MRIE} t4 {Interval Timer} i4 {Report Count} i4 } Reported by: Michael Baptist Submitted by: Lars Skodje Sponsored by: EMC / Isilon Storage Division -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"