Skip to content

Instantly share code, notes, and snippets.

@kevinbin
Created June 1, 2024 12:20
Show Gist options
  • Save kevinbin/bea1e30911034fab59c262fed23c5ccb to your computer and use it in GitHub Desktop.
Save kevinbin/bea1e30911034fab59c262fed23c5ccb to your computer and use it in GitHub Desktop.
scsi test
#!/bin/bash
persist_tool='mpathpersist'
register() {
local key=$1
local disk=$2
echo "register:$disk "
$persist_tool -o -I -S $key -d $disk
}
unregister() {
local key=$1
local disk=$2
echo "unregister: $disk "
$persist_tool -o -I -K $key -d $disk
}
reserve() {
local key=$1
local disk=$2
echo "reserve: $disk"
$persist_tool -o -R -T 5 -K $key -d $disk
}
preempt() {
local key=$1
local disk=$2
local oldkey=$3
echo "preempt: $disk"
$persist_tool -o -P -T 5 -K $key -S $oldkey -d $disk
}
get_reservation() {
local disk=$1
echo "get_reservation: $disk"
$persist_tool -i -r -d $disk
}
release() {
local key=$1
local disk=$2
echo "release: $disk"
$persist_tool -o -L -T 5 -K $key -d $disk
}
umount() {
local disk=$1
umount $disk
}
read_only() {
local disk=$1
local point=$2
mount -o ro $disk $point
}
get_regiest() {
local disk=$1
$persist_tool -i -k -d $disk
}
###############main program ############
master_disk=$2
rkey=$3
okey=''
if [[ $1 == 'register' ]]; then
register $rkey $master_disk
get_regiest $master_disk
fi
if [[ $1 == 'reserve' ]]; then
reserve $rkey $master_disk
get_reservation $master_disk
fi
if [[ $1 == 'promote' ]]; then
echo "promote"
# register $rkey $master_disk
# [ $? -ne 0 ] && exit
# unregister $rkey $master_disk
# [ $? -ne 0 ] && exit
okey=`get_reservation $master_disk|grep 'Key'|cut -d'=' -f2`
register $rkey $master_disk
[ $? -ne 0 ] && exit
get_regiest $master_disk
preempt $rkey $master_disk $okey
get_reservation $master_disk
read_only $master_disk /opt/iscsi_read
df -h
# release $rkey $master_disk
# umount $master_disk
# register 0x6841 $master_disk
# preempt 0x6841 $master_disk $okey
fi
if [[ $1 == 'recover' ]]; then
echo "recover"
register $rkey $master_disk
reserve $rkey $master_disk
get_reservation $master_disk
fi
if [[ $1 == 'get_key' ]]; then
get_regiest $master_disk
fi
if [[ $1 == 'get_r' ]]; then
get_reservation $master_disk
fi
if [[ $1 == 'clear' ]]; then
$persist_tool -o -C -K $rkey -d $master_disk
get_regiest $master_disk
get_reservation $master_disk
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment