1*2fae26bdSAlan Somers#!/usr/local/bin/ksh93 -p 2*2fae26bdSAlan Somers# 3*2fae26bdSAlan Somers# CDDL HEADER START 4*2fae26bdSAlan Somers# 5*2fae26bdSAlan Somers# The contents of this file are subject to the terms of the 6*2fae26bdSAlan Somers# Common Development and Distribution License (the "License"). 7*2fae26bdSAlan Somers# You may not use this file except in compliance with the License. 8*2fae26bdSAlan Somers# 9*2fae26bdSAlan Somers# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*2fae26bdSAlan Somers# or http://www.opensolaris.org/os/licensing. 11*2fae26bdSAlan Somers# See the License for the specific language governing permissions 12*2fae26bdSAlan Somers# and limitations under the License. 13*2fae26bdSAlan Somers# 14*2fae26bdSAlan Somers# When distributing Covered Code, include this CDDL HEADER in each 15*2fae26bdSAlan Somers# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*2fae26bdSAlan Somers# If applicable, add the following below this CDDL HEADER, with the 17*2fae26bdSAlan Somers# fields enclosed by brackets "[]" replaced with your own identifying 18*2fae26bdSAlan Somers# information: Portions Copyright [yyyy] [name of copyright owner] 19*2fae26bdSAlan Somers# 20*2fae26bdSAlan Somers# CDDL HEADER END 21*2fae26bdSAlan Somers# 22*2fae26bdSAlan Somers 23*2fae26bdSAlan Somers# 24*2fae26bdSAlan Somers# Copyright 2007 Sun Microsystems, Inc. All rights reserved. 25*2fae26bdSAlan Somers# Use is subject to license terms. 26*2fae26bdSAlan Somers 27*2fae26bdSAlan Somers. $STF_SUITE/tests/redundancy/redundancy.kshlib 28*2fae26bdSAlan Somers 29*2fae26bdSAlan Somers################################################################################# 30*2fae26bdSAlan Somers# 31*2fae26bdSAlan Somers# __stc_assertion_start 32*2fae26bdSAlan Somers# 33*2fae26bdSAlan Somers# ID: redundancy_002_pos 34*2fae26bdSAlan Somers# 35*2fae26bdSAlan Somers# DESCRIPTION: 36*2fae26bdSAlan Somers# A raidz2 pool can withstand 2 devices are failing or missing. 37*2fae26bdSAlan Somers# 38*2fae26bdSAlan Somers# STRATEGY: 39*2fae26bdSAlan Somers# 1. Create N(>3,<5) virtual disk files. 40*2fae26bdSAlan Somers# 2. Create raidz2 pool based on the virtual disk files. 41*2fae26bdSAlan Somers# 3. Fill the filesystem with directories and files. 42*2fae26bdSAlan Somers# 4. Record all the files and directories checksum information. 43*2fae26bdSAlan Somers# 5. Damaged at most two of the virtual disk files. 44*2fae26bdSAlan Somers# 6. Verify the data is correct to prove raidz2 can withstand 2 devices 45*2fae26bdSAlan Somers# are failing. 46*2fae26bdSAlan Somers# 47*2fae26bdSAlan Somers# TESTABILITY: explicit 48*2fae26bdSAlan Somers# 49*2fae26bdSAlan Somers# TEST_AUTOMATION_LEVEL: automated 50*2fae26bdSAlan Somers# 51*2fae26bdSAlan Somers# CODING_STATUS: COMPLETED (2006-08-21) 52*2fae26bdSAlan Somers# 53*2fae26bdSAlan Somers# __stc_assertion_end 54*2fae26bdSAlan Somers# 55*2fae26bdSAlan Somers################################################################################ 56*2fae26bdSAlan Somers 57*2fae26bdSAlan Somersverify_runnable "global" 58*2fae26bdSAlan Somers 59*2fae26bdSAlan Somerslog_assert "Verify raidz2 pool can withstand two devices are failing." 60*2fae26bdSAlan Somerslog_onexit cleanup 61*2fae26bdSAlan Somers 62*2fae26bdSAlan Somersfor cnt in 3 4; do 63*2fae26bdSAlan Somers setup_test_env $TESTPOOL raidz2 $cnt 64*2fae26bdSAlan Somers 65*2fae26bdSAlan Somers # 66*2fae26bdSAlan Somers # Inject data corruption errors for raidz2 pool 67*2fae26bdSAlan Somers # 68*2fae26bdSAlan Somers for i in 1 2; do 69*2fae26bdSAlan Somers damage_devs $TESTPOOL $i "label" 70*2fae26bdSAlan Somers log_must is_data_valid $TESTPOOL 71*2fae26bdSAlan Somers log_must clear_errors $TESTPOOL 72*2fae26bdSAlan Somers done 73*2fae26bdSAlan Somers 74*2fae26bdSAlan Somers # 75*2fae26bdSAlan Somers # Inject bad devices errors for raidz2 pool 76*2fae26bdSAlan Somers # 77*2fae26bdSAlan Somers for i in 1 2; do 78*2fae26bdSAlan Somers damage_devs $TESTPOOL $i 79*2fae26bdSAlan Somers log_must is_data_valid $TESTPOOL 80*2fae26bdSAlan Somers log_must recover_bad_missing_devs $TESTPOOL $i 81*2fae26bdSAlan Somers done 82*2fae26bdSAlan Somers 83*2fae26bdSAlan Somers # 84*2fae26bdSAlan Somers # Inject missing device errors for raidz2 pool 85*2fae26bdSAlan Somers # 86*2fae26bdSAlan Somers for i in 1 2; do 87*2fae26bdSAlan Somers remove_devs $TESTPOOL $i 88*2fae26bdSAlan Somers log_must is_data_valid $TESTPOOL 89*2fae26bdSAlan Somers log_must recover_bad_missing_devs $TESTPOOL $i 90*2fae26bdSAlan Somers done 91*2fae26bdSAlan Somersdone 92*2fae26bdSAlan Somers 93*2fae26bdSAlan Somerslog_pass "Raidz2 pool can withstand two devices are failing passed." 94