Print this page
NEX-9752 backport illumos 6950 ARC should cache compressed data
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
6950 ARC should cache compressed data
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Reviewed by: Don Brady <don.brady@intel.com>
Reviewed by: Richard Elling <Richard.Elling@RichardElling.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
6369 remove SVM tests from ZFS test suite
Reviewed by: John Kennedy <john.kennedy@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Reviewed by: Albert Lee <trisk@omniti.com>
Approved by: Dan McDonald <danmcd@omniti.com>
6248 zpool_create_008_pos and zpool_create_009_neg can fail intermittently
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
4185 add new cryptographic checksums to ZFS: SHA-512, Skein, Edon-R (fix studio build)
4185 add new cryptographic checksums to ZFS: SHA-512, Skein, Edon-R
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Approved by: Garrett D'Amore <garrett@damore.org>
5767 fix several problems with zfs test suite
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Approved by: Gordon Ross <gwr@nexenta.com>
NEX-3974 Remove timing issues so the robot can run consistently
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Josef Sipek <josef.sipek@nexenta.com>
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
NEX-3363 Test suites don't cleanup after themselves properly.
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
NEX-3740 The zfs tests use psrinfo instead of /usr/sbin/psrinfo
    Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
    Reviewed by: Steve Peng <steve.peng@nexenta.com>
NEX-3258 Remove dependency upon SVM from zfs-tests
Reviewed by: Josef Sipek <josef.sipek@nexenta.com>
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
NEX-2744 zfs-tests suite fails rootpool_002_neg
NEX-2739 zfs-tests suite fails link_count_001
NEX-2741 zfs-tests suite fails mmap_write_001_pos
4206 history_003_pos relies on exact size of history log and entries
4207 history_008_pos depends on obsolete internal history log message
4208 Typo in zfs_main.c: "posxiuser"
4209 Populate zfstest with the remainder of the STF tests
Reviewed by: Sonu Pillai <sonu.pillai@delphix.com>
Reviewed by: Will Guyette <will.guyette@delphix.com>
Reviewed by: Eric Diven <eric.diven@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>

*** 262,306 **** log_fail "$fs_vol@$snap must exist." log_must zfs bookmark $fs_vol@$snap $fs_vol#$bkmark } - # - # Create a temporary clone result of an interrupted resumable 'zfs receive' - # $1 Destination filesystem name. Must not exist, will be created as the result - # of this function along with its %recv temporary clone - # $2 Source filesystem name. Must not exist, will be created and destroyed - # - function create_recv_clone - { - typeset recvfs="$1" - typeset sendfs="${2:-$TESTPOOL/create_recv_clone}" - typeset snap="$sendfs@snap1" - typeset incr="$sendfs@snap2" - typeset mountpoint="$TESTDIR/create_recv_clone" - typeset sendfile="$TESTDIR/create_recv_clone.zsnap" - - [[ -z $recvfs ]] && log_fail "Recv filesystem's name is undefined." - - datasetexists $recvfs && log_fail "Recv filesystem must not exist." - datasetexists $sendfs && log_fail "Send filesystem must not exist." - - log_must zfs create -o mountpoint="$mountpoint" $sendfs - log_must zfs snapshot $snap - log_must eval "zfs send $snap | zfs recv -u $recvfs" - log_must mkfile 1m "$mountpoint/data" - log_must zfs snapshot $incr - log_must eval "zfs send -i $snap $incr | dd bs=10k count=1 > $sendfile" - log_mustnot eval "zfs recv -su $recvfs < $sendfile" - log_must zfs destroy -r $sendfs - log_must rm -f "$sendfile" - - if [[ $(get_prop 'inconsistent' "$recvfs/%recv") -ne 1 ]]; then - log_fail "Error creating temporary $recvfs/%recv clone" - fi - } - function default_mirror_setup { default_mirror_setup_noexit $1 $2 $3 log_pass --- 262,271 ----
*** 489,498 **** --- 454,465 ---- done fi [[ -d $TESTDIR ]] && \ log_must rm -rf $TESTDIR + [[ -d $TESTDIR1 ]] && \ + log_must rm -rf $TESTDIR1 } # # Common function used to cleanup storage pools, file systems
*** 1182,1196 **** # Return 0 if destroy successfully or the pool exists; $? otherwise # Note: In local zones, this function should return 0 silently. # # $1 - pool name # Destroy pool with the given parameters. ! function destroy_pool #pool { typeset pool=${1%%/*} typeset mtpt if [[ -z $pool ]]; then log_note "No pool name given." return 1 --- 1149,1165 ---- # Return 0 if destroy successfully or the pool exists; $? otherwise # Note: In local zones, this function should return 0 silently. # # $1 - pool name + # $2 - optional force flag # Destroy pool with the given parameters. ! function do_destroy_pool #pool <-f> { typeset pool=${1%%/*} + typeset force=$2 typeset mtpt if [[ -z $pool ]]; then log_note "No pool name given." return 1
*** 1202,1219 **** # At times, syseventd activity can cause attempts to # destroy a pool to fail with EBUSY. We retry a few # times allowing failures before requiring the destroy # to succeed. ! typeset -i wait_time=10 ret=1 count=0 must="" while [[ $ret -ne 0 ]]; do ! $must zpool destroy -f $pool ret=$? [[ $ret -eq 0 ]] && break log_note "zpool destroy failed with $ret" ! [[ count++ -ge 7 ]] && must=log_must sleep $wait_time done [[ -d $mtpt ]] && \ log_must rm -rf $mtpt --- 1171,1188 ---- # At times, syseventd activity can cause attempts to # destroy a pool to fail with EBUSY. We retry a few # times allowing failures before requiring the destroy # to succeed. ! typeset -i wait_time=$DESTROY_SLEEP_TIME ret=1 count=0 must="" while [[ $ret -ne 0 ]]; do ! $must zpool destroy $force $pool ret=$? [[ $ret -eq 0 ]] && break log_note "zpool destroy failed with $ret" ! [[ count++ -ge $NUM_RETRIES ]] && must=log_must sleep $wait_time done [[ -d $mtpt ]] && \ log_must rm -rf $mtpt
*** 1224,1234 **** --- 1193,1239 ---- fi return 0 } + # Return 0 if destroy successfully or the pool exists; $? otherwise + # Note: In local zones, this function should return 0 silently. # + # $1 - pool name + # Destroy pool with the given parameters. + + function destroy_pool_no_force #pool + { + typeset pool=${1%%/*} + + do_destroy_pool $pool + if (( $? != 0 )); then + return 1 + else + return 0 + fi + } + + # Return 0 if destroy successfully or the pool exists; $? otherwise + # Note: In local zones, this function should return 0 silently. + # + # $1 - pool name + # Force a destroy pool with the given parameters. + + function destroy_pool #pool + { + typeset pool=${1%%/*} + + do_destroy_pool $pool -f + if (( $? != 0 )); then + return 1 + else + return 0 + fi + } + + # # Firstly, create a pool with 5 datasets. Then, create a single zone and # export the 5 datasets to it. In addition, we also add a ZFS filesystem # and a zvol device to the zone. # # $1 zone name
*** 1504,1538 **** fi return 0 } # - # Wait until a hotspare transitions to a given state or times out. - # - # Return 0 when pool/disk matches expected state, 1 on timeout. - # - function wait_hotspare_state # pool disk state timeout - { - typeset pool=$1 - typeset disk=${2#$/DEV_DSKDIR/} - typeset state=$3 - typeset timeout=${4:-60} - typeset -i i=0 - - while [[ $i -lt $timeout ]]; do - if check_hotspare_state $pool $disk $state; then - return 0 - fi - - i=$((i+1)) - sleep 1 - done - - return 1 - } - - # # Verify a given slog disk is inuse or avail # # Return 0 is pool/disk matches expected state, 1 otherwise # function check_slog_state # pool disk state{online,offline,unavail} --- 1509,1518 ----
*** 1567,1601 **** fi return 0 } # - # Wait until a vdev transitions to a given state or times out. - # - # Return 0 when pool/disk matches expected state, 1 on timeout. - # - function wait_vdev_state # pool disk state timeout - { - typeset pool=$1 - typeset disk=${2#$/DEV_DSKDIR/} - typeset state=$3 - typeset timeout=${4:-60} - typeset -i i=0 - - while [[ $i -lt $timeout ]]; do - if check_vdev_state $pool $disk $state; then - return 0 - fi - - i=$((i+1)) - sleep 1 - done - - return 1 - } - - # # Check the output of 'zpool status -v <pool>', # and to see if the content of <token> contain the <keyword> specified. # # Return 0 is contain, 1 otherwise # --- 1547,1556 ----
*** 1622,1633 **** # is_pool_resilvered - to check if the pool is resilver completed # is_pool_scrubbing - to check if the pool is scrub in progress # is_pool_scrubbed - to check if the pool is scrub completed # is_pool_scrub_stopped - to check if the pool is scrub stopped # is_pool_scrub_paused - to check if the pool has scrub paused - # is_pool_removing - to check if the pool is removing a vdev - # is_pool_removed - to check if the pool is remove completed # function is_pool_resilvering #pool <verbose> { check_pool_status "$1" "scan" "resilver in progress since " $2 return $? --- 1577,1586 ----
*** 1661,1682 **** { check_pool_status "$1" "scan" "scrub paused since " $2 return $? } - function is_pool_removing #pool - { - check_pool_status "$1" "remove" "in progress since " - return $? - } - - function is_pool_removed #pool - { - check_pool_status "$1" "remove" "completed on" - return $? - } - # # Use create_pool()/destroy_pool() to clean up the infomation in # in the given disk to avoid slice overlapping. # function cleanup_devices #vdevs --- 1614,1623 ----
*** 2447,2457 **** --- 2388,2440 ---- eval su \$user -c \"$@\" > /tmp/out 2>/tmp/err return $? } + # Return 0 if the pool is successfully epxorted; $? otherwise # + # $1 - pool name + # Export pool. + function export_pool #pool + { + typeset pool=${1%%/*} + # Checking to see if the device is busy. If so, we'll + # retry the export a few times with a sleep between tries. + errmsg='device is busy' + retry_num=$NUM_RETRIES + TMPFILE=`mktemp` + if [ -z "$TMPFILE" ] ; then + log_note "Unable to create temporary file $TMPFILE" + return 1 + fi + until [ $retry_num == 0 ] ; do + log_note "zpool export $pool" + zpool export $pool 2>$TMPFILE + # If the export failed, see if it's due to a + # device is busy issue and retry if it is. + if (( $? != 0 )); then + # if this is busy then we want to retry + if [ "`grep "$errmsg" $TMPFILE`" != "" ]; then + retry_num-=1 + log_note "Device is busy, retry zpool export" + sleep $EXPORT_SLEEP_TIME + else # return here if error is something else + rn $TMPFILE + return 1 + fi + else + # export succeeded. + rm $TMPFILE + return 0 + fi + done + # We've reached our max retries, try to export one more time + # and require it to succeed. + log_must zpool export $pool + } + + # # Check if the pool contains the specified vdevs # # $1 pool # $2..n <vdev> ... #
*** 2547,2595 **** typeset objnum [[ -e $pathname ]] || log_fail "No such file or directory: $pathname" objnum=$(stat -c %i $pathname) echo $objnum - } - - # - # Prints the current time in seconds since UNIX Epoch. - # - function current_epoch - { - printf '%(%s)T' - } - - # - # Get decimal value of global uint32_t variable using mdb. - # - function mdb_get_uint32 - { - typeset variable=$1 - typeset value - - value=$(mdb -k -e "$variable/X | ::eval .=U") - if [[ $? -ne 0 ]]; then - log_fail "Failed to get value of '$variable' from mdb." - return 1 - fi - - echo $value - return 0 - } - - # - # Set global uint32_t variable to a decimal value using mdb. - # - function mdb_set_uint32 - { - typeset variable=$1 - typeset value=$2 - - mdb -kw -e "$variable/W 0t$value" > /dev/null - if [[ $? -ne 0 ]]; then - echo "Failed to set '$variable' to '$value' in mdb." - return 1 - fi - - return 0 } --- 2530,2535 ----