[PATCH] fix overflow in xfs_growfs_data_private
Felix Blyakher
felixb at sgi.com
Tue May 26 07:23:26 CDT 2009
On May 23, 2009, at 2:30 PM, Eric Sandeen wrote:
> In the case where growing a filesystem would leave the last AG
> too small, the fixup code has an overflow in the calculation
> of the new size with one fewer ag, because "nagcount" is a 32
> bit number. If the new filesystem has > 2^32 blocks in it
> this causes a problem resulting in an EINVAL return from growfs:
>
> # xfs_io -f -c "truncate 19998630180864" fsfile
> # mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b fsfile
> # mount -o loop fsfile mnt/
> # xfs_growfs mnt/
Is it really 'mnt/', not '/mnt'?
>
> meta-data=/dev/loop0 isize=256 agcount=52,
> agsize=76288719 blks
> = sectsz=512 attr=2
> data = bsize=4096 blocks=3905982455,
> imaxpct=5
> = sunit=0 swidth=0 blks
> naming =version 2 bsize=4096 ascii-ci=0
> log =internal bsize=4096 blocks=32768, version=2
> = sectsz=512 sunit=0 blks, lazy-
> count=0
> realtime =none extsz=4096 blocks=0, rtextents=0
> xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument
>
> Reported-by: richard.ems at cape-horn-eng.com
> Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
Nice find and the neat fix, Eric.
Reviewed-by: Felix Blyakher <felixb at sgi.com>
More information about the xfs
mailing list