for file in ${files}; do
[ -f "${file}" ] && rm -f "${file}" done
}
_show_result()
{ if [ "$UBLK_TEST_SHOW_RESULT" -ne 0 ]; then if [ "$2" -eq 0 ]; then echo"$1 : [PASS]" elif [ "$2" -eq 4 ]; then echo"$1 : [SKIP]" else echo"$1 : [FAIL]" fi fi if [ "$2" -ne 0 ]; then
_remove_files
exit "$2" fi
return 0
}
# don't call from sub-shell, otherwise can't exit
_check_add_dev()
{
local tid=$1
local code=$2
if [ "${code}" -ne 0 ]; then
_show_result "${tid}""${code}" fi
}
_cleanup_test() { "${UBLK_PROG}"del -a
_remove_files
}
_have_feature()
{ if $UBLK_PROG "features" | grep "$1" > /dev/null 2>&1; then
return 0 fi
return 1
}
_create_ublk_dev() {
local dev_id;
local cmd=$1
shift 1
if [ ! -c /dev/ublk-control ]; then
return ${UBLK_SKIP_CODE} fi ifecho"$@" | grep -q "\-z"; then if ! _have_feature "ZERO_COPY"; then
return ${UBLK_SKIP_CODE} fi fi
if ! dev_id=$("${UBLK_PROG}""$cmd""$@" | grep "dev id" | awk -F '[ :]''{print $3}'); then echo"fail to add ublk dev $*"
return 255 fi
udevadm settle
if [[ "$dev_id" =~ ^[0-9]+$ ]]; then echo"${dev_id}" else
return 255 fi
}
_add_ublk_dev() {
_create_ublk_dev "add""$@"
}
_recover_ublk_dev() {
local dev_id
local state
dev_id=$(_create_ublk_dev "recover""$@") for ((j=0;j<20;j++)); do
state=$(_get_ublk_dev_state "${dev_id}")
[ "$state" == "LIVE" ] && break
sleep 1 done echo"$state"
}
# quiesce device and return ublk device state
__ublk_quiesce_dev()
{
local dev_id=$1
local exp_state=$2
local state
if ! ${UBLK_PROG} quiesce -n "${dev_id}"; then
state=$(_get_ublk_dev_state "${dev_id}")
return "$state" fi
for ((j=0;j<50;j++)); do
state=$(_get_ublk_dev_state "${dev_id}")
[ "$state" == "$exp_state" ] && break
sleep 1 done echo"$state"
}
# kill the ublk daemon and return ublk device state
__ublk_kill_daemon()
{
local dev_id=$1
local exp_state=$2
local daemon_pid
local state
if [ "$action" == "kill_daemon" ]; then
state=$(__ublk_kill_daemon "${dev_id}""QUIESCED") elif [ "$action" == "quiesce_dev" ]; then
state=$(__ublk_quiesce_dev "${dev_id}""QUIESCED") fi if [ "$state" != "QUIESCED" ]; then echo"device isn't quiesced($state) after $action"
return 255 fi
state=$(_recover_ublk_dev -n "$dev_id""$@") if [ "$state" != "LIVE" ]; then echo"faile to recover to LIVE($state)"
return 255 fi
if ! __remove_ublk_dev_return "${dev_id}"; then echo"delete dev ${dev_id} failed"
return 255 fi
wait
}
_ublk_test_top_dir()
{
cd "$(dirname "$0")" && pwd
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.