On Wed, 2011-09-21 at 11:54 -0500, Alex Elder wrote: > On Wed, 2011-09-21 at 15:52 +0200, Boris Ranto wrote: > > mkfs.xfs failed to create xfs filesystems with 4 TB minus few bytes due > > to round up error in mkfs.xfs code. > > > > This test case is a regression test for the fs creation problem. > > > > I've tested the test case with mkfs.xfs patch (in the form posted by > > Eric Sandeen) and the test passed (and therefore the patch fixed the > > issue for me). > > > > Signed-off-by: Boris Ranto <branto@xxxxxxxxxx> > > This looks OK, but I'm a little concerned about the > shell's ability to handle > 32-bit values in its > arithmetic expressions (within $((...))). > > Using ${fourtb} works for me, but I just don't know > whether it is written somewhere that bash always > supports 64-bit (or even arbitrary) precision values. > > Do you know? > > Same general concern goes for dd, but I am more inclined > to think it can handle large numbers. > > Otherwise this looks good to me (though I haven't yet > tried it out). > > Reviewed-by: Alex Elder <aelder@xxxxxxx> > > . . . > > _______________________________________________ > xfs mailing list > xfs@xxxxxxxxxxx > http://oss.sgi.com/mailman/listinfo/xfs I'm not sure whether bash guarantees at least 64-bit precision values in its arithmetic operations. Therefore I suppose the values can be computed in advance in this case and the arithmetic operation can be simply left out: Signed-off-by: Boris Ranto <branto@xxxxxxxxxx> diff --git a/258 b/258 new file mode 100755 index 0000000..75f96d2 --- /dev/null +++ b/258 @@ -0,0 +1,59 @@ +#! /bin/bash +# FS QA Test No. 258 +# +# Test fs creation on 4 TB minus few bytes partition +# +#----------------------------------------------------------------------- +# Copyright (c) 2011 Red Hat. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=branto@xxxxxxxxxx + +seq=`basename $0` +echo "QA output created by $seq" + +status=1 # failure is the default! + +_cleanup() +{ + rm -f "$testfile" +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +testfile=$TEST_DIR/258.image + +for ddseek in 4398046511103 4398046510592 4398046510080 4398046510079 4398046509056 4398046507008; +do + echo "Trying to make $ddseek B long xfs fs image" + rm -f "$testfile" + dd if=/dev/zero "of=$testfile" bs=1 count=0 seek=$ddseek >/dev/null 2>&1 || echo "dd failed" + lofile=$(losetup -f) + losetup $lofile "$testfile" + "$MKFS_XFS_PROG" -b size=512 $lofile >/dev/null || echo "mkfs failed!" + losetup -d $lofile +done + +status=0 ; exit diff --git a/258.out b/258.out new file mode 100644 index 0000000..6f27c16 --- /dev/null +++ b/258.out @@ -0,0 +1,7 @@ +QA output created by 258 +Trying to make 4398046511103 B long xfs fs image +Trying to make 4398046510592 B long xfs fs image +Trying to make 4398046510080 B long xfs fs image +Trying to make 4398046510079 B long xfs fs image +Trying to make 4398046509056 B long xfs fs image +Trying to make 4398046507008 B long xfs fs image diff --git a/group b/group index 84c45da..739f806 100644 --- a/group +++ b/group @@ -371,3 +371,4 @@ deprecated 255 auto quick prealloc 256 auto quick 257 auto quick +258 auto quick _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs