Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Jan 2013 10:46:23 +0100
From:      Borja Marcos <borjam@sarenet.es>
To:        freebsd-scsi@freebsd.org
Cc:        FreeBSD Filesystems <freebsd-fs@freebsd.org>
Subject:   Problem adding SCSI quirks for a SSD, 4K sector and ZFS
Message-ID:  <492280E6-E3EE-4540-92CE-C535C8943CCF@sarenet.es>

Next in thread | Raw E-Mail | Index | Archive | Help

Hello,

Crossposting to FreeBSD-fs, as I am wondering if I have had a problem =
with ZFS and sector size detection as well.

I am doing tests with an OCZ Vertex 4 connected to a SAS backplane.

< OCZ-VERTEX4 1.5>                 at scbus6 target 22 lun 0 =
(pass19,da15)

(The blank before "OCZ" really appears there)

pass19: < OCZ-VERTEX4 1.5> Fixed Direct Access SCSI-5 device=20
pass19: Serial Number OCZ-1SVG6KZ2YRMSS8E1
pass19: 3.300MB/s transfers

I am bypassing an "aac" RAID card so that the disks are directly =
attached to the da driver, instead of relying on the so-called JBOD =
feature.

I have had a weird problem, with the disk being unresponsive to the =
REQUEST CAPACITY(16) command. Weird, seems it timeouts.

So, just to complete the tests, I have added a quirk to scsi_da.c. =
Anyway, I also need the disk to be recognized as a 4K sector drive.

I created a new quirk, called it DA_Q_NO_RC16, and added an  entry to =
the quirk table, so that these drives are recognized as 4K drives  and =
the driver doesn't try to send a RC(16) command.

diff scsi_da.c.orig scsi_da.c
93c93,94
< 	DA_Q_4K			=3D 0x08
---
> 	DA_Q_4K			=3D 0x08,
> 	DA_Q_NO_RC16		=3D 0x10
811a813,817
> 		/* OCZ Vertex 4 firmware 1.5 */
> 		{ T_DIRECT, SIP_MEDIA_FIXED, "", "OCZ-VERTEX4", "*" },
> 		/*quirks*/DA_Q_NO_RC16 | DA_Q_4K
> 	},
> 	{
1635,1636c1641,1646
< 	/* Predict whether device may support READ CAPACITY(16). */
< 	if (SID_ANSI_REV(&cgd->inq_data) >=3D SCSI_REV_SPC3) {
---
> 	/*=20
> 	 * Predict whether device may support READ CAPACITY(16).
> 	 * BUT Some disks don't support RC(16) even though they should.
> 	 */
> 	if ((SID_ANSI_REV(&cgd->inq_data) >=3D SCSI_REV_SPC3)=20
> 		&& !(softc->quirks & DA_Q_NO_RC16) ) {



I think it's working. I haven't seen any more RC(16) errors, and the =
disk is working fine. Anyway I am not sure I've done it right. After =
adding the 4K quirk and rebooting, GEOM_PART complained that the =
partitions weren't aligned to 4K

/var/log/messages.0:Jan 23 16:01:30  kernel: GEOM_PART: partition 1 is =
not aligned on 4096 bytes
/var/log/messages.0:Jan 23 16:01:30  kernel: GEOM_PART: partition 2 is =
not aligned on 4096 bytes

So it seems it works. However, when using the disk for ZFS, it still =
detects a 512 byte sector size, which is odd.=20

Jan 23 16:01:30 rasputin kernel: GEOM: new disk da15
Jan 23 16:01:30 rasputin kernel: da15 at aacp0 bus 0 scbus6 target 22 =
lun 0
Jan 23 16:01:30 rasputin kernel: da15: < OCZ-VERTEX4 1.5> Fixed Direct =
Access SCSI-5 device=20
Jan 23 16:01:30 rasputin kernel: da15: Serial Number =
OCZ-1SVG6KZ2YRMSS8E1
Jan 23 16:01:30 rasputin kernel: da15: 3.300MB/s transfers
Jan 23 16:01:30 rasputin kernel: da15: 488386MB (1000215216 512 byte =
sectors: 255H 63S/T 62260C)


diskinfo is returning a sector size of 512 bytes, and a stripesize of =
4096. Is this correct? ZFS is still detecting it as a 512 byte sector =
disk.

/dev/da15
	512         	# sectorsize
	512110190592	# mediasize in bytes (477G)
	1000215216  	# mediasize in sectors
	4096        	# stripesize
	0           	# stripeoffset
	62260       	# Cylinders according to firmware.
	255         	# Heads according to firmware.
	63          	# Sectors according to firmware.
	OCZ-1SVG6KZ2YRMSS8E1	# Disk ident.



So, to summarize:

If the quirk was working, should diskinfo return a sector size of 512 =
bytes, or is it correct  to show a "stripesize" of 4096?

Do we have a bug either on ZFS  or the disk drivers? The same experiment =
on another system (both are 9.1-RELEASE) and a similar drive attached to =
a SATA controller, also adding a 4K sector quirk for it, defines a =
stripe size instead of a sector size.




Thanks,





Borja.




Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?492280E6-E3EE-4540-92CE-C535C8943CCF>