Page MenuHomeFreeBSD

mfiutil(4)/mrsasutil(4): "show drives" truncates information
ClosedPublic

Authored by michaelo on Thu, Apr 9, 9:53 AM.
Tags
None
Referenced Files
F152628348: D56328.diff
Thu, Apr 16, 3:00 AM
Unknown Object (File)
Sun, Apr 12, 12:00 PM
Unknown Object (File)
Sat, Apr 11, 3:05 PM
Unknown Object (File)
Thu, Apr 9, 1:32 PM
Unknown Object (File)
Thu, Apr 9, 10:57 AM
Subscribers

Details

Summary

Improve mfi_pd_inq_string() by

  • Reusing buffer sizes from cam/cam.h according to SCSI specification + NULL byte
  • Don't truncate vendor-specific information by escaping into a too small buffer
  • Use cam_strvis() from libcam instead of old, outdated local copy
  • Recaculate size of inq_string based on the reused buffer sizes and format statements

PR: 294354
MFC after: 2 weeks

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

John, feel free to add other reviewers as necessary.

Before:

# mrsasutil show drives
/dev/mrsas0 Physical Drives:
 4 (  279G) JBOD <SEAGATE ST9300653SS 5301 serial=6XN1LGJJ\000\000??@> SAS E1:S13
 5 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2A9> SAS E1:S0
 6 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2CT> SAS E1:S1
 7 (  279G) JBOD <SEAGATE ST9300605SS 5101 serial=6XP3F4YH\000\000??@> SAS E1:S14
 8 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W25E> SAS E1:S2
 9 (  279G) JBOD <SEAGATE ST9300653SS 5301 serial=6XN1LGL7\000\000??@> SAS E1:S12
10 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2SR8E> SAS E1:S3
11 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W3D2> SAS E1:S7
12 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2PJ> SAS E1:S4
13 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W3W3> SAS E1:S5
14 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2HG> SAS E1:S6
15 (  279G) JBOD <SEAGATE ST9300605SS 5101 serial=6XP3F6GJ\000\000??@> SAS E1:S15

after:

# /usr/obj/root/freebsd-src/amd64.amd64/usr.sbin/mfiutil/mfiutil -t mrsas show drives
/dev/mrsas0 Physical Drives:
 4 (  279G) JBOD <SEAGATE ST9300653SS 5301 serial=6XN1LGJJ    @#87980> SAS E1:S13
 5 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2A9> SAS E1:S0
 6 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2CT> SAS E1:S1
 7 (  279G) JBOD <SEAGATE ST9300605SS 5101 serial=6XP3F4YH    @#87980> SAS E1:S14
 8 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W25E> SAS E1:S2
 9 (  279G) JBOD <SEAGATE ST9300653SS 5301 serial=6XN1LGL7    @#87980> SAS E1:S12
10 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2SR8E> SAS E1:S3
11 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W3D2> SAS E1:S7
12 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2PJ> SAS E1:S4
13 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W3W3> SAS E1:S5
14 (  838G) JBOD <SEAGATE ST9900805SS 5101 serial=6XS2W2HG> SAS E1:S6
15 (  279G) JBOD <SEAGATE ST9300605SS 5101 serial=6XP3F6GJ    @#87980> SAS E1:S15

Looks sane to me, with the right constants used for the right things.

This revision is now accepted and ready to land.Thu, Apr 9, 4:27 PM