{"id":2229323,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2229323/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-ext4/patch/66f9768551f15fc448239335ae500bc86833c256.1777357321.git.asj@kernel.org/","project":{"id":8,"url":"http://patchwork.ozlabs.org/api/1.1/projects/8/?format=json","name":"Linux ext4 filesystem development","link_name":"linux-ext4","list_id":"linux-ext4.vger.kernel.org","list_email":"linux-ext4@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<66f9768551f15fc448239335ae500bc86833c256.1777357321.git.asj@kernel.org>","date":"2026-04-28T06:42:51","name":"[v4,1/9] fstests: add _loop_image_create_clone() helper","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"472465c7db4cbf6a4b6da6ddc66ed287e0ff36d8","submitter":{"id":92722,"url":"http://patchwork.ozlabs.org/api/1.1/people/92722/?format=json","name":"Anand Jain","email":"asj@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-ext4/patch/66f9768551f15fc448239335ae500bc86833c256.1777357321.git.asj@kernel.org/mbox/","series":[{"id":501769,"url":"http://patchwork.ozlabs.org/api/1.1/series/501769/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-ext4/list/?series=501769","date":"2026-04-28T06:42:52","name":"fstests: add test coverage for cloned filesystem ids","version":4,"mbox":"http://patchwork.ozlabs.org/series/501769/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2229323/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2229323/checks/","tags":{},"headers":{"Return-Path":"\n <SRS0=UqDU=C3=vger.kernel.org=linux-ext4+bounces-16136-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ext4@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=H3PkWLob;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=150.107.74.76; helo=mail.ozlabs.org;\n envelope-from=srs0=uqdu=c3=vger.kernel.org=linux-ext4+bounces-16136-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=\"2600:3c0a:e001:db::12fc:5321\"\n arc.chain=subspace.kernel.org","gandalf.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org","gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=H3PkWLob;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-16136-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"H3PkWLob\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4WBs1Dngz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 16:44:53 +1000 (AEST)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4g4WBs0f1gz4wJP\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 16:44:53 +1000 (AEST)","by gandalf.ozlabs.org (Postfix)\n\tid 4g4WBs0ZQtz4wK5; Tue, 28 Apr 2026 16:44:53 +1000 (AEST)","from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4g4WBn2znvz4wJP\n\tfor <patchwork-incoming@ozlabs.org>; Tue, 28 Apr 2026 16:44:49 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id EBA25305DEFB\n\tfor <patchwork-incoming@ozlabs.org>; Tue, 28 Apr 2026 06:43:18 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id CDDBA351C30;\n\tTue, 28 Apr 2026 06:43:15 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B5FE3502AA;\n\tTue, 28 Apr 2026 06:43:15 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 716DAC2BCB8;\n\tTue, 28 Apr 2026 06:43:13 +0000 (UTC)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1777358693; cv=pass;\n\tb=Sleh8ps7Y+MCVD2+KSzTd16wzSrZfvI8+6AcVSWjfmbANls1cVN+OiOJ6QYq2JMa58b+GyTqju42tvxgrMb5/gye22wLph5q9L+SkXXCvoBytOmKhaazEkPtUiVrVuj++9PBDlPQrShR1p1sSe5T8u3qqFDbvnolKk/0TYkFfmzlroPBL5NtPzFUNm4TRHI0NV2LZj18DmD4I9cXPsGQZQBt4DJHGvOqQti8awuAQ52QPwysNEB1fEr8erhaAsJ//QOXOag09oPtUHQh9TCKWDR7+gsXJ1qoBoafb4oAfqfqOgP8DbYOOwBEoPGhFAxs7KvkCG0mWJeYuonu4MtUvQ==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777358595; cv=none;\n b=dkTBWKhP5AvpPICQpcO9K4imCnF+J3Oivuno9O5NmbydbjOz1g+5EIO3QE0sTZI69vST4EPt96NbZ03ldO96vMJk3kq4uIbTTBysE80Spja8lKmFiodLtLW6lF+WW8RBD0NOPp9XgsRbTUyaioWtW70NZMAWO8oN+NEHEzL+Ono="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1777358693; c=relaxed/relaxed;\n\tbh=TxP+Ul1g4nZ+aMojQI/q2Rh3A70U3/IH9q43EfQHxO0=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=E68TOHEluPZG0zf55b0DxDK70oKPNIpUw4Tdwj2V6yloTZ+t6nKfR2Xn9L4jSwkmLWcaDYwq7idJp4DP3lcmC1QMT409vvlxNoyh/AzOH3pS4Rbk5y7tOzwUxq8jvdFgmhkzu9F2DVzy5tVw1B8Y4B5+7BKaV4hDjInKXebr9TqPZ6U53ixcUqe74PoPmrDu97FGSZq8m76QkJEH1P9DZa9KwJZSBb/mUkcDAy/dEBS9w3a9YQPRiiFqBK3AxOPF8x4VlD2eNNZN5W8jRZvv5f73jl2w/iVkdFrlomFQUqftM4Sm1upj6OZUABmqS8xodnf4zU7pFglMkUMYxzTVcA==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777358595; c=relaxed/simple;\n\tbh=elQgkUeErhlv15tJrd1NtcpSP5p/NhgQJp99u70EEQc=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=H+Ils7GIyFKrUpJBeDz1l0IwRSZ+mGBCBys8CA0iTz3DvsmLR2RB5sX+D8rVKevlUGBi45lWyUdqpqBW8QrGJB1x6h+5s112R8T4StXSdNH3ZC2zjeisqSINB7Pd/YrqT34aVMy+yY3a2ukhzQQjfcwKE78KTWX97Iix36Ui/6I="],"ARC-Authentication-Results":["i=2; gandalf.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=H3PkWLob; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-16136-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=H3PkWLob; arc=none smtp.client-ip=10.30.226.201"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777358595;\n\tbh=elQgkUeErhlv15tJrd1NtcpSP5p/NhgQJp99u70EEQc=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=H3PkWLobkRPD9XbZGvpb9yWvhIR/NdIJkNiAzEc4D5m4HiWleI9bYE74VLEBmJ0Fg\n\t jt/P4fJziHLNcaZ1Hpt6BRx3cs2FXOmwhv4KF2ffmpJg9FhLHfvvO4qqzmxFyAbQc6\n\t qX0gxNxGgtVt6jizmCN1sZ0cSZ+7higEHapA9MBv+AIU/yrAgQs4HFiRLQsWcNd3OS\n\t k/puKaQ7Dx3rsVSL9fWsRYnYQQPLNLpysadVC7eonqxFFYNpKt9DNirRI4ru4T+JX9\n\t kVUBnfhVBrkP4OcC1egxlfiYU1KDrzVA01OsW+FwGO2Do5okN5AJ1lsfSmOhryGSOL\n\t nxquOTuZW8NjA==","From":"Anand Jain <asj@kernel.org>","To":"fstests@vger.kernel.org","Cc":"linux-btrfs@vger.kernel.org,\n\tlinux-ext4@vger.kernel.org,\n\tlinux-xfs@vger.kernel.org,\n\tlinux-f2fs@vger.kernel.org,\n\tamir73il@gmail.com,\n\tzlang@redhat.com,\n\thch@infradead.org","Subject":"[PATCH v4 1/9] fstests: add _loop_image_create_clone() helper","Date":"Tue, 28 Apr 2026 14:42:51 +0800","Message-ID":"\n <66f9768551f15fc448239335ae500bc86833c256.1777357321.git.asj@kernel.org>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<cover.1777357320.git.asj@kernel.org>","References":"<cover.1777357320.git.asj@kernel.org>","Precedence":"bulk","X-Mailing-List":"linux-ext4@vger.kernel.org","List-Id":"<linux-ext4.vger.kernel.org>","List-Subscribe":"<mailto:linux-ext4+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ext4+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Spam-Status":"No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"},"content":"Introduce _loop_image_create_clone() and _loop_image_destroy() to mkfs an\nimage file and clone it to another image file, and attach a loop device to\nthem. And its destroy part.\n\nSigned-off-by: Anand Jain <asj@kernel.org>\n---\n common/rc | 47 +++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 47 insertions(+)","diff":"diff --git a/common/rc b/common/rc\nindex 9632b211b58f..754365e80dca 100644\n--- a/common/rc\n+++ b/common/rc\n@@ -1503,6 +1503,53 @@ _scratch_resvblks()\n \tesac\n }\n \n+_loop_image_create_clone()\n+{\n+\tlocal -n _ret=$1\n+\tlocal pre_clone_tune_func=$2\n+\tlocal img_file=$TEST_DIR/${seq}.img\n+\tlocal img_file_clone=$TEST_DIR/${seq}_clone.img\n+\tlocal size=$(_small_fs_size_mb 128) # Smallest possible\n+\tlocal loop_devs\n+\n+\t_require_fs_space $TEST_DIR $((size * 1024))\n+\n+\t_create_file_sized $((size * 1024 * 1024)) $img_file ||\n+\t\t\t\t_fail \"Failed: Create $img_file $size\"\n+\n+\tloop_devs=$(_create_loop_device $img_file)\n+\t_ret=($loop_devs)\n+\n+\tcase $FSTYP in\n+\txfs)\n+\t\t_mkfs_dev \"-s size=4096\" ${loop_devs[0]}\n+\t\t;;\n+\tbtrfs)\n+\t\t_mkfs_dev ${loop_devs[0]}\n+\t\t;;\n+\t*)\n+\t\t_mkfs_dev ${loop_devs[0]}\n+\t\t;;\n+\tesac\n+\n+\t($pre_clone_tune_func)\n+\n+\tsync ${loop_devs[0]}\n+\tcp $img_file $img_file_clone\n+\n+\tloop_devs=\"$loop_devs $(_create_loop_device $img_file_clone)\"\n+\n+\t_ret=($loop_devs)\n+}\n+\n+_loop_image_destroy()\n+{\n+\tfor d in \"$@\"; do\n+\t\tlocal f=$(losetup --noheadings --output BACK-FILE $d)\n+\t\t_destroy_loop_device \"$d\"\n+\t\t[ -n \"$f\" ] && rm -f \"$f\"\n+\tdone\n+}\n \n # Repair scratch filesystem.  Returns 0 if the FS is good to go (either no\n # errors found or errors were fixed) and nonzero otherwise; also spits out\n","prefixes":["v4","1/9"]}