mkfs.xfs error creating large agcount an raid

Marcus Pereira
2011-06-25T19:50:08Z

I have an issue when creating xfs volume using large agcounts on raid
volumes.

/dev/md0 is a 4 disks raid 0 array:

----------------------------------------
# mkfs.xfs -V
mkfs.xfs version 3.1.4

# mkfs.xfs -d agcount=1872 -b size=4096 /dev/md0 -f
Warning: AG size is a multiple of stripe width. This can cause performance
problems by aligning all AGs on the same disk. To avoid this, run mkfs with
an AG size that is one stripe unit smaller, for example 147840.
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=256 agcount=1872,
agsize=147968 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=276810752, imaxpct=5
= sunit=128 swidth=512 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=135168, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
mkfs.xfs: pwrite64 failed: No space left on device

# mkfs.xfs -d agcount=1871 -b size=4096 /dev/md0 -f
Warning: AG size is a multiple of stripe width. This can cause performance
problems by aligning all AGs on the same disk. To avoid this, run mkfs with
an AG size that is one stripe unit smaller, for example 147840.
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=256 agcount=1871,
agsize=147968 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=276810752, imaxpct=5
= sunit=128 swidth=512 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=135168, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

----------------------------------------------

Any agcount greater then 1871 will lead an error, below that is OK.
I have the same issue when creating xfs volumes on a lvm stripe but with
different agcounts.

When the volume is not on an raid array any number of agcount is OK, so
seems the problem is when sunit/swidth is used.

Marcus