Bug 106841 - ses: do not output error for simple subenclosure (handle Short Enclosure Status diagnostic page)
Summary: ses: do not output error for simple subenclosure (handle Short Enclosure Stat...
Status: NEW
Alias: None
Product: IO/Storage
Classification: Unclassified
Component: SCSI (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: linux-scsi@vger.kernel.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-10-29 04:26 UTC by Tom Yan
Modified: 2016-07-18 12:57 UTC (History)
3 users (show)

See Also:
Kernel Version: 4.4.1
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Tom Yan 2015-10-29 04:26:17 UTC
So I have the following error with a WD My Passport:

[tom@localhost ~]$ journalctl -b -p 3 | grep scsi
Oct 29 11:18:31 localhost kernel: scsi 7:0:0:1: Failed to get diagnostic page 0x8000002
Oct 29 11:18:31 localhost kernel: scsi 7:0:0:1: Failed to bind enclosure -19

Some info of the drive:
[tom@localhost ~]$ sudo sg_ses /dev/sg4
  WD        SES Device        1065
Supported diagnostic pages:
  Supported Diagnostic Pages [sdp] [0x0]
  Short Enclosure Status (SES) [ses] [0x8]
  <unknown> [0x80]
  <unknown> [0x83]
  <unknown> [0x84]
  <unknown> [0x85]
[tom@localhost ~]$ sudo sg_senddiag -P 8 /dev/sg4
Short enclosure status (SES) diagnostic page [0x8] response in hex:
 00     08 00 00 00

According to SES-3 (ses3r10.pdf) Table 10, if diagnostic page 08h is supported, all others pages from 01h to 0fh are prohibited.

However, the kernel (driver/scsi/ses.c) doesn't seem to be aware of this.

FWIW, my drive have a correct SES page (byte 0 should the page code 08h, byte 2-3 should be 0000h, byte 1 is vendor-specific status).
Comment 1 Tom Yan 2015-10-29 04:27:40 UTC
Oops I missed the lsscsi output:
[tom@localhost ~]$ sudo lsscsi -g | grep WD
[7:0:0:0]    disk    WD       My Passport 083A 1065  /dev/sdc   /dev/sg3 
[7:0:0:1]    enclosu WD       SES Device       1065  -          /dev/sg4
Comment 2 Tom Yan 2016-02-27 01:21:39 UTC
This commit did NOT fix anything: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/scsi/ses.c?id=3417c1b5cb1fdc10261dbed42b05cc93166a78fd

Only the error changes from:

scsi 7:0:0:1: Failed to get diagnostic page 0x8000002
scsi 7:0:0:1: Failed to bind enclosure -19

to

scsi 7:0:0:1: Wrong diagnostic page; asked for 1 got 0
scsi 7:0:0:1: Failed to get diagnostic page 0xffffffea
scsi 7:0:0:1: Failed to bind enclosure -19

The ses driver should simply check whether there is an Short Enclosure Status page (i.e. it is a simple subenclosure) FIRST. If that's the case, the device should simply be skipped/bound WITHOUT error.

Note You need to log in before you can comment on or make changes to this bug.