[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 5/5] Scripts to create and delete xen-scsiback nodes in Linux target framework
On Wed, 2015-05-06 at 13:28 +0000, Olaf Hering wrote: > Just to make them public, not meant for merging: > The scripts used during development to create a bunch of SCSI devices in > dom0 using the Linux target framework. targetcli3 and rtslib3 is used. I'm not sure what this is all about, but is there anything end-user-ish which ought to be documented or put on the wiki or something? > > A patch is required for python-rtslib: > http://article.gmane.org/gmane.linux.scsi.target.devel/8146 > > Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> > --- > tools/misc/Makefile | 4 + > tools/misc/target-create-xen-scsiback.sh | 135 > +++++++++++++++++++++++++++++++ > tools/misc/target-delete-xen-scsiback.sh | 41 ++++++++++ > 3 files changed, 180 insertions(+) > > diff --git a/tools/misc/Makefile b/tools/misc/Makefile > index ccd36af..be101d8 100644 > --- a/tools/misc/Makefile > +++ b/tools/misc/Makefile > @@ -32,6 +32,8 @@ INSTALL_SBIN += $(INSTALL_SBIN-y) > > # Everything to be installed in a private bin/ > INSTALL_PRIVBIN += xenpvnetboot > +INSTALL_PRIVBIN += target-create-xen-scsiback.sh > +INSTALL_PRIVBIN += target-delete-xen-scsiback.sh > > # Everything to be installed > TARGETS_ALL := $(INSTALL_BIN) $(INSTALL_SBIN) $(INSTALL_PRIVBIN) > @@ -42,6 +44,8 @@ TARGETS_COPY += xen-ringwatch > TARGETS_COPY += xencons > TARGETS_COPY += xencov_split > TARGETS_COPY += xenpvnetboot > +TARGETS_COPY += target-create-xen-scsiback.sh > +TARGETS_COPY += target-delete-xen-scsiback.sh > > # Everything which needs to be built > TARGETS_BUILD := $(filter-out $(TARGETS_COPY),$(TARGETS_ALL)) > diff --git a/tools/misc/target-create-xen-scsiback.sh > b/tools/misc/target-create-xen-scsiback.sh > new file mode 100755 > index 0000000..96d4c39 > --- /dev/null > +++ b/tools/misc/target-create-xen-scsiback.sh > @@ -0,0 +1,135 @@ > +#!/usr/bin/env bash > +unset LANG > +unset ${!LC_*} > +set -x > +set -e > + > +modprobe --version > +targetcli --version > +udevadm --version > +blockdev --version > +parted --version > +sfdisk --version > +mkswap --version > + > +configfs=/sys/kernel/config > +target_path=$configfs/target > + > +num_luns=4 > +num_hosts=4 > + > +case "$1" in > + -p) > + backend="pvops" > + ;; > + -x) > + backend="xenlinux" > + ;; > + *) > + : "usage: $0 [-p|-x]" > + if grep -qw xenfs$ /proc/filesystems > + then > + backend="pvops" > + else > + backend="xenlinux" > + fi > + ;; > +esac > + > +get_wwn() { > + sed ' > + s@-@@g > + s@^\(.\{16\}\)\(.*\)@\1@ > + ' /proc/sys/kernel/random/uuid > +} > + > +if test ! -d "${target_path}" > +then > + modprobe -v configfs > + mount -vt configfs configfs $configfs > + modprobe -v target_core_mod > +fi > +if test "${backend}" = "pvops" > +then > + modprobe -v xen-scsiback > +fi > + > +host=0 > +while test $host -lt $num_hosts > +do > + host=$(( $host + 1 )) > + lun=0 > + loopback_wwn="naa.`get_wwn`" > + pvscsi_wwn="naa.`get_wwn`" > + targetcli /loopback create ${loopback_wwn} > + if test "${backend}" = "pvops" > + then > + targetcli /xen-pvscsi create ${pvscsi_wwn} > + fi > + while test $lun -lt $num_luns > + do > + : h $host l $lun > + f_file=/dev/shm/Fileio.${host}.${lun}.file > + f_uuid=/dev/shm/Fileio.${host}.${lun}.uuid > + f_link=/dev/shm/Fileio.${host}.${lun}.link > + fileio_name="fio_${host}.${lun}" > + pscsi_name="ps_${host}.${lun}" > + > + targetcli /backstores/fileio create name=${fileio_name} > "file_or_dev=${f_file}" size=$((1024*1024 * 8 )) sparse=true > + targetcli /loopback/${loopback_wwn}/luns create > /backstores/fileio/${fileio_name} $lun > + > + udevadm settle --timeout=4 > + > + vpd_uuid="`sed -n '/^T10 VPD Unit Serial > Number:/s@^[^:]\+:[[:blank:]]\+@@p' > /sys/kernel/config/target/core/fileio_*/${fileio_name}/wwn/vpd_unit_serial`" > + if test -z "${vpd_uuid}" > + then > + exit 1 > + fi > + echo "${vpd_uuid}" > "${f_uuid}" > + by_id="`echo ${vpd_uuid} | sed > 's@-@@g;s@^\(.\{25\}\)\(.*\)@scsi-36001405\1@'`" > + ln -sfvbn "/dev/disk/by-id/${by_id}" "${f_link}" > + > + f_major=$((`stat --dereference --format=0x%t "${f_link}"`)) > + f_minor=$((`stat --dereference --format=0x%T "${f_link}"`)) > + if test -z "${f_major}" || test -z "${f_minor}" > + then > + exit 1 > + fi > + f_alias=`ls -d > /sys/dev/block/${f_major}:${f_minor}/device/scsi_device/*:*:*:*` > + if test -z "${f_alias}" > + then > + exit 1 > + fi > + f_alias=${f_alias##*/} > + > + blockdev --rereadpt "${f_link}" > + udevadm settle --timeout=4 > + echo 1,12,S | sfdisk "${f_link}" > + udevadm settle --timeout=4 > + blockdev --rereadpt "${f_link}" > + udevadm settle --timeout=4 > + parted -s "${f_link}" unit s print > + > + d_link="`readlink \"${f_link}\"`" > + if test -n "${d_link}" > + then > + p_link="${d_link}-part1" > + ls -l "${p_link}" > + mkswap -L "swp_${fileio_name}" "${p_link}" > + udevadm settle --timeout=4 > + blockdev --rereadpt "${f_link}" > + udevadm settle --timeout=4 > + parted -s "${f_link}" unit s print > + fi > + > + targetcli /backstores/pscsi create "dev=${f_link}" > "${pscsi_name}" > + if test "${backend}" = "pvops" > + then > + targetcli /xen-pvscsi/${pvscsi_wwn}/tpg1/luns create > "/backstores/pscsi/${pscsi_name}" $lun > + targetcli /xen-pvscsi/${pvscsi_wwn}/tpg1 set parameter > alias=${f_alias%:*} > + fi > + > + lun=$(( $lun + 1 )) > + done > +done > + > diff --git a/tools/misc/target-delete-xen-scsiback.sh > b/tools/misc/target-delete-xen-scsiback.sh > new file mode 100755 > index 0000000..5b6dc54 > --- /dev/null > +++ b/tools/misc/target-delete-xen-scsiback.sh > @@ -0,0 +1,41 @@ > +#!/usr/bin/env bash > +unset LANG > +unset ${!LC_*} > +set -x > +set -e > + > +targetcli --version > + > +configfs=/sys/kernel/config > +target_path=$configfs/target > + > +cd "${target_path}" > +if cd xen-pvscsi > +then > + for wwn in `ls -d naa.*` > + do > + targetcli /xen-pvscsi delete $wwn > + done > +fi > +cd "${target_path}" > +cd core > +for name in `ls -d pscsi_*/*/wwn` > +do > + name=${name%/wwn} > + name=${name##*/} > + targetcli /backstores/pscsi delete $name > +done > +cd "${target_path}" > +cd loopback > +for wwn in `ls -d naa.*` > +do > + targetcli /loopback delete $wwn > +done > +cd "${target_path}" > +cd core > +for name in `ls -d fileio_*/*/wwn` > +do > + name=${name%/wwn} > + name=${name##*/} > + targetcli /backstores/fileio delete $name > +done > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |