xfs_grouwfs -D -5g /some-xfs kernel BUG at filename.c:839! invalid operand: 00000 .... .... Нехватает проверки на отрицательные значения параметра D --- ---
Ok. I've looked into code of xfsprogs and it looks like very simple codechange. However, additional audit for every other XFS utility is needed to ensure it doesn't behave incorrectly with negative numbers as well.
Будет исправлено в следующей сборке.
xfsprogs-2.6.4-alt1 на не совсем честном тесте на loopback высказались: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Input/output error В любом разе надеюсь, что Саша хотя бы в оракулы сгодился...
в чём, собственно, баг ? Пожалуйста, простыми фразами.
При попытке указать отрицательное значение _целевого_ размера data section (даже не прироста) оно померло. Это, типа, если прикинуться, что "grow" мы не понимаем, почитать, что оно умеет только расти, тоже лениво, а написанное в manpage -- вообще не барское дело ;-) Но падает оно зря. Да и файловый параметр принимает очень забавно, хорошо, что хватило ума добавленное "по инерции" sudo убрать: home:~> rpm -q xfsprogs xfsprogs-2.8.16-alt1 home:~> dd if=/dev/zero of=test.img bs=1M count=64 64+0 records in 64+0 records out 67108864 bytes (67 MB) copied, 0.793148 seconds, 84.6 MB/s home:~> man mkfs.xfs home:~> sudo mkfs.xfs test.img Password: meta-data=test.img isize=256 agcount=4, agsize=4096 blks = sectsz=512 attr=0 data = bsize=4096 blocks=16384, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=1200, version=1 = sectsz=512 sunit=0 blks realtime =none extsz=4096 blocks=0, rtextents=0 home:~> /usr/sbin/xfs_growfs -D -5g test.img xfs_growfs: cannot open /dev/hda7: Permission denied home:~> df -T . Filesystem Type Size Used Avail Use% Mounted on /dev/hda7 xfs 14G 14G 779M 95% /home
ох.
На тестовом разделе: t-hard:~> rpm -q xfsprogs xfsprogs-3.0.1-alt1 t-hard:~> sudo mkfs.xfs -d size=104857600 -f /dev/sdd1 meta-data=/dev/sdd1 isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 t-hard:~> mkdir XFS t-hard:~> sudo mount /dev/sdd1 XFS t-hard:~> sudo /usr/sbin/xfs_growfs -D 251000 /dev/sdd1 meta-data=/dev/sdd1 isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 25600 to 251000 t-hard:~> sudo /usr/sbin/xfs_growfs -D -5g /dev/sdd1 meta-data=/dev/sdd1 isize=256 agcount=40, agsize=6400 blks = sectsz=512 attr=2 data = bsize=4096 blocks=251000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=1200, 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: Input/output error t-hard:~> sudo /usr/sbin/xfs_growfs -D 250000 /dev/sdd1 meta-data=/dev/sdd1 isize=256 agcount=40, agsize=6400 blks = sectsz=512 attr=2 data = bsize=4096 blocks=251000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 data size 250000 too small, old size is 251000 Иными словами, УМВР.