Unsolved

This post is more than 5 years old

1 Message

896

September 7th, 2012 08:00

CX4 thin-provisioning, SPC-3 and Linux

Hi !

The CX4 storage array familiy offers the possibility to create thin-provisioned LUNs.
I've been trying to make this feature work with Linux, but couldn't without modifying the SCSI module (sd_mod) to correct what appears to be a misfunction from the array.

Here is what happens :

Upon LUN discovery, the kernel sends a READ CAPACITY command to the LUN to get some info about it. Now, two READ CAPACITY commands exist :

- READ CAPACITY(10)

- READ CAPACITY(16)

The (16) version is more recent, and provides more information that the (10) version, most notably the thin-prov related ones.

However, as stated here, the READ CAPACITY(16) can make some devices hang so the kernel must check what kind of device it deals with before going on.

This test is made in the sd_try_rc16_first function, which looks like this :

1898 static int sd_try_rc16_first(struct scsi_device *sdp)

1899 {

1900         if (sdp->host->max_cmd_len < 16)

1901                 return 0;

1902         if (sdp->try_rc_10_first)

1903                 return 0;

1904         if (sdp->scsi_level > SCSI_SPC_2)

1905                 return 1;

1906         if (scsi_device_protection(sdp))

1907                 return 1;

1908         return 0;

1909 }

max_lun_cmds and SCSI protection are out of scope, so the only real test is about the SCSI level, which must be at least SPC-3 (i.e. SBC-2). However, ALL the LUNs on our CX4/VNX/DMX/VMAX are reporting only SPC-2, as shown below :

# sg_inq /dev/sdy

standard INQUIRY:

PQual=0  Device_type=0  RMB=0 version=0x04  [SPC-2]

[AERC=0]  [TrmTsk=0]  NormACA=1  HiSUP=1  Resp_data_format=2

SCCS=0  ACC=0  TPGS=3  3PC=0  Protect=0  BQue=0

EncServ=0  MultiP=1 (VS=1)  [MChngr=0]  [ACKREQQ=0]  Addr16=0

[RelAdr=0]  WBus16=0  Sync=0  Linked=0  [TranDis=0]  CmdQue=1

[SPI: Clocking=0x0  QAS=0  IUS=0]

length=193 (0xc1)   Peripheral device type: disk

Vendor identification: DGC

Product identification: VRAID

Product revision level: 0430

so the kernel doesn't even check if the device supports thin-provisioning, so it's doesn't work...

SPC-3 is more than 5 years old, and the arrays obviously support it because when sending raw WRITE SAME or even the UNMAP command which is even more recent.

Is there a way to make the LUNs appear as SPC-3 ?

Thanks !

4 Operator

 • 

4.5K Posts

September 10th, 2012 14:00

This is probably beyond the scope of this forum. I would recommend that you open a case with EMC and they will need to contact engineering in order to provide an answer for your question.

glen

0 events found

No Events found!

Top