################################################################
-# set -x
-#
+set -x
+
# Default flag values; RBD_CONCURRENT_ITER names are intended
# to be used in yaml scripts to pass in alternate values, e.g.:
# env:
NAMES_DIR=$(mktemp -d /tmp/image_names.XXXXXX)
SOURCE_DATA=$(mktemp /tmp/source_data.XXXXXX)
- [ -d /sys/bus/rbd ] || sudo modprobe rbd
-
# Use urandom to generate SOURCE_DATA
dd if=/dev/urandom of=${SOURCE_DATA} bs=2048 count=66 \
>/dev/null 2>&1
# List of rbd id's *not* created by this script
export INITIAL_RBD_IDS=$(ls /sys/bus/rbd/devices)
- sudo chown ubuntu /sys/bus/rbd/add /sys/bus/rbd/remove
-
# Set up some environment for normal teuthology test setup.
# This really should not be necessary but I found it was.
sync
rm -f "${SOURCE_DATA}"
[ -d "${NAMES_DIR}" ] && rmdir "${NAMES_DIR}"
- sudo chown root /sys/bus/rbd/add /sys/bus/rbd/remove
echo "Max concurrent rbd image count was $(get_max "${ID_COUNT_DIR}")"
rm -rf "${ID_COUNT_DIR}"
echo "Max rbd image id was $(get_max "${ID_MAX_DIR}")"
local image="$1"
local id
- rbd map "${image}" --user "${CEPH_ID}" ${SECRET_ARGS}
+ sudo rbd map "${image}" --user "${CEPH_ID}" ${SECRET_ARGS}
- udevadm settle
id=$(rbd_image_id "${image}")
echo "${id}"
}
[ $# -eq 1 ] || exit 99
local id="$1"
- rbd unmap "/dev/rbd${id}" > /dev/null 2>&1
- udevadm settle
+ sudo rbd unmap "/dev/rbd${id}" > /dev/null 2>&1
}
function rbd_destroy_image() {
PROGNAME=$(basename $0)
-[ $(id -u) -eq 0 ] && SUSER=true
-
ORIGINAL=original-$$
SNAP1=snap1-$$
CLONE1=clone1-$$
TEMP=$(mktemp -d /tmp/rbd_image_read.XXXXX)
mkdir -p $(out_data_dir)
- if [ "${LOCAL_FILES}" != true -a "${SUSER}" != true ]; then
- [ -d /sys/bus/rbd ] || sudo modprobe rbd
- while [ ! -f /sys/bus/rbd/add ]; do
- sleep 1
- done
- # allow ubuntu user to map/unmap rbd devices
- sudo chown ubuntu /sys/bus/rbd/add
- sudo chown ubuntu /sys/bus/rbd/remove
- fi
# create and fill the original image with some data
create_image "${ORIGINAL}"
map_image "${ORIGINAL}"
destroy_image_snap "${ORIGINAL}" "${SNAP1}" || true
unmap_image "${ORIGINAL}" || true
destroy_image "${ORIGINAL}" || true
- if [ "${LOCAL_FILES}" != true -a "${SUSER}" != true ]; then
- sudo chown root /sys/bus/rbd/add
- sudo chown root /sys/bus/rbd/remove
- fi
rm -rf $(out_data_dir)
rmdir "${TEMP}"
return
fi
- rbd map "${image_name}"
- udevadm settle
- # allow ubuntu user to write to the device
- [ "${SUSER}" = true ] ||
- sudo chown ubuntu $(image_dev_path "${image_name}")
- true # Don't let the suser test spoil our return value
+ sudo rbd map "${image_name}"
}
function unmap_image() {
image_path=$(image_dev_path "${image_name}")
if [ -e "${image_path}" ]; then
- [ "${SUSER}" = true ] || sudo chown root "${image_path}"
- udevadm settle
- rbd unmap "${image_path}"
- udevadm settle
+ sudo rbd unmap "${image_path}"
fi
}
}
function clean_up {
- udevadm settle
[ -e /dev/rbd/rbd/testimg1@snap1 ] &&
- rbd unmap /dev/rbd/rbd/testimg1@snap1 || true
+ sudo rbd unmap /dev/rbd/rbd/testimg1@snap1
if [ -e /dev/rbd/rbd/testimg1 ]; then
- rbd unmap /dev/rbd/rbd/testimg1 || true
+ sudo rbd unmap /dev/rbd/rbd/testimg1
rbd snap purge testimg1 || true
fi
- udevadm settle
- sudo chown root /sys/bus/rbd/add /sys/bus/rbd/remove
rbd ls | grep testimg1 > /dev/null && rbd rm testimg1 || true
sudo rm -f $TMP_FILES
}
-[ -d /sys/bus/rbd ] || sudo modprobe rbd
-
clean_up
trap clean_up INT TERM EXIT
-# allow ubuntu user to map/unmap rbd devices
-sudo chown ubuntu /sys/bus/rbd/add /sys/bus/rbd/remove
-
# create an image
dd if=/bin/sh of=/tmp/img1 bs=1k count=1 seek=10
dd if=/bin/dd of=/tmp/img1 bs=1k count=10 seek=100
# import
rbd import /tmp/img1 testimg1
-rbd map testimg1 --user $CEPH_ID $SECRET_ARGS
-# wait for udev to catch up
-udevadm settle
+sudo rbd map testimg1 --user $CEPH_ID $SECRET_ARGS
DEV_ID1=$(get_device_dir rbd testimg1 -)
echo "dev_id1 = $DEV_ID1"
# snapshot
rbd snap create testimg1 --snap=snap1
-rbd map --snap=snap1 testimg1 --user $CEPH_ID $SECRET_ARGS
-# wait for udev to catch up
-udevadm settle
+sudo rbd map --snap=snap1 testimg1 --user $CEPH_ID $SECRET_ARGS
DEV_ID2=$(get_device_dir rbd testimg1 snap1)
cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
#!/bin/sh -ex
-[ -d /sys/bus/rbd ] || sudo modprobe rbd
-
mb=100000
rbd create foo --size $mb