70 lines
1.5 KiB
Bash
70 lines
1.5 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
set -e
|
||
|
|
||
|
testdir=$(readlink -f $(dirname $0))
|
||
|
rootdir=$(readlink -f $testdir/../..)
|
||
|
rpc_py=$rootdir/scripts/rpc.py
|
||
|
|
||
|
source $rootdir/test/common/autotest_common.sh
|
||
|
|
||
|
mount_dir=$(mktemp -d)
|
||
|
device=$1
|
||
|
uuid=$2
|
||
|
|
||
|
restore_kill() {
|
||
|
if mount | grep $mount_dir; then
|
||
|
umount $mount_dir
|
||
|
fi
|
||
|
rm -rf $mount_dir
|
||
|
rm -f $testdir/testfile.md5
|
||
|
|
||
|
$rpc_py delete_ftl_bdev -b nvme0
|
||
|
killprocess $svcpid
|
||
|
rmmod nbd || true
|
||
|
}
|
||
|
|
||
|
trap "restore_kill; exit 1" SIGINT SIGTERM EXIT
|
||
|
|
||
|
$rootdir/test/app/bdev_svc/bdev_svc --max-delay=0 & svcpid=$!
|
||
|
# Wait until bdev_svc starts
|
||
|
waitforlisten $svcpid
|
||
|
|
||
|
if [ -n "$uuid" ]; then
|
||
|
$rpc_py construct_ftl_bdev -b nvme0 -a $device -l 0-3 -u $uuid
|
||
|
else
|
||
|
uuid=$($rpc_py construct_ftl_bdev -b nvme0 -a $device -l 0-3 | jq -r '.uuid')
|
||
|
fi
|
||
|
|
||
|
# Load the nbd driver
|
||
|
modprobe nbd
|
||
|
$rpc_py start_nbd_disk nvme0 /dev/nbd0
|
||
|
waitfornbd nbd0
|
||
|
|
||
|
# Prepare the disk by creating ext4 fs and putting a file on it
|
||
|
mkfs.ext4 -F /dev/nbd0
|
||
|
mount /dev/nbd0 $mount_dir
|
||
|
dd if=/dev/urandom of=$mount_dir/testfile bs=4K count=256K
|
||
|
sync
|
||
|
mount -o remount /dev/nbd0 $mount_dir
|
||
|
md5sum $mount_dir/testfile > $testdir/testfile.md5
|
||
|
|
||
|
# Kill bdev service and start it again
|
||
|
umount $mount_dir
|
||
|
killprocess $svcpid
|
||
|
|
||
|
$rootdir/test/app/bdev_svc/bdev_svc --max-delay=0 & svcpid=$!
|
||
|
# Wait until bdev_svc starts
|
||
|
waitforlisten $svcpid
|
||
|
$rpc_py construct_ftl_bdev -b nvme0 -a $device -l 0-3 -u $uuid
|
||
|
|
||
|
$rpc_py start_nbd_disk nvme0 /dev/nbd0
|
||
|
|
||
|
mount /dev/nbd0 $mount_dir
|
||
|
md5sum -c $testdir/testfile.md5
|
||
|
|
||
|
report_test_completion occsd_restore
|
||
|
|
||
|
trap - SIGINT SIGTERM EXIT
|
||
|
restore_kill
|