d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#!/bin/ksh
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# CDDL HEADER START
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# This file and its contents are supplied under the terms of the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Common Development and Distribution License ("CDDL"), version 1.0.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# You may only use this file in accordance with the terms of version
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 1.0 of the CDDL.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# A full copy of the text of the CDDL should have accompanied this
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# source. A copy of the CDDL is also available via the Internet at
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# http://www.illumos.org/license/CDDL.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# CDDL HEADER END
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy# Copyright (c) 2012, 2016 by Delphix. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy. $STF_SUITE/include/libtest.shlib
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# DESCRIPTION:
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Verify 'zfs list -t all -o name,origin,clones' prints the correct
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# clone information
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# STRATEGY:
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 1. Create datasets
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 2. Create recursive snapshots and their clones
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 3. Verify zfs clones property displays right information for different
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# cases
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyverify_runnable "both"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction local_cleanup
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for ds in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $ds/$TESTCLONE.$i && \
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy -rf $ds/$TESTCLONE.$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy datasetexists $ds && log_must zfs destroy -Rf $ds
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Set up filesystem with clones
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction setup_ds
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # create nested datasets
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs create -p $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # verify dataset creation
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for ds in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $ds || log_fail "Create $ds dataset fail."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # create recursive nested snapshot
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs snapshot -r $TESTPOOL/$TESTFS1@snap
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for ds in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $ds@snap || \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "Create $ds@snap snapshot fail."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for ds in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for fs in $datasets; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs clone $ds@snap $fs/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Verify clone list
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction verify_clones
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i no_clones=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset unexpected=$2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset clone_snap=$3
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for ds in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ -n $clone_snap ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy clone_snap=/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy snapshot=$(echo "$names" | grep $ds$clone_snap@snap)
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy actual_clone=$(zfs list -t all -o clones $snapshot | tail -1)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy save=$IFS
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy IFS=','
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -a clones=()
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for token in $actual_clone; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy clones=( "${clones[@]}" "$token" )
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy IFS=$save
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ ${#clones[*]} -ne $no_clones ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "$snapshot has unexpected number of clones" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy " ${#clones[*]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy expected_clone=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy unexpected_clone=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $unexpected -eq 1 ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for fs in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $fs == $ds ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ -z $clone_snap ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy unexpected_clone=$fs/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (for match in ${clones[@]};do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ $match != $unexpected_clone ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy exit 0; done) || log_fail \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "Unexpected clones of the snapshot"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy expected_clone=$fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy unexpected_clone=$fs/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (for match in ${clones[@]};do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ $match == $expected_clone ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ $match != $unexpected_clone ]] \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy && exit 0; done) || log_fail \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "Unexpected clones of the snapshot"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy expected_clone=$fs/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (for match in ${clones[@]};do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ $match == $expected_clone ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy exit 0; done) || log_fail \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "Unexpected clones of the snapshot"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for fs in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy expected_clone=$fs/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (for match in ${clones[@]};do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ $match == $expected_clone ]] && exit 0; \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done) || log_fail "Unexpected clones" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy " of the snapshot"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_onexit local_cleanup
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydatasets="$TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedytypeset -a d_clones
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedytypeset -a deferred_snaps
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedytypeset -i i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must setup_ds
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "Verify zfs clone propery for multiple clones"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedynames=$(zfs list -rt all -o name $TESTPOOL)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must verify_clones 3 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "verfify clone property for clone deletion"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor ds in $datasets; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy $ds/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedynames=$(zfs list -rt all -o name $TESTPOOL)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must verify_clones 2 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must local_cleanup
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must setup_ds
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "verify zfs deferred destroy on clones property"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedynames=$(zfs list -rt all -o name $TESTPOOL)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor ds in $datasets; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy -d $ds@snap
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy deferred_snaps=( "${deferred_snaps[@]}" "$ds@snap" )
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must verify_clones 3 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "verify zfs deferred destroy by destroying clones on clones property"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyd_clones=()
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor ds in $datasets; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for fs in $datasets; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy $fs/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy d_clones=( "${d_clones[@]}" "$fs/$TESTCLONE.$i" )
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedynames=$(zfs list -rtall -o name $TESTPOOL)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor snap in ${deferred_snaps[@]}; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy status=$(echo "$names" | grep $snap)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -z $status ]] || \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "$snap exist after deferred destroy"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor dclone in ${d_clones[@]}; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_note "D CLONE = $dclone"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy status=$(echo "$names" | grep $dclone)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -z $status ]] || \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "$dclone exist after deferred destroy"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must local_cleanup
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must setup_ds
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "verify clone property for zfs promote"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor ds in $datasets; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs promote $ds/$TESTCLONE.$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedynames=$(zfs list -rt all -o name,clones $TESTPOOL)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must verify_clones 3 1 $TESTCLONE
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfor ds in $datasets; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs promote $ds
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must local_cleanup
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "verify clone list truncated correctly"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedytypeset -i j=200
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyi=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfs=$TESTPOOL/$TESTFS1
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs create $fs
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs snapshot $fs@snap
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedywhile((i < 7)); do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs clone $fs@snap $fs/$TESTCLONE$(python -c 'print "x" * 200').$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i=i+1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j=j+200))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedydone
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedyclone_list=$(zfs list -o clones $fs@snap)
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedychar_count=$(echo "$clone_list" | tail -1 | wc | awk '{print $3}')
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy[[ $char_count -eq 1024 ]] || \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "Clone list not truncated correctly. Unexpected character count" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "$char_count"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_pass "'zfs list -o name,origin,clones prints the correct clone information."