From: Dave Chinner <david@fromorbit.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: xfs-oss <xfs@oss.sgi.com>
Subject: Re: [PATCH] xfstests 279: test mkfs with various sector sizes & alignments
Date: Fri, 2 Mar 2012 11:15:00 +1100 [thread overview]
Message-ID: <20120302001500.GC5091@dastard> (raw)
In-Reply-To: <4F5005D1.6040208@redhat.com>
On Thu, Mar 01, 2012 at 05:27:13PM -0600, Eric Sandeen wrote:
> This test uses the scsi_debug module to test mkfs against
> various physical & logical sector sizes, and with aligned
> and unaligned devices.
>
> Check out the scenarios in the test, I think I have the right
> outcomes specified...
>
> Hope it's not looking too hacky.
>
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> ---
>
> diff --git a/279 b/279
> new file mode 100755
> index 0000000..b7ad622
> --- /dev/null
> +++ b/279
> @@ -0,0 +1,115 @@
> +#! /bin/bash
> +# FS QA Test No. 279
> +#
> +# Test mkfs.xfs against various types of devices with varying
> +# logical & physical sector sizes and offsets.
....
> +seq=`basename $0`
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +status=0 # failure is the default!
status=1 means failure is the default....
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +_cleanup()
> +{
> + cd /
> + rm -f $tmp.*
> +}
> +
> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter
> +. ./common.scsi_debug
> +
> +# real QA test starts here
> +_supported_fs xfs
> +_supported_os Linux
> +
> +_require_scsi_debug
> +
> +rm -f $seq.full
> +
> +_get_sector_size()
> +{
> + xfs_db -c "sb 0" -c "p sectsize" $SCSI_DEBUG_DEV | awk '{print $3}'
> +}
Hmmm. seems unnecessary - can be got from mkfs output.
> +
> +_wipe_device()
> +{
> + device=$1
> + dd if=/dev/zero of=$device bs=4k count=1 &> /dev/null
> +}
> +
> +_check_mkfs()
> +{
> + echo "===================" | tee -a $seq.full
> + echo "mkfs with opts: $@" | sed -e "s/\/dev\/sd./DEVICE/" | tee -a $seq.full
you could use sed's alternative delimiter to avoid needing to escape
the path name. i.e | sed -e "s,/dev/sd.,DEVICE,"
> + mkfs.xfs $@ >> $seq.full 2>&1
mkfs.xfs $@ | tee -a $seq.full | filter_mkfs 2> $tmp.mkfs
> + if [ $? -ne 0 ]; then
> + echo "Failed." | tee -a $seq.full
> + return
> + fi
> + echo "Passed." | tee -a $seq.full
> + echo -n "Got sector size: " | tee -a $seq.full
. $tmp.mkfs
echo -n "Got sector size: $sectsz " | tee -a $seq.full
> + _get_sector_size | tee -a $seq.full
> + device=`echo $@ | awk '{print $NF}'`
> + _wipe_device $device
Not sure what this is supposed to do. The awk statement prints the
number of fields in the input record, and _wipe_device uses that as
a file name? What am I missing?
> +}
pretty much the entire output of this function is teed to $seq.full.
You could do that at the call site. i.e.
_check_mkfs .... | tee -a $seq.full
Even better:
> +
> +# === 4k physical 512b logical aligned
> +echo "===================" | tee -a $seq.full
> +echo "4k physical 512b logical aligned" | tee -a $seq.full
> +SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 0 128`
> +# sector size should default to 4k
> +_check_mkfs "" $SCSI_DEBUG_DEV
> +# blocksize smaller than physical sectorsize should revert to logical sectorsize
(missing a test case here?)
> +_put_scsi_debug_dev
(
echo "==================="
echo "4k physical 512b logical aligned"
SCSI_DEBUG_DEV=`_get_scsi_debug_dev 4096 512 0 128`
# sector size should default to 4k
_check_mkfs "" $SCSI_DEBUG_DEV
# blocksize smaller than physical sectorsize should revert to logical sectorsize
_put_scsi_debug_dev
) | tee -a $seq.full
.....
> +
> +exit
status=0
exit
> +# Functions useful for tests on unique block devices
> +#
> +
> +_require_scsi_debug()
> +{
> + # make sure we have the module and it's not already used
> + modinfo scsi_debug 2>&1 > /dev/null || _notrun "scsi_debug module not found"
> + lsmod | grep -wq scsi_debug && _notrun "scsi_debug module in use"
> + # make sure it has the features we need
> + # logical/physical sectors plus unmap support all went in together
> + modinfo scsi_debug | grep -wq sector_size || _notrun "scsi_debug too old"
> +}
Might work for modules, but what about CONFIG_SCSI_DEBUG=y? I
thought you could do all this configuration stuff through the
/sys/bus/scsi/drivers/scsi_debug interface so you didn't need to
screw with modules and parameters?
> +
> +# Args: [physical sector size, [logical sector size, [unaligned(0|1), [size in megs]]]]
> +_get_scsi_debug_dev()
> +{
> + # Defaults to phys 512, logical 512, aligned
> + physical=${1-512}
> + logical=${2-512}
> + unaligned=${3-0}
> + size=${4-128}
> +
> + phys_exp=0
> + while [ $logical -lt $physical ]; do
> + let physical=physical/2
> + let phys_exp=phys_exp+1
> + done
> + opts="sector_size=$logical physblk_exp=$phys_exp lowest_aligned=$unaligned dev_size_mb=$size"
> + echo "scsi_debug options $opts" >> $seq.full
> + modprobe scsi_debug $opts
> + [ $? -eq 0 ] || _fail "scsi_debug modprobe failed"
> + sleep 1
> + device=`grep -wl scsi_debug /sys/block/sd*/device/model | awk -F / '{print $4}'`
> + echo "/dev/$device"
> +}
> +
> +_put_scsi_debug_dev()
> +{
> + sleep 1
> + rmmod scsi_debug || _fail "Could not remove scsi_debug module"
> +}
What is the sleep for?
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2012-03-02 0:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-01 23:27 [PATCH] xfstests 279: test mkfs with various sector sizes & alignments Eric Sandeen
2012-03-02 0:15 ` Dave Chinner [this message]
2012-03-02 3:46 ` Eric Sandeen
2012-03-02 4:28 ` Dave Chinner
2012-03-02 4:07 ` [PATCH V2] " Eric Sandeen
2012-03-02 16:58 ` [PATCH V3] " Eric Sandeen
2012-03-08 22:25 ` Eric Sandeen
2012-03-08 23:11 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120302001500.GC5091@dastard \
--to=david@fromorbit.com \
--cc=sandeen@redhat.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.