Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Nov 2014 08:31:00 +0100
From:      Borja Marcos <borjam@sarenet.es>
To:        Steven Hartland <killing@multiplay.co.uk>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: ZFS bug: was creating ZIL ignores vfs.zfs.min_auto_ashift, should be ZIL sets improper ashift with AHCI controllers
Message-ID:  <757B9039-8DF0-4E6A-A036-82A2143D7F45@sarenet.es>
In-Reply-To: <545BE3E0.4030203@multiplay.co.uk>
References:  <B731A922-3F83-4D8E-A4EA-22C5CA8A3850@sarenet.es> <9C91F97841BC4347910F206618BAA3BB9AF327D1@PAIMAIL.pai.local> <545B76EF.6050709@multiplay.co.uk> <21D2A3A9-B6C1-458F-B17F-480251E999AE@sarenet.es> <545BE3E0.4030203@multiplay.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help

On Nov 6, 2014, at 10:10 PM, Steven Hartland wrote:

> On 06/11/2014 14:58, Borja Marcos wrote:
> Ok narrowed down the issue, looks like cache file generation is where =
the issue is, possibly a race condition.

Hmm and you mentioned a boot pool and a not boot pool. Certainly, that's =
another difference :/ I wrongly blamed the
controlled difference because I directly suspected the quirks mechanism.

> If you run the following then rerun your zdb I suspect you'll get the =
right results (ashift: 12)
> zpool set cachefile=3D'' <pool>
>=20
> Alternatively you can run the following to display real pool config vs =
that which is in the cache file:
> zdb -C <pool>




Let's see

# zpool add rpool log ada1
# zdb|fgrep ashift
            ashift: 12
            ashift: 9


ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: <INTEL SSDSA2CT040G3 4PC10362> ATA-8 SATA 2.x device
ada1: Serial Number PEPR408501DV040AGN
ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 38166MB (78165360 512 byte sectors: 16H 63S/T 16383C)
ada1: quirks=3D0x1<4K>


And now,

# zdb -C rpool|fgrep ashift
                ashift: 12
                ashift: 12


You are right!

This time I had not altered min_auto_ashift but I had added a quirk to =
ata_da.c. So it
correctly used the quirk sector size to adjust ashift.=20

Seems the bug should be "improper cache file generation for a pool used =
for boot". I'll
see if I can run some more tests.



Thanks!




Borja.







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?757B9039-8DF0-4E6A-A036-82A2143D7F45>