003 File Manager
Current Path:
/usr/src/tests/sys/cddl/zfs/tests/snapshot
usr
/
src
/
tests
/
sys
/
cddl
/
zfs
/
tests
/
snapshot
/
📁
..
📄
Makefile
(1.28 KB)
📄
cleanup.ksh
(1.02 KB)
📄
clone_001_pos.ksh
(3.67 KB)
📄
ctldir_acl.txt
(144 B)
📄
rollback_001_pos.ksh
(3.07 KB)
📄
rollback_002_pos.ksh
(3.43 KB)
📄
rollback_003_pos.ksh
(2.86 KB)
📄
setup.ksh
(1.05 KB)
📄
snapshot.cfg
(1.99 KB)
📄
snapshot_001_pos.ksh
(2.81 KB)
📄
snapshot_002_pos.ksh
(3.85 KB)
📄
snapshot_003_pos.ksh
(2.65 KB)
📄
snapshot_004_pos.ksh
(2.49 KB)
📄
snapshot_005_pos.ksh
(2.78 KB)
📄
snapshot_006_pos.ksh
(3.81 KB)
📄
snapshot_007_pos.ksh
(2.73 KB)
📄
snapshot_008_pos.ksh
(2.6 KB)
📄
snapshot_009_pos.ksh
(3.4 KB)
📄
snapshot_010_pos.ksh
(2.94 KB)
📄
snapshot_011_pos.ksh
(3.23 KB)
📄
snapshot_012_pos.ksh
(3.14 KB)
📄
snapshot_013_pos.ksh
(2.83 KB)
📄
snapshot_014_pos.ksh
(2.48 KB)
📄
snapshot_015_pos.ksh
(3.64 KB)
📄
snapshot_016_pos.ksh
(3.42 KB)
📄
snapshot_017_pos.ksh
(4.6 KB)
📄
snapshot_018_pos.ksh
(2.58 KB)
📄
snapshot_019_pos.ksh
(2.99 KB)
📄
snapshot_020_pos.ksh
(2.6 KB)
📄
snapshot_test.sh
(16.91 KB)
Editing: snapshot_019_pos.ksh
#! /usr/local/bin/ksh93 -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # $FreeBSD$ # # Copyright 2013 Spectra Logic. All rights reserved. # Use is subject to license terms. # # . $STF_SUITE/include/libtest.kshlib ################################################################################ # # __stc_assertion_start # # ID: snapshot_019_pos # # DESCRIPTION: # Accessing snapshots and unmounting them in parallel does not panic. # FreeBSD PR kern/184677 # # STRATEGY: # 1. Create a dataset # 2. Set the snapdir property to visible # 3. Do the following in parallel # a. Repeatedly access the snapshot # b. Repeatedly unmount the snapshot # 4. Verify that the system does not panic # # TESTABILITY: explicit # # TEST_AUTOMATION_LEVEL: automated # # CODING_STATUS: COMPLETED (2013-12-23) # # __stc_assertion_end # ################################################################################ verify_runnable "both" KILL_SWITCH=${PWD}/kill_switch function stat_snapshot { while [ ! -f ${KILL_SWITCH} ]; do cd $SNAPDIR # Exercise forced unmount stat "$SNAPDIR" > /dev/null 2>&1 done } function ls_snapshot { # Pre-generate the argument list. ls_args="" for ((num=0; $num<100; num=$num+1)); do ls_args="$ls_args $SNAPDIR/.." done while [ ! -f ${KILL_SWITCH} ]; do ls $ls_args >/dev/null 2>&1 done } log_assert "Accessing snapshots and unmounting them in parallel does not panic" log_must dataset_setprop $TESTPOOL "snapdir" "visible" # Take snapshots log_must $ZFS snapshot "$TESTPOOL/$TESTFS@$TESTSNAP" # Repeatedly access the snapshot directory stat_snapshot & stat_pid="$!" ls_snapshot & ls_pid="$!" # Repeatedly unmount the snapshot directory for ((i=0; $i<100; i=$i+1)); do umount "$SNAPDIR" >/dev/null 2>&1 log_note "$i non-forced done" # Sleep just long enough for the other "threads" to remount. sleep 0.1 umount -f "$SNAPDIR" >/dev/null 2>&1 log_note "$i forced done" sleep 0.1 done # Kill the other "threads" and wait for them to die. touch $KILL_SWITCH log_note "Waiting for all child processes to die..." wait # Test that no reference leaks occurred and we can cleanup without forcing. log_must $ZFS unmount $TESTPOOL/$TESTFS log_must $ZFS destroy -r $TESTPOOL/$TESTFS # If we get here, we managed to not panic, deadlock, or leak references. log_pass
Upload File
Create Folder