Commit 0c7aeea9 authored by Tomasz Zawadzki's avatar Tomasz Zawadzki
Browse files

test/mkfs: provide common function to create filesystem



There are tests which create a filesystem on a device.
Each one could use a timeout and retries for each mkfs.
Otherwise following error could appear due to not test
related system activities:
'mkfs.xfs: cannot open /dev/sdb1: Device or resource busy'

References #1141

Signed-off-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I7307b085ada42200995d8bd2fcfd0469ee60a732
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1178


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarKarol Latecki <karol.latecki@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
parent c7325e3f
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -540,6 +540,29 @@ function waitforbdev() {
	return 1
}

function make_filesystem() {
	local fstype=$1
	local dev_name=$2
	local i=0
	local force

	if [ $fstype = ext4 ]; then
		force=-F
	else
		force=-f
	fi

	while ! mkfs.${fstype} $force ${dev_name}; do
		if [ $i -ge 15 ]; then
			return 1
		fi
		i=$((i+1))
		sleep 1
	done

	return 0
}

function killprocess() {
	# $1 = process pid
	if [ -z "$1" ]; then
+1 −1
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ waitfornbd nbd0
$rpc_py save_config > $testdir/config/ftl.json

# Prepare the disk by creating ext4 fs and putting a file on it
mkfs.ext4 -F /dev/nbd0
make_filesystem ext4 /dev/nbd0
mount /dev/nbd0 $mount_dir
dd if=/dev/urandom of=$mount_dir/testfile bs=4K count=256K
sync
+4 −4
Original line number Diff line number Diff line
@@ -51,8 +51,8 @@ $rpc_py bdev_error_inject_error EE_Malloc0 'all' 'failure' -n 1000
dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

set +e
waitforfile /dev/$dev
if mkfs.ext4 -F /dev/$dev; then
waitforfile /dev/${dev}
if make_filesystem ext4 /dev/${dev}; then
	echo "mkfs successful - expected failure"
	iscsicleanup
	killprocess $pid
@@ -84,9 +84,9 @@ waitforiscsidevices 1
devs=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

for dev in $devs; do
	mkfs.ext4 -F /dev/$dev
	make_filesystem ext4 /dev/${dev}
	mkdir -p /mnt/${dev}dir
	mount -o sync /dev/$dev /mnt/${dev}dir
	mount -o sync /dev/${dev} /mnt/${dev}dir

	rsync -qav --exclude=".git" --exclude="*.o" $rootdir/ /mnt/${dev}dir/spdk

+1 −5
Original line number Diff line number Diff line
@@ -78,11 +78,7 @@ sleep 1
function filesystem_test {
	fstype=$1

	if [ "$fstype" == "ext4" ]; then
		mkfs.${fstype} -F /dev/${dev}1
	else
		mkfs.${fstype} -f /dev/${dev}1
	fi
	make_filesystem ${fstype} /dev/${dev}1
	mount /dev/${dev}1 /mnt/device
	if [ $RUN_NIGHTLY -eq 1 ]; then
		fio -filename=/mnt/device/test -direct=1 -iodepth 64 -thread=1 -invalidate=1 -rw=randwrite -ioengine=libaio -bs=4k \
+1 −12
Original line number Diff line number Diff line
@@ -16,18 +16,7 @@ function nvmf_filesystem_create {
	fstype=$1
	nvme_name=$2

	if [ $fstype = ext4 ]; then
		force=-F
	else
		force=-f
	fi

	local i=0
	while ! mkfs.${fstype} $force /dev/${nvme_name}p1; do
		[ $i -lt 15 ] || break
		i=$((i+1))
		sleep 1
	done
	make_filesystem ${fstype} /dev/${nvme_name}p1

	mount /dev/${nvme_name}p1 /mnt/device
	touch /mnt/device/aaa