1#! /usr/local/bin/ksh93 -p 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# 24# Copyright 2013 Spectra Logic. All rights reserved. 25# Use is subject to license terms. 26# 27 28. ${STF_SUITE}/include/libtest.kshlib 29 30############################################################################### 31# 32# __stc_assertion_start 33# 34# ID: fsync_integrity_001_pos 35# 36# DESCRIPTION: 37# 38# Verify the integrity of non-aligned writes to the same blocks within the same 39# transaction group, where an fsync is issued by a non-final writer. 40# 41# STRATEGY: 42 43# This test verifies that the unoverride in the following sequence of events is 44# handled correctly: 45# 46# 1) A new transaction group opens 47# 2) A write is issued to a certain block 48# 3) The writer fsyncs() that file 49# 4) TBD module immediately writes that block, then places an override in the 50# syncer's TBD data structure, indicating that it doesn't need to write that 51# block when syncing. 52# 5) Another write is issued to the same block, with different data. 53# 6) TBD module unoverrides that block in the syncer's TBD data structure 54# 7) The syncer writes that block 55# 56# 57# TESTABILITY: explicit 58# 59# TEST_AUTOMATION_LEVEL: automated 60# 61# CODING_STATUS: BEGIN (2013-1-21) 62# 63# __stc_assertion_end 64# 65############################################################################### 66 67verify_runnable "both" 68 69log_assert "Verify the integrity of non-aligned writes to the same blocks within the same transaction group, where an fsync is issued by a non-final writer." 70 71# Run the test program 72fsync_integrity ${TESTDIR}/${TESTFILE} 73 74# Success is indicated by the return status 75if [[ $? -ne 0 ]]; then 76 log_fail "Test failed to execute or file became corrupted" 77else 78 log_pass 79fi 80 81 82