#!/bin/bash
# SPDX-License-Identifier: GPL-3.0+
# Copyright (C) 2024 Red Hat, Inc.
#

. tests/dm/rc

DESCRIPTION="dm-dust general functionality test"
QUICK=1

requires() {
        _have_driver dm_dust
}


test_device() {
	local sz bsz
	echo "Running ${TEST_NAME}"

	sz=$(blockdev --getsz "$TEST_DEV")
	bsz=$(blockdev --getbsz "$TEST_DEV")
	dmsetup create dust1 --table "0 $sz dust $TEST_DEV 0 $bsz"
	dmsetup message dust1 0 addbadblock 60
	dmsetup message dust1 0 addbadblock 67
	dmsetup message dust1 0 addbadblock 72
	dmsetup message dust1 0 countbadblocks
	dmsetup message dust1 0 listbadblocks
	dmsetup message dust1 0 clearbadblocks
	dmsetup message dust1 0 countbadblocks
	dmsetup message dust1 0 addbadblock 60
	dmsetup message dust1 0 addbadblock 67
	dmsetup message dust1 0 addbadblock 72
	dmsetup message dust1 0 countbadblocks
	dmsetup message dust1 0 enable
	dd if=/dev/zero of=/dev/mapper/dust1 bs="$bsz" count=128 oflag=direct \
	   >"$FULL" 2>&1 || return $?
	sync
	dmsetup message dust1 0 countbadblocks
	sync
	dmsetup remove --retry dust1 |& grep -v "Device or resource busy"

	echo "Test complete"
}
