mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-31 11:14:09 +03:00
zdb and inuse tests don't pass with real disks
Due to zpool create auto-partioning in Linux (i.e. sdb1), certain utilities need to use the parition (sdb1) while others use the whole disk name (sdb). Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Paul Zuchowski <pzuchowski@datto.com> Closes #6939 Closes #7261
This commit is contained in:
committed by
Brian Behlendorf
parent
0e85048f53
commit
8e5d14844d
@@ -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
|
||||
|
||||
@@ -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]}')
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user