root / xseg / tools / helpers.sh @ 7ce25cf6
History | View | Annotate | Download (2.3 kB)
1 |
#!/bin/bash |
---|---|
2 |
# |
3 |
# Helper functions for xseg testing and setup |
4 |
|
5 |
function usage { |
6 |
echo Usage: "`basename $0` $1" |
7 |
exit 1 |
8 |
} |
9 |
|
10 |
function pretty_print { |
11 |
echo "=======================" |
12 |
echo "$1" |
13 |
echo "=======================" |
14 |
} |
15 |
|
16 |
function fail { |
17 |
echo "${1}" |
18 |
exit 1 |
19 |
} |
20 |
|
21 |
function parse_config { |
22 |
[ -e ~/.xsegrc ] && source ~/.xsegrc |
23 |
|
24 |
[ -n "${XSEG_HOME}" ] || XSEG_HOME="/root/archip/xseg/" |
25 |
[ -n "${MODULES_DIR}" ] || MODULES_DIR="${XSEG_HOME}/sys/" |
26 |
[ -n "${SPEC}" ] || SPEC="segdev:xsegbd:128:8192:64:1024:12" |
27 |
[ -n "${REQS}" ] || REQS=128 |
28 |
[ -n "${PORTS}" ] || PORTS=128 |
29 |
[ -n "${FILED_PORT}" ] || FILED_PORT=0 |
30 |
[ -n "${IMAGES}" ] || IMAGES="/srv/archip/images/" |
31 |
[ -n "${BLOCKD_LOGS}" ] || BLOCKD_LOGS="/root/logs/" |
32 |
[ -n "${DEVICE_PREFIX}" ] || DEVICE_PREFIX="/dev/xsegbd" |
33 |
[ -n "${XSEGBD_SYSFS}" ] || XSEGBD_SYSFS="/sys/bus/xsegbd" |
34 |
[ -n "${CHRDEV_NAME}" ] || CHRDEV_NAME="/dev/segdev" |
35 |
[ -n "${CHRDEV_MAJOR}" ] || CHRDEV_MAJOR=60 |
36 |
[ -n "${NR_OPS}" ] || NR_OPS=16 |
37 |
} |
38 |
|
39 |
function unload_module { |
40 |
rmmod "$1" |
41 |
} |
42 |
|
43 |
function unload_all { |
44 |
unload_module "xsegbd" |
45 |
rm "${CHRDEV_NAME}" |
46 |
unload_module "xseg_segdev" |
47 |
unload_module "segdev" |
48 |
unload_module "xseg" |
49 |
} |
50 |
|
51 |
function load_module { |
52 |
(lsmod | grep "$1" > /dev/null) || insmod "${MODULES_DIR}$1.ko" "$2" || exit 1 |
53 |
} |
54 |
|
55 |
function mk_chardev { |
56 |
ls "${CHRDEV_NAME}" &> /dev/null || \ |
57 |
mknod "${CHRDEV_NAME}" c "${CHRDEV_MAJOR}" 0 || exit 1 |
58 |
} |
59 |
|
60 |
function load_all { |
61 |
load_module "xseg" |
62 |
load_module "segdev" |
63 |
load_module "xseg_segdev" |
64 |
mk_chardev |
65 |
"${XSEG_HOME}/peers/user/xseg" "${SPEC}" create |
66 |
load_module "xsegbd" "spec=$SPEC" |
67 |
} |
68 |
|
69 |
# spawn_blcokd - Spawn a block instance |
70 |
# |
71 |
# @param $1 target/volume name |
72 |
# @param $2 xseg port |
73 |
function spawn_blockd { |
74 |
"${XSEG_HOME}peers/user/blockd" "$1" -p "$2" -g "$SPEC" -n ${NR_OPS} &> "${BLOCKD_LOGS}/$1" || fail "blockd" |
75 |
} |
76 |
|
77 |
function spawn_filed { |
78 |
"${XSEG_HOME}peers/user/filed" "$1" -p "$2" -g "${SPEC}" -n ${NR_OPS} &> "${BLOCKD_LOGS}/filed-${HOSTNAME}" & |
79 |
} |
80 |
|
81 |
# map_volume - Map a volume to an xsegbd device |
82 |
# |
83 |
# @param $1 target/volume name |
84 |
# @param $2 src port |
85 |
# @param $3 dst port |
86 |
function map_volume { |
87 |
echo "$1 $2:$3:${REQS}" > "${XSEGBD_SYSFS}add" || exit 1 |
88 |
} |
89 |
|
90 |
# unmap_device - Unmap an xsegbd device/volume |
91 |
# |
92 |
# @param $1 xsegbd device id |
93 |
function unmap_device { |
94 |
echo "$1" > "${XSEGBD_SYSFS}remove" || exit 1 |
95 |
} |