#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2017 Oracle. All Rights Reserved. # # FS QA Test 151 # # Test if it's losing data chunk's raid profile after 'btrfs device # remove'. # # The fix is # Btrfs: avoid losing data raid profile when deleting a device # seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { cd / rm -f $tmp.* } # get standard environment, filters and checks . ./common/rc . ./common/filter # remove previous $seqres.full before test rm -f $seqres.full # real QA test starts here # Modify as appropriate. _supported_fs btrfs _supported_os Linux _require_scratch _require_scratch_dev_pool 3 _require_btrfs_dev_del_by_devid # We need exactly 3 disks to form a fixed stripe layout for this test. _scratch_dev_pool_get 3 # create raid1 for data _scratch_pool_mkfs "-d raid1 -b 1G" >> $seqres.full 2>&1 # we need an empty data chunk, so nospace_cache is required. _scratch_mount -onospace_cache # if data chunk is empty, 'btrfs device remove' can change raid1 to # single. $BTRFS_UTIL_PROG device delete 2 $SCRATCH_MNT >> $seqres.full 2>&1 # save btrfs filesystem df output for debug purpose $BTRFS_UTIL_PROG filesystem df $SCRATCH_MNT 2>&1 | \ tee -a $seqres.full | $AWK_PROG -F ':' '/Data,/ {print $1}' _scratch_dev_pool_put # success, all done status=0 exit