From patchwork Tue Apr 2 08:19:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 10881235 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D5C401800 for ; Tue, 2 Apr 2019 08:20:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C2C3F28832 for ; Tue, 2 Apr 2019 08:20:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B62F728837; Tue, 2 Apr 2019 08:20:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 91DB528832 for ; Tue, 2 Apr 2019 08:20:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729332AbfDBIUI (ORCPT ); Tue, 2 Apr 2019 04:20:08 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:38980 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726496AbfDBIUI (ORCPT ); Tue, 2 Apr 2019 04:20:08 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x328IqwP042537; Tue, 2 Apr 2019 08:20:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2018-07-02; bh=CfpIP3RHuiY4S0fegyUKw5Z0Wk14kK7GpSVn6yfAb1Q=; b=d7I9IoEsGPB7gWjYpTuaBx0FQQRKa+LW9Qlg3RYXgt10pmzDULbcV31IQAjw8Hj0QkLU 1iWQ+eGTIPCMfYn/pgsJqRmq6ezfBfucxyhsdLIoK+bSJHhyZRFbbnkmFIU20xmriHJp lb25l/AjGl512TqLjlw7aPZfzH/U4SvTMNwLLQGnsCGk558/ocOq4QSco8uMeMVbQyYf IFO1wygiPMymnBKQf7wxwgpSNZl9fCVRmo+1769GHyNZ41a1mNIzv7Ox02G9OUODfswT o+xHoYaW2KC70Odcet5BYSL1JUuFxt57ibtsm02gmPbnv2B95VbcLyuHSU77ZknyIQW5 Uw== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp2120.oracle.com with ESMTP id 2rj13q3ekh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Apr 2019 08:20:03 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id x328JvtY006049 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 2 Apr 2019 08:19:57 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x328JuWj032624; Tue, 2 Apr 2019 08:19:56 GMT Received: from tp.wifi.oracle.com (/192.188.170.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 02 Apr 2019 01:19:55 -0700 From: Anand Jain To: fstests@vger.kernel.org Cc: linux-btrfs@vger.kernel.org, dsterba@suse.cz, guaneryu@gmail.com Subject: [PATCH v2] fstests: btrfs: try use forget to unregister device Date: Tue, 2 Apr 2019 16:19:46 +0800 Message-Id: <20190402081946.24838-1-anand.jain@oracle.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <1552988980-25710-1-git-send-email-anand.jain@oracle.com> References: <1552988980-25710-1-git-send-email-anand.jain@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9214 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=13 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904020061 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some btrfs test cases use btrfs module-reload to unregister devices in the btrfs kernel. The problem with the module-reload approach is, if test system contains btrfs as rootfs, then you can't run these test cases. Patches [1] introduced btrfs forget feature which can unregister devices without the module-reload approach. [1] btrfs-progs: device scan: add new option to forget one or all scanned devices btrfs: introduce new ioctl to unregister a btrfs device And this patch makes relevant changes in the fstests to use this new feature, when available. Signed-off-by: Anand Jain Reviewed-by: David Sterba --- v2: Update change log. Rename _require_btrfs_forget_if_not_fs_loadable() to _require_btrfs_forget_or_module_loadable() Rename _btrfs_forget_if_not_fs_reload() to _btrfs_forget_or_module_reload() common/btrfs | 20 ++++++++++++++++++++ tests/btrfs/124 | 6 +++--- tests/btrfs/125 | 6 +++--- tests/btrfs/154 | 6 +++--- tests/btrfs/164 | 4 ++-- 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/common/btrfs b/common/btrfs index f6513c06f95f..19ac7cc4b18c 100644 --- a/common/btrfs +++ b/common/btrfs @@ -382,3 +382,23 @@ _scratch_btrfs_sectorsize() $BTRFS_UTIL_PROG inspect-internal dump-super $SCRATCH_DEV |\ grep sectorsize | awk '{print $2}' } + +_btrfs_supports_forget() +{ + $BTRFS_UTIL_PROG device scan --help | grep -wq forget && \ + $BTRFS_UTIL_PROG device scan --forget > /dev/null 2>&1 +} + +_require_btrfs_forget_or_module_loadable() +{ + _btrfs_supports_forget && return + + _require_loadable_fs_module "btrfs" +} + +_btrfs_forget_or_module_reload() +{ + _btrfs_supports_forget && return + + _reload_fs_module "btrfs" +} diff --git a/tests/btrfs/124 b/tests/btrfs/124 index a52c65f608ff..0686a3b5f991 100755 --- a/tests/btrfs/124 +++ b/tests/btrfs/124 @@ -51,7 +51,7 @@ _supported_fs btrfs _supported_os Linux _require_scratch_dev_pool 2 _test_unmount -_require_loadable_fs_module "btrfs" +_require_btrfs_forget_or_module_loadable _scratch_dev_pool_get 2 @@ -86,7 +86,7 @@ echo "clean btrfs ko" >> $seqres.full _scratch_unmount # un-scan the btrfs devices -_reload_fs_module "btrfs" +_btrfs_forget_or_module_reload echo >> $seqres.full echo "-----Write degraded mount fill upto $max_fs_sz bytes-----" >> $seqres.full @@ -125,7 +125,7 @@ echo echo "Mount degraded with the other dev" _scratch_unmount # un-scan the btrfs devices -_reload_fs_module "btrfs" +_btrfs_forget_or_module_reload _mount -o degraded $dev2 $SCRATCH_MNT >>$seqres.full 2>&1 _run_btrfs_util_prog filesystem show checkpoint3=`md5sum $SCRATCH_MNT/tf2` diff --git a/tests/btrfs/125 b/tests/btrfs/125 index 847fa62ad25f..e1edccddd7d4 100755 --- a/tests/btrfs/125 +++ b/tests/btrfs/125 @@ -50,7 +50,7 @@ _supported_fs btrfs _supported_os Linux _require_scratch_dev_pool 3 _test_unmount -_require_loadable_fs_module "btrfs" +_require_btrfs_forget_or_module_loadable _require_btrfs_fs_feature raid56 _scratch_dev_pool_get 3 @@ -103,7 +103,7 @@ echo "unmount" >> $seqres.full _scratch_unmount echo "clean btrfs ko" >> $seqres.full # un-scan the btrfs devices -_reload_fs_module "btrfs" +_btrfs_forget_or_module_reload _mount -o degraded,device=$dev2 $dev1 $SCRATCH_MNT >>$seqres.full 2>&1 dd if=/dev/zero of="$SCRATCH_MNT"/tf2 bs=$bs count=$count \ >>$seqres.full 2>&1 @@ -139,7 +139,7 @@ echo "Mount degraded but with other dev" _scratch_unmount # un-scan the btrfs devices -_reload_fs_module "btrfs" +_btrfs_forget_or_module_reload _mount -o degraded,device=${dev2} $dev3 $SCRATCH_MNT >>$seqres.full 2>&1 diff --git a/tests/btrfs/154 b/tests/btrfs/154 index cd6c688fb9fe..cbf65a42919d 100755 --- a/tests/btrfs/154 +++ b/tests/btrfs/154 @@ -36,7 +36,7 @@ rm -f $seqres.full _supported_fs btrfs _supported_os Linux _require_scratch_dev_pool 2 -_require_loadable_fs_module "btrfs" +_require_btrfs_forget_or_module_loadable _scratch_dev_pool_get 2 @@ -90,7 +90,7 @@ degrade_mount_write() echo "clean btrfs ko" >> $seqres.full # un-scan the btrfs devices - _reload_fs_module "btrfs" + _btrfs_forget_or_module_reload _mount -o degraded $DEV1 $SCRATCH_MNT >>$seqres.full 2>&1 cnt=$(( $COUNT/10 )) dd if=/dev/urandom of="$SCRATCH_MNT"/tf1 bs=$bs count=$cnt \ @@ -142,7 +142,7 @@ verify() echo "unmount" >> $seqres.full _scratch_unmount - _reload_fs_module "btrfs" + _btrfs_forget_or_module_reload _mount -o degraded $DEV2 $SCRATCH_MNT >>$seqres.full 2>&1 verify_checkpoint1=`md5sum $SCRATCH_MNT/tf1` verify_checkpoint2=`md5sum $SCRATCH_MNT/tf2` diff --git a/tests/btrfs/164 b/tests/btrfs/164 index 097191a0e493..e280f52e930a 100755 --- a/tests/btrfs/164 +++ b/tests/btrfs/164 @@ -36,7 +36,7 @@ rm -f $seqres.full # Modify as appropriate. _supported_fs btrfs _supported_os Linux -_require_loadable_fs_module "btrfs" +_require_btrfs_forget_or_module_loadable _require_scratch_dev_pool 2 _scratch_dev_pool_get 2 @@ -69,7 +69,7 @@ delete_seed() { _run_btrfs_util_prog device delete $dev_seed $SCRATCH_MNT _scratch_unmount - _reload_fs_module "btrfs" + _btrfs_forget_or_module_reload run_check _mount $dev_sprout $SCRATCH_MNT _run_btrfs_util_prog filesystem show -m $SCRATCH_MNT echo -- sprout --