#! /bin/bash
# FSQA Test No. 153
#
# Associate filesystem with a session by setting DMAPI DM_EVENT_RENAME
# disposition.
#
#-----------------------------------------------------------------------
# Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
#-----------------------------------------------------------------------
#
# creator
owner=allanr@sgi.com

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1    # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
    _cleanup_testdir
}

# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.dmapi

# real QA test starts here
_supported_fs xfs
_supported_os Linux IRIX

_require_scratch
_scratch_mkfs_xfs >/dev/null 2>&1
_dmapi_scratch_mount

DMAPI_FS_HANDLE="`${DMAPI_QASUITE1_DIR}cmd/path_to_fshandle $SCRATCH_MNT`"

echo "*** create DMAPI sessions"
eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session`
sid1=$newsid
eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session`
sid2=$newsid

${DMAPI_QASUITE1_DIR}cmd/set_disp -s $sid1 $DMAPI_FS_HANDLE DM_EVENT_RENAME
${DMAPI_QASUITE1_DIR}cmd/getall_disp $sid1 | $PERL_PROG -ne "s/fshandle\s+[0-9|a-f]+/fshandle FS_HANDLE/; print"
${DMAPI_QASUITE1_DIR}cmd/getall_disp $sid2

echo "*** destroy DMAPI sessions"
${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid1
${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid2

status=0
exit 
