xref: /illumos-gate/usr/src/test/zfs-tests/tests/functional/cli_root/zfs_remap/zfs_remap_obsolete_counts.ksh (revision b210e77709da8e42dfe621e10ccf4be504206058)
1#!/bin/ksh -p
2#
3# This file and its contents are supplied under the terms of the
4# Common Development and Distribution License ("CDDL"), version 1.0.
5# You may only use this file in accordance with the terms of version
6# 1.0 of the CDDL.
7#
8# A full copy of the text of the CDDL should have accompanied this
9# source.  A copy of the CDDL is also available via the Internet at
10# http://www.illumos.org/license/CDDL.
11#
12
13#
14# Copyright 2018, loli10K <ezomori.nozomu@gmail.com>. All rights reserved.
15#
16
17. $STF_SUITE/include/libtest.shlib
18. $STF_SUITE/tests/functional/removal/removal.kshlib
19
20#
21# DESCRIPTION:
22# 'zfs remap' depends on 'feature@obsolete_counts' being active
23#
24# STRATEGY:
25# 1. Prepare a pool where a top-level VDEV has been removed and with
26#    feature@obsolete_counts disabled
27# 2. Verify any 'zfs remap' command cannot be executed
28# 3. Verify the same commands complete successfully when
29#    feature@obsolete_counts is enabled
30#
31
32verify_runnable "both"
33
34function cleanup
35{
36	destroy_pool $TESTPOOL
37	rm -f $DISK1 $DISK2
38}
39
40log_assert "'zfs remap' depends on feature@obsolete_counts being active"
41log_onexit cleanup
42
43f="$TESTPOOL/fs"
44v="$TESTPOOL/vol"
45s="$TESTPOOL/fs@snap"
46c="$TESTPOOL/clone"
47
48DISK1="/var/tmp/zfs_remap-1"
49DISK2="/var/tmp/zfs_remap-2"
50
51# 1. Prepare a pool where a top-level VDEV has been removed with
52#    feature@obsolete_counts disabled
53log_must truncate -s $(($MINVDEVSIZE * 2)) $DISK1
54log_must zpool create -d -o feature@device_removal=enabled $TESTPOOL $DISK1
55log_must zfs create $f
56log_must zfs create -V 1M -s $v
57log_must zfs snap $s
58log_must zfs clone $s $c
59log_must truncate -s $(($MINVDEVSIZE * 2)) $DISK2
60log_must zpool add $TESTPOOL $DISK2
61log_must zpool remove $TESTPOOL $DISK1
62log_must wait_for_removal $TESTPOOL
63
64# 2. Verify any 'zfs remap' command cannot be executed
65log_mustnot zfs remap $f
66log_mustnot zfs remap $v
67log_mustnot zfs remap $c
68
69# 3. Verify the same commands complete successfully when
70#    feature@obsolete_counts is enabled
71log_must zpool set feature@obsolete_counts=enabled $TESTPOOL
72log_must zfs remap $f
73log_must zfs remap $v
74log_must zfs remap $c
75
76log_pass "'zfs remap' correctly depends on feature@obsolete_counts being active"
77