On Wed, 24 Jul 2013 23:36:38 -0500
Stan Hoeppner <stan@xxxxxxxxxxxxxxxxx> wrote:
> On 7/24/2013 6:57 PM, Dave Chinner wrote:
> > On Wed, Jul 24, 2013 at 02:32:08PM -0400, Dwight Engen wrote:
> >> Tests 091,240, and 268 are failing on my 4k sector hard disk. The
> >> dio writes from fsx and aiodio_sparse2 are failing on xfs with
> >> EINVAL which is returned from the check at the top of
> >> xfs_file_dio_aio_write().
> >> The fix is to use blockdev -getpbsz to get the physical sector
> >> size instead of the logical sector size. This makes 091 and 268
> >> work. 240 will not run on a 4k drive since fs block size == device
> >> block size. Tested against xfs,ext4, and btrfs.
> > What's the logical sector size of the drive? If it's 4k, then
> > blockdev --getss should be returning 4k. If it's not, then either
> > the drive is reporting that it supports 512 bytes sectors when it
> > doesn't (i.e. the drive is broken) or blockdev is returning the
> > wrong information (i.e. blockdev is broken)....
# blockdev --getss /dev/sda
# blockdev --getpbsz /dev/sda
So it looks like blockdev is reporting the correct values.
> > What does mkfs.xfs output on that device?
mkfs.xfs -f /dev/sda1
meta-data=/dev/sda1 isize=256 agcount=8, agsize=262144
blks = sectsz=4096 attr=2, projid32bit=0
data = bsize=4096 blocks=2097152, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
So mkfs.xfs is reporting sectsz=4096. I added a printf into mkfs.xfs
right after it is setting sectorsize = ft.psectorsize and saw:
sectorsize 4096 ft.psectorsize 4096 ft.lsectorsize 512
> >> rm -f $TEST_DIR/aiodio_sparse
> >> -logical_block_size=`blockdev --getss $TEST_DEV`
> >> +logical_block_size=`blockdev --getpbsz $TEST_DEV`
> > FWIW, that doesn't make much sense - putting the physical block size
> > into a variable named "logical_block_size".....
Yeah, that name wouldn't make much sense with this change. Its actually
being used to compare to the fs block size and then its passed into
aiodio_sparse2 as offset. 091 and 268 use the more generic name bsize,
should I can change it to that?
> > Cheers,
> > Dave.
> AFAIK there are no native 4K sector drives on the market yet. All of
> the currently shipping models with physical 4K sectors are "Advanced
> Format" drives. The Advanced Format standard specifies 4K physical
> sectors -internal- to the drive, but with traditional 512B LBA
> Dwight, what disk drive is this in question? Make/model?
Yep its an Advanced Format drive, some relevant lines from dmesg:
ata1.00: ATA-8: HITACHI HTS725050A7E630, GH2ZB390, max UDMA/133
scsi 0:0:0:0: Direct-Access ATA HITACHI HTS72505 GH2Z PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 0:0:0:0: [sda] 4096-byte physical blocks