As drives sizes have grown, a need to increase the base sector size on disk has also grown. For a very long time the sector size (the smallest chunk a drive can read) has been set to 512 Bytes, with 2TB and beyond drives becoming available this is being increased to 4KiB (4096 bytes). As this would disrupt some old operating system, a standard has been developed that lets new OS use the real size of 4K whilst letting older OS's still use 512 Bytes with the drives firmware doing a conversion.
Unfortunately several drives have appeared that use 4KiB sectors, but which haven't implemented the standard and as such have to be explicitly marked as 4KiB to the OS or are used as if they are 512 Byte drive which can slow them down.
The workaround is a patch to the zpool command, which forces the ashift value to 12 (which internally represents 4KiB blocks). Some patches force this to 12 on all drives which is inefficient for 512 Byte drives. The patch here adds an optional block-size parameter.
Whilst this solution has not been extensively tested, it is being used with no known issues. But be warned this is not a supported workaround and unless speed is vital, you should consider using the standard OI support which has is stable, just not optimal in 4 KiB drives.
A drop in zpool replacement is here
The webrev with details of the patch applied to make the replacement zpool is here
The usage is zpool create tank block-size 4096 raidz1 drive1 drive2 drive3 drive4
There are efforts in Illumos to force ashift=12 via /kernel/drv/sd.conf, see