This commit is contained in:
committed by
Git OBS Bridge
parent
241ee9df04
commit
d7002a96b9
180
block-iscsi
180
block-iscsi
@@ -1,90 +1,90 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage: block-iscsi [add tgtname | remove dev]
|
||||
#
|
||||
# This assumes you're running a correctly configured
|
||||
# iscsi target (server) at the other end!
|
||||
# Note that we assume that the passwords for discovery (if needed)
|
||||
# are in /etc/iscsid.conf
|
||||
# and the node session passwords (if required) in the
|
||||
# open-iscsi database below /var/lib/open-iscsi/node.db
|
||||
#
|
||||
# (c) Kurt Garloff <kurt@garloff.de>, 2006-09-04, GNU GPL
|
||||
|
||||
dir=$(dirname "$0")
|
||||
. "$dir/block-common.sh"
|
||||
#command=$1
|
||||
|
||||
#echo "DBG:xen/scripts/block-iscsi $1 $2 XENBUS_PATH=$XENBUS_PATH $par $node"
|
||||
|
||||
#write_dev()
|
||||
#{
|
||||
# echo "$1"
|
||||
#}
|
||||
|
||||
find_sdev()
|
||||
{
|
||||
unset dev
|
||||
for session in /sys/class/iscsi_session/session*; do
|
||||
if test $1 = `cat $session/targetname`; then
|
||||
dev=`readlink $session/device/target*/*:0:*/block*`
|
||||
dev=${dev##*/}
|
||||
return
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
find_sdev_rev()
|
||||
{
|
||||
unset tgt
|
||||
for session in /sys/class/iscsi_session/session*; do
|
||||
dev=`readlink $session/device/target*/*:0:*/block*`
|
||||
dev=${dev##*/}
|
||||
if test $dev = $1; then
|
||||
tgt=`cat $session/targetname`
|
||||
return
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
case "$command" in
|
||||
add)
|
||||
# load modules and start iscsid
|
||||
/etc/init.d/open-iscsi status >/dev/null 2>&1 ||
|
||||
{ /etc/init.d/open-iscsi start >/dev/null 2>&1; sleep 1; }
|
||||
# list of targets on node
|
||||
par=`xenstore-read $XENBUS_PATH/params` || true
|
||||
TGTID=$par; TGTID=${TGTID//@/:}
|
||||
while read rec port uuid; do
|
||||
if test $uuid = $TGTID; then
|
||||
rec=${rec%]}; rec=${rec#[}
|
||||
find_sdev $TGTID
|
||||
if test -z "$dev"; then
|
||||
iscsiadm -m node -r $rec -l || exit 2
|
||||
usleep 100000
|
||||
find_sdev $TGTID
|
||||
fi
|
||||
xenstore-write $XENBUS_PATH/node /dev/$dev
|
||||
write_dev /dev/$dev
|
||||
exit 0
|
||||
fi
|
||||
done < <(iscsiadm -m node)
|
||||
exit 1
|
||||
;;
|
||||
remove)
|
||||
node=`xenstore-read $XENBUS_PATH/node` || true
|
||||
dev=$node; dev=${dev#/dev/}
|
||||
find_sdev_rev $dev
|
||||
#echo $tgt
|
||||
if test -x /sbin/blockdev -a -n "$node"; then blockdev --flushbufs $node; fi
|
||||
test -z "$tgt" && exit 2
|
||||
while read rec port uuid; do
|
||||
if test $uuid = $tgt; then
|
||||
rec=${rec%]}; rec=${rec#[}
|
||||
iscsiadm -m node -r $rec -u
|
||||
exit 0
|
||||
fi
|
||||
done < <(iscsiadm -m node)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
#!/bin/bash
|
||||
|
||||
# Usage: block-iscsi [add tgtname | remove dev]
|
||||
#
|
||||
# This assumes you're running a correctly configured
|
||||
# iscsi target (server) at the other end!
|
||||
# Note that we assume that the passwords for discovery (if needed)
|
||||
# are in /etc/iscsid.conf
|
||||
# and the node session passwords (if required) in the
|
||||
# open-iscsi database below /var/lib/open-iscsi/node.db
|
||||
#
|
||||
# (c) Kurt Garloff <kurt@garloff.de>, 2006-09-04, GNU GPL
|
||||
|
||||
dir=$(dirname "$0")
|
||||
. "$dir/block-common.sh"
|
||||
#command=$1
|
||||
|
||||
#echo "DBG:xen/scripts/block-iscsi $1 $2 XENBUS_PATH=$XENBUS_PATH $par $node"
|
||||
|
||||
#write_dev()
|
||||
#{
|
||||
# echo "$1"
|
||||
#}
|
||||
|
||||
find_sdev()
|
||||
{
|
||||
unset dev
|
||||
for session in /sys/class/iscsi_session/session*; do
|
||||
if test $1 = `cat $session/targetname`; then
|
||||
dev=`readlink $session/device/target*/*:0:*/block*`
|
||||
dev=${dev##*/}
|
||||
return
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
find_sdev_rev()
|
||||
{
|
||||
unset tgt
|
||||
for session in /sys/class/iscsi_session/session*; do
|
||||
dev=`readlink $session/device/target*/*:0:*/block*`
|
||||
dev=${dev##*/}
|
||||
if test $dev = $1; then
|
||||
tgt=`cat $session/targetname`
|
||||
return
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
case "$command" in
|
||||
add)
|
||||
# load modules and start iscsid
|
||||
/etc/init.d/open-iscsi status >/dev/null 2>&1 ||
|
||||
{ /etc/init.d/open-iscsi start >/dev/null 2>&1; sleep 1; }
|
||||
# list of targets on node
|
||||
par=`xenstore-read $XENBUS_PATH/params` || true
|
||||
TGTID=$par; TGTID=${TGTID//@/:}
|
||||
while read rec port uuid; do
|
||||
if test $uuid = $TGTID; then
|
||||
rec=${rec%]}; rec=${rec#[}
|
||||
find_sdev $TGTID
|
||||
if test -z "$dev"; then
|
||||
iscsiadm -m node -r $rec -l || exit 2
|
||||
usleep 100000
|
||||
find_sdev $TGTID
|
||||
fi
|
||||
xenstore-write $XENBUS_PATH/node /dev/$dev
|
||||
write_dev /dev/$dev
|
||||
exit 0
|
||||
fi
|
||||
done < <(iscsiadm -m node)
|
||||
exit 1
|
||||
;;
|
||||
remove)
|
||||
node=`xenstore-read $XENBUS_PATH/node` || true
|
||||
dev=$node; dev=${dev#/dev/}
|
||||
find_sdev_rev $dev
|
||||
#echo $tgt
|
||||
if test -x /sbin/blockdev -a -n "$node"; then blockdev --flushbufs $node; fi
|
||||
test -z "$tgt" && exit 2
|
||||
while read rec port uuid; do
|
||||
if test $uuid = $tgt; then
|
||||
rec=${rec%]}; rec=${rec#[}
|
||||
iscsiadm -m node -r $rec -u
|
||||
exit 0
|
||||
fi
|
||||
done < <(iscsiadm -m node)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
Reference in New Issue
Block a user