From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C616FC4161D for ; Thu, 11 Oct 2018 15:04:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7EC612075C for ; Thu, 11 Oct 2018 15:04:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7EC612075C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-btrfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728164AbeJKWbt (ORCPT ); Thu, 11 Oct 2018 18:31:49 -0400 Received: from mx2.suse.de ([195.135.220.15]:50072 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728122AbeJKWbs (ORCPT ); Thu, 11 Oct 2018 18:31:48 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 6FE26B0C4 for ; Thu, 11 Oct 2018 15:04:09 +0000 (UTC) From: Nikolay Borisov To: linux-btrfs@vger.kernel.org Cc: Nikolay Borisov Subject: [PATCH 5/8] btrfs-progs: tests: Add tests for changing fsid feature Date: Thu, 11 Oct 2018 18:04:01 +0300 Message-Id: <1539270244-27076-6-git-send-email-nborisov@suse.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1539270244-27076-1-git-send-email-nborisov@suse.com> References: <1539270244-27076-1-git-send-email-nborisov@suse.com> Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Add a bunch of tests exercising the new btrfstune functionality. In particular check that various restrictions are implemented correctly, test that btrfs-image works as expected and also test the output of btrfs inspect-internal dump-super is correct. Signed-off-by: Nikolay Borisov --- tests/misc-tests/033-metadata-uuid/disk1.raw.xz | Bin 0 -> 78336 bytes tests/misc-tests/033-metadata-uuid/disk2.raw.xz | Bin 0 -> 77664 bytes tests/misc-tests/033-metadata-uuid/disk3.raw.xz | Bin 0 -> 78328 bytes tests/misc-tests/033-metadata-uuid/disk4.raw.xz | Bin 0 -> 77592 bytes tests/misc-tests/033-metadata-uuid/disk5.raw.xz | Bin 0 -> 78348 bytes tests/misc-tests/033-metadata-uuid/disk6.raw.xz | Bin 0 -> 77552 bytes tests/misc-tests/033-metadata-uuid/test.sh | 225 ++++++++++++++++++++++++ 7 files changed, 225 insertions(+) create mode 100644 tests/misc-tests/033-metadata-uuid/disk1.raw.xz create mode 100644 tests/misc-tests/033-metadata-uuid/disk2.raw.xz create mode 100644 tests/misc-tests/033-metadata-uuid/disk3.raw.xz create mode 100644 tests/misc-tests/033-metadata-uuid/disk4.raw.xz create mode 100644 tests/misc-tests/033-metadata-uuid/disk5.raw.xz create mode 100644 tests/misc-tests/033-metadata-uuid/disk6.raw.xz create mode 100755 tests/misc-tests/033-metadata-uuid/test.sh diff --git a/tests/misc-tests/033-metadata-uuid/disk1.raw.xz b/tests/misc-tests/033-metadata-uuid/disk1.raw.xz new file mode 100644 index 0000000000000000000000000000000000000000..24f47d2b07553b394f273df8794f503935ab658e GIT binary patch literal 78336 zcmeI5i8s{y|Ho&t8pWSE$2S({;!7V6%}2-%k*5y~F9w#gFNDqEIh zUovg7Mr0i$l$0eg-|soUd(QoxbHBgejneI&^YRbO@jB1<>-~H@->>)kv#jKSwLl=~ z$2yA+Z9wcqZbKjtoKLZ28cl>==okXwuuP++mD04;bhcbjIbn1^N_;HsGSlMph@k(A zJq`PRM(W=6X$c9@-;>7H8pqe*5;EkvP!i+I`fGK+Gv+itRWXA9?0(=y+>)pTg0x2^tCX%XKM*pK&%1NTfece$X=> zk{2gUlX;WyQ~8s-VtjbqWvZ<)wu*W&7dJ9$$*^&;>1E#MC1WY)$AXqSP>Zij4lGEV zW>)oUm9!fuR()6hK<4;u4mDj{RK#X>8fWx^qZ@94XRrRH1X&sL>hQq# z%qySCK6%4+suZu*PPJ_-EN@?3ZSakyQYdvp1|Nb=_Z{aW&?00{#m4oA&EDCSOK=+V zoDLx#{v4B(ifnxE@PfmL8CjT#YF0~PG`r)(cpO_+MHmyE$naOleu~^>q+Mfe>$UZ$ zU4&AiM1+4izn5T(KpV$+=A`vpflUwdvrQ6lDuFza1sH2om9olsutr+i+?|Q;z=Y)H z>v5yPy9uKydad~0iOlISOz!R~t+qT-`$1(to&<$!8%jU!;b$SpTQ|?Rv^y*gTR9*8 zC}Oc`(eUzAFBk2_hhL0;3T5v#w078xTK1O8K_bsQV845*1J#R;-!A9KwbUguS;*o! ztzbK+M@Z{h8Yw(imfo+o>E_&!#fuX5u?l8+D|}d@a>E?$M00_d_uHHA8dMCL8ufPO zJ?ytJrTevx>4Lqam@K`yY529f13p?0L7 z6ytowDLOPBc9FMURVF9EH^z+^m`2uM6S`hIX^_3pp6;4-wBn7WZ1wZ|!6MGs0fy5P z{KA`lB8f$4?>G>On`zXE-nuDnEZ?gEX*X2m5pGE5Z#1E}zZ@SJAu4u)YA0KkbfjZy z2W5DmdbzMNh?KptliN#Zw!)qzH*+MS?lJj#PZ`$jm|B!>ObhRO8*hdy4{c@+;dB!$L_ltN58ncP}l_uu=zxr){ z+K5B_UJ8v&$M7Q-j68Wy(cs-v{L&t_dK-b(Qq<<;2xq)xxxmBMN;h;I+H@KDA0O0{ zh^{C|#-*bB0&l42rMLA&N_ndFU8395?!Rlhtt%SyDa{O<>SoxJ*~suws=i__&vNYY zXymi@$?nN%noVK&H2K51!$*=NnSy?%<3Z=izA$v9=%9{r@P0rrRF_o<9zS_1C@#C1 zM8;|gGZxgE4a{$EXw{hSy)@n>H&;d=vPAlX-;b|;S?YG6+XW})W_%yvY09E!;Fd6| z>rR|*jqDUlLuVy4`e9pT@Q4jr?!yWS8nt7Unq-X}?kOrom&yL2Q2qT=(oe@VDw$8B z-3o22_if1L$a32nNuo9f_y_N%K3O&wGuD?sT1OICnN#w3fqIm4x?dh?7#fKp`xZ@6 z`tvWywwzRGk5J>O3h4fgcnK$c%8d9N*BM!jnVJc!qKOn*h4u;e?V6tpBZ@{KO`AR1 z5@l4FO%Kj?`1N!eFlw7z>tY>d_NhOcc#qY{nuQLNe{Zl37fWR9A;<#GY* zG2(_?m%`jYbf42$u~Ux#Yt;vNMEVAj?2_`QVvOc>3-_^1@9>T7rpNd4oS|V2zIVs? zV;LEp-zEgT<4d;x-`m#z^bTmYf9;o`V5>BkP%tRiUs%0A8uywI1{4Mg`;H20L{fi5 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 literal 0 HcmV?d00001 diff --git a/tests/misc-tests/033-metadata-uuid/disk3.raw.xz b/tests/misc-tests/033-metadata-uuid/disk3.raw.xz new file mode 100644 index 0000000000000000000000000000000000000000..25e9be696fef1d3ae590185a85de9ed9a2a7d012 GIT binary patch literal 78328 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 OrZ|@P_dgzElYasEi@X&8 literal 0 HcmV?d00001 diff --git a/tests/misc-tests/033-metadata-uuid/disk5.raw.xz b/tests/misc-tests/033-metadata-uuid/disk5.raw.xz new file mode 100644 index 0000000000000000000000000000000000000000..e9095b78877555a7e2364ebb7bf4237c4796c071 GIT binary patch literal 78348 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 INUd%D0mmL8ng9R* literal 0 HcmV?d00001 diff --git a/tests/misc-tests/033-metadata-uuid/disk6.raw.xz b/tests/misc-tests/033-metadata-uuid/disk6.raw.xz new file mode 100644 index 0000000000000000000000000000000000000000..9926ae494f53cbacd94b8bc61a3440b38f1c0ac0 GIT binary patch literal 77552 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 "$RESULTS" + #Test with random uuid + run_check $SUDO_HELPER "$TOP/btrfstune" -m "$TEST_DEV" + + #check that specific uuid can set + run_check $SUDO_HELPER "$TOP/btrfstune" -M d88c8333-a652-4476-b225-2e9284eb59f1 "$TEST_DEV" + + #test that having seed on already changed device doesn't work + run_mustfail "Managed to set seed on metadata uuid fs" \ + $SUDO_HELPER "$TOP/btrfstune" -S 1 "$TEST_DEV" + + #test that setting both seed and -m|M is forbidden + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" + run_mustfail "Succeeded setting seed and changing fs uuid" \ + $SUDO_HELPER "$TOP/btrfstune" -S 1 -m "$TEST_DEV" + + #test that having -m|-M on seed device is forbidden + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfstune" -S 1 "$TEST_DEV" + run_mustfail "Succeded changing fsid on a seed device" $SUDO_HELPER "$TOP/btrfstune" -m "$TEST_DEV" + + #test that using -U|-u on an fs with METADATA_UUID flag is forbidden + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfstune" -m "$TEST_DEV" + run_mustfail "Succeeded triggering FSID rewrite while METADATA_UUID is active" \ + $SUDO_HELPER "$TOP/btrfstune" -u "$TEST_DEV" + +} + +function check_dump_super_output { + local fsid + local metadata_uuid + local dev_item_match + local old_metadata_uuid + + echo "Checking dump-super output" >> "$RESULTS" + #Assert that metadata/fsid match on non-changed fs + fsid=$(read_fsid "$TEST_DEV") + metadata_uuid=$(read_metadata_uuid "$TEST_DEV") + [ "$fsid" = "$metadata_uuid" ] || _fail "fsid ("$fsid") doesn't match metadata_uuid ("$metadata_uuid")" + + dev_item_match=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super \ + "$TEST_DEV" | awk '/dev_item.fsid/ {print $3}') + + [ $dev_item_match = "[match]" ] || _fail "dev_item.fsid doesn't match on non-metadata uuid fs" + + + echo "Checking output after fsid change" >> "$RESULTS" + #change metadatauuid and ensure everything in the output is still correct + old_metadata_uuid=$metadata_uuid + run_check $SUDO_HELPER "$TOP/btrfstune" -M d88c8333-a652-4476-b225-2e9284eb59f1 "$TEST_DEV" + fsid=$(read_fsid "$TEST_DEV") + metadata_uuid=$(read_metadata_uuid "$TEST_DEV") + dev_item_match=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" \ + inspect-internal dump-super "$TEST_DEV" | awk '/dev_item.fsid/ {print $3}') + + [ "$dev_item_match" = "[match]" ] || _fail "dev_item.fsid doesn't match on metadata uuid fs" + [ "$fsid" = "d88c8333-a652-4476-b225-2e9284eb59f1" ] || _fail "btrfstune metadata UUID change failed" + [ "$old_metadata_uuid" = "$metadata_uuid" ] || _fail "Metadata uuid change unexpectedly" + + echo "Checking for incompat textual representation" >> "$RESULTS" + #check for textual output of the new incompat feature + run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super \ + "$TEST_DEV" | grep -q METADATA_UUID + [ $? -eq 0 ] || _fail "Didn't find textual representation of METADATA_UUID feature" + + echo "Checking setting fsid back to original" >> "$RESULTS" + #ensure that setting the fsid back to the original works + run_check $SUDO_HELPER "$TOP/btrfstune" -M "$old_metadata_uuid" "$TEST_DEV" + + fsid=$(read_fsid "$TEST_DEV") + metadata_uuid=$(read_metadata_uuid "$TEST_DEV") + + [ "$fsid" = "$metadata_uuid" ] || _fail "FSID and METADATA_UUID don't match" + run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super \ + "$TEST_DEV" | grep -q METADATA_UUID + [ $? -eq 1 ] || _fail "METADATA_UUID feature still shown as enabled" +} + +function check_image_restore { + local metadata_uuid + local fsid + local fsid_restored + local metadata_uuid_restored + + echo "TESTING btrfs-image restore" >> "$RESULTS" + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfstune" -m "$TEST_DEV" + fsid=$(read_fsid "$TEST_DEV") + metadata_uuid=$(read_metadata_uuid "$TEST_DEV") + run_mayfail $SUDO_HELPER "$TOP/btrfs-image" "$TEST_DEV" /tmp/test-img.dump + # erase the fs by creating a new one, wipefs is not sufficient as it just + # deletes the fs magic string + run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" + run_check $SUDO_HELPER "$TOP/btrfs-image" -r /tmp/test-img.dump "$TEST_DEV" + fsid_restored=$(read_fsid "$TEST_DEV") + metadata_uuid_restored=$(read_metadata_uuid "$TEST_DEV") + + [ "$fsid" = "$fsid_restored" ] || _fail "FSID don't match after restore" + [ "$metadata_uuid" = "$metadata_uuid_restored" ] || _fail "metadata uuids don't match after restore" +} + +function check_inprogress_flag { + + # check the flag is indeed cleared + run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super \ + $1 | grep -q 0x1000000001 + [ $? -eq 1 ] || _fail "Found BTRFS_SUPER_FLAG_CHANGING_FSID_V2 set for $1" + + run_check_stdout $SUDO_HELPER $TOP/btrfs inspect-internal dump-super \ + $2 | grep -q 0x1000000001 + [ $? -eq 1 ] || _fail "Found BTRFS_SUPER_FLAG_CHANGING_FSID_V2 set for $2" +} + +function check_completed { + + # check that metadata uuid is indeed completed + run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal dump-super \ + $1 | grep -q METADATA_UUID + [ $? -eq 0 ] || _fail "METADATA_UUID not set on $1" + + run_check_stdout $SUDO_HELPER $TOP/btrfs inspect-internal dump-super \ + $2 | grep -q METADATA_UUID + [ $? -eq 0 ] || _fail "METADATA_UUID not set on $2" +} + +function check_multi_fsid_change { + check_inprogress_flag $1 $2 + check_completed $1 $2 +} + +function failure_recovery { + local image1 + local image2 + local loop1 + local loop2 + local devcount + + image1=$(extract_image "$1") + image2=$(extract_image "$2") + loop1=$(run_check_stdout $SUDO_HELPER losetup --find --show "$image1") + loop2=$(run_check_stdout $SUDO_HELPER losetup --find --show "$image2") + + # Mount and unmount, on trans commit all disks should be consistent + run_check $SUDO_HELPER mount "$loop1" "$TEST_MNT" + run_check $SUDO_HELPER umount "$TEST_MNT" + + # perform any specific check + $3 "$loop1" "$loop2" + + # cleanup + run_check $SUDO_HELPER losetup -d "$loop1" + run_check $SUDO_HELPER losetup -d "$loop2" + rm -f "$image1" "$image2" +} + +function reload_btrfs { + rmmod btrfs + modprobe btrfs +} + +#for full coverage we need btrfs to actually be a module +modinfo btrfs > /dev/null 2>&1 || _not_run "btrfs must be a module." +modprobe -r btrfs || _not_run "Require btrfs to be unloadable" +modprobe btrfs || _not_run "btrfs load failed" + +run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" +check_btrfstune + +run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" +check_dump_super_output + +run_check $SUDO_HELPER "$TOP/mkfs.btrfs" -f "$TEST_DEV" +check_image_restore + +# disk1 is an image which has no metadata uuid flags set and disk2 is part of +# the same fs but has the in-progress flag set. Test that whicever is scanned +# first will result in consistent filesystem. +failure_recovery "./disk1.raw.xz" "./disk2.raw.xz" check_inprogress_flag +reload_btrfs +failure_recovery "./disk2.raw.xz" "./disk1.raw.xz" check_inprogress_flag + +reload_btrfs + +# disk4 contains an image in with the in-progress flag set and disk 3 is part +# of the same filesystem but has both METADATA_UUID incompat and a new +# metadata uuid set. So disk 3 must always take precedence. +failure_recovery "./disk3.raw.xz" "./disk4.raw.xz" check_completed +reload_btrfs +failure_recovery "./disk4.raw.xz" "./disk3.raw.xz" check_completed + +# disk5 contains an image which has undergone a successful fsid change more +# than once, disk6 on the other hand is member of the same filesystem but +# hasn't completed its last change. Thus it has both the FSID_CHANGING flag set +# and METADATA_UUID flag set. +failure_recovery "./disk5.raw.xz" "./disk6.raw.xz" check_multi_fsid_change +reload_btrfs +failure_recovery "./disk6.raw.xz" "./disk5.raw.xz" check_multi_fsid_change -- 2.7.4