On Wed, Dec 12, 2012 at 05:26:24PM -0600, Eric Sandeen wrote:
> blkid_get_topology() ignores devices which report 512
> as their minimum & optimal IO size, but we should ignore
> anything up to the physical sector size; otherwise hard-4k
> sector devices will report a "stripe size" of 4k, and warn
> if anything larger is specified:
>
> # modprobe scsi_debug physblk_exp=3 num_parts=2 dev_size_mb=128
> # mdadm --create /dev/md1 --level=0 --raid-devices=2 -c 4 /dev/sdb1 /dev/sdb2
> # mkfs.xfs -f -d su=16k,sw=2 /dev/md1
> mkfs.xfs: Specified data stripe unit 32 is not the same as the volume stripe
> unit 8
> mkfs.xfs: Specified data stripe width 64 is not the same as the volume stripe
> width 16
> ...
>
> but a stripe unit of 4k is pretty nonsensical. And that's even chosen by
> default in this case, which is maybe even worse?
>
> # mkfs.xfs -f /dev/md1
> meta-data=/dev/md1 isize=256 agcount=2, agsize=8125 blks
> = sectsz=512 attr=2
> data = bsize=4096 blocks=16249, imaxpct=25
> = sunit=1 swidth=8 blks
> ...
>
> We can rearrange things a bit, get the physical sector size first,
> and then ignore reported minimum/optimal sizes which is no larger
> than that.
>
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
Looks good.
Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
--
Dave Chinner
david@xxxxxxxxxxxxx
|