Bug 2842 - xfs_growfs падает с отрицательным значением.
Summary: xfs_growfs падает с отрицательным значением.
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: xfsprogs (show other bugs)
Version: unstable
Hardware: all Linux
: P4 normal
Assignee: Anton Farygin
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-08-15 15:53 MSD by Marat Khairullin
Modified: 2009-06-16 17:36 MSD (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Marat Khairullin 2003-08-15 15:53:58 MSD
xfs_grouwfs -D -5g /some-xfs
kernel BUG at filename.c:839!
invalid operand: 00000 ....
....
Нехватает проверки на отрицательные значения параметра D
---

---

Comment 1 Alexander Bokovoy 2003-08-25 20:46:17 MSD
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.
Comment 2 Alexander Bokovoy 2003-12-07 14:13:15 MSK
Будет исправлено в следующей сборке.
Comment 3 Michael Shigorin 2006-10-02 10:05:26 MSD
xfsprogs-2.6.4-alt1 на не совсем честном тесте на loopback высказались:
xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: Input/output error

В любом разе надеюсь, что Саша хотя бы в оракулы сгодился...
Comment 4 Sergey Bolshakov 2006-10-02 11:53:32 MSD
в чём, собственно, баг ?
Пожалуйста, простыми фразами.
Comment 5 Michael Shigorin 2006-12-17 21:22:56 MSK
При попытке указать отрицательное значение _целевого_ размера 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
Comment 6 Sergey Bolshakov 2006-12-17 21:31:51 MSK
ох.
Comment 7 Michael Shigorin 2009-06-16 17:36:32 MSD
На тестовом разделе:

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

Иными словами, УМВР.