Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix zdb and inuse tests that don't pass with real disks #7261

Merged
merged 1 commit into from
Mar 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions tests/zfs-tests/include/blkdev.shlib
Original file line number Diff line number Diff line change
Expand Up @@ -423,3 +423,19 @@ function get_debug_device
{
lsscsi | nawk '/scsi_debug/ {print $6; exit}' | cut -d / -f3
}

#
# Get actual devices used by the pool (i.e. linux sdb1 not sdb).
#
function get_pool_devices #testpool #devdir
{
typeset testpool=$1
typeset devdir=$2
typeset out=""

if is_linux; then
out=$(zpool status -P $testpool |grep ${devdir} | awk '{print $1}')
out=$(echo $out | sed -e "s|${devdir}/||g" | tr '\n' ' ')
fi
echo $out
}
15 changes: 12 additions & 3 deletions tests/zfs-tests/include/libtest.shlib
Original file line number Diff line number Diff line change
Expand Up @@ -810,7 +810,11 @@ function zero_partitions #<whole_disk_name>
typeset i

if is_linux; then
log_must parted $DEV_DSKDIR/$diskname -s -- mklabel gpt
DSK=$DEV_DSKDIR/$diskname
DSK=$(echo $DSK | sed -e "s|//|/|g")
log_must parted $DSK -s -- mklabel gpt
blockdev --rereadpt $DSK 2>/dev/null
block_device_wait
else
for i in 0 1 3 4 5 6 7
do
Expand Down Expand Up @@ -838,10 +842,11 @@ function set_partition #<slice_num> <slice_start> <size_plus_units> <whole_disk
typeset start=$2
typeset size=$3
typeset disk=$4
[[ -z $slicenum || -z $size || -z $disk ]] && \
log_fail "The slice, size or disk name is unspecified."

if is_linux; then
if [[ -z $size || -z $disk ]]; then
log_fail "The size or disk name is unspecified."
fi
typeset size_mb=${size%%[mMgG]}

size_mb=${size_mb%%[mMgG][bB]}
Expand Down Expand Up @@ -884,6 +889,10 @@ function set_partition #<slice_num> <slice_start> <size_plus_units> <whole_disk
blockdev --rereadpt $DEV_DSKDIR/$disk 2>/dev/null
block_device_wait
else
if [[ -z $slicenum || -z $size || -z $disk ]]; then
log_fail "The slice, size or disk name is unspecified."
fi

typeset format_file=/var/tmp/format_in.$$

echo "partition" >$format_file
Expand Down
5 changes: 5 additions & 0 deletions tests/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ config_count=(1 2)
set -A DISK $DISKS

default_mirror_setup_noexit $DISKS

DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR})
log_note "$DEVS"
[[ -n $DEVS ]] && set -A DISK $DEVS

log_must dd if=/dev/${DISK[0]} of=/dev/${DISK[1]} bs=1K count=256 conv=notrunc

for x in 0 1 ; do
Expand Down
11 changes: 8 additions & 3 deletions tests/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,22 @@ function cleanup
verify_runnable "global"
verify_disk_count "$DISKS" 2
set -A DISK $DISKS
WHOLE_DISK=${DISK[0]}

default_mirror_setup_noexit $DISKS
log_must zpool offline $TESTPOOL ${DISK[0]}
DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR})
[[ -n $DEVS ]] && set -A DISK $DEVS

log_must zpool offline $TESTPOOL ${WHOLE_DISK}
log_must dd if=/dev/urandom of=$TESTDIR/testfile bs=1K count=2
log_must zpool export $TESTPOOL

log_must dd if=$DEV_RDSKDIR/${DISK[0]} of=$DEV_RDSKDIR/${DISK[1]} bs=1K count=256 conv=notrunc

ubs=$(zdb -lu $DEV_RDSKDIR/${DISK[1]} | grep -e LABEL -e Uberblock -e 'labels = ')
ubs=$(zdb -lu ${DISK[1]} | grep -e LABEL -e Uberblock -e 'labels = ')
log_note "vdev 1: ubs $ubs"

ub_dump_counts=$(zdb -lu $DEV_RDSKDIR/${DISK[1]} | \
ub_dump_counts=$(zdb -lu ${DISK[1]} | \
awk ' /LABEL/ {label=$NF; blocks[label]=0};
/Uberblock/ {blocks[label]++};
END {print blocks[0],blocks[1],blocks[2],blocks[3]}')
Expand Down
4 changes: 4 additions & 0 deletions tests/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ verify_disk_count "$DISKS" 2
set -A DISK $DISKS

default_mirror_setup_noexit $DISKS
DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR})
log_note "$DEVS"
[[ -n $DEVS ]] && set -A DISK $DEVS

log_must dd if=/dev/zero of=$DEV_RDSKDIR/${DISK[1]} bs=1K count=256 conv=notrunc
log_must truncate -s 0 $TEMPFILE

Expand Down
8 changes: 3 additions & 5 deletions tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,18 @@ typeset -i i=0

unset NOINUSE_CHECK
while (( i < ${#vdevs[*]} )); do

for num in 0 1 2 3 ; do
eval typeset disk=\${FS_DISK$num}
zero_partitions $disk
done

typeset cyl=""
for num in 0 1 2 3 ; do
eval typeset slice=\${FS_SIDE$num}
disk=${slice%${SLICE_PREFIX}*}
slice=${slice##*${SLICE_PREFIX}}
[[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num}
slice=$(echo $slice | awk '{ print substr($1,length($1),1) }')
log_must set_partition $slice "$cyl" $FS_SIZE $disk
cyl=$(get_endslice $disk $slice)
[[ $num < 3 ]] && cyl=$(get_endslice $disk $slice)
done

if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then
Expand All @@ -115,7 +114,6 @@ while (( i < ${#vdevs[*]} )); do
(( i = i + 1 ))
continue
fi

create_pool $TESTPOOL1 ${vdevs[i]} $vdisks spare $sdisks
verify_assertion "$rawtargets"
destroy_pool $TESTPOOL1
Expand Down
5 changes: 3 additions & 2 deletions tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,10 @@ done
for num in 0 1 2 3 ; do
eval typeset slice=\${FS_SIDE$num}
disk=${slice%${SLICE_PREFIX}*}
slice=${slice##*${SLICE_PREFIX}}
[[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num}
slice=$(echo $slice | awk '{ print substr($1,length($1),1) }')
log_must set_partition $slice "$cyl" $FS_SIZE $disk
cyl=$(get_endslice $disk $slice)
[[ $num < 3 ]] && cyl=$(get_endslice $disk $slice)
done

while (( i < ${#vdevs[*]} )); do
Expand Down
10 changes: 8 additions & 2 deletions tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,19 @@ typeset -i i=0

while (( i < ${#vdevs[*]} )); do

for num in 0 1 2 3 ; do
eval typeset disk=\${FS_DISK$num}
zero_partitions $disk
done

typeset cyl=""
for num in 0 1 2 3 ; do
eval typeset slice=\${FS_SIDE$num}
disk=${slice%${SLICE_PREFIX}*}
slice=${slice##*${SLICE_PREFIX}}
[[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num}
slice=$(echo $slice | awk '{ print substr($1,length($1),1) }')
log_must set_partition $slice "$cyl" $FS_SIZE $disk
cyl=$(get_endslice $disk $slice)
[[ $num < 3 ]] && cyl=$(get_endslice $disk $slice)
done

if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then
Expand Down