From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7174822613449965568 X-Received: by 2002:a05:6512:b96:b0:4b5:a70f:8efb with SMTP id b22-20020a0565120b9600b004b5a70f8efbmr452928lfv.678.1670528543110; Thu, 08 Dec 2022 11:42:23 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:8e2f:0:b0:26b:db66:8dd4 with SMTP id r15-20020a2e8e2f000000b0026bdb668dd4ls1046069ljk.8.-pod-prod-gmail; Thu, 08 Dec 2022 11:42:21 -0800 (PST) X-Google-Smtp-Source: AA0mqf6/1ljBJJB1Y21E458dW5DePc7cv0YUnodASVCVeqe8w9yoRWDAQdb/Vr8SF0T4VEfU7o/6 X-Received: by 2002:a2e:a371:0:b0:279:e2cd:9ad7 with SMTP id i17-20020a2ea371000000b00279e2cd9ad7mr770950ljn.0.1670528541810; Thu, 08 Dec 2022 11:42:21 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1670528541; cv=pass; d=google.com; s=arc-20160816; b=l5YeB+owDbqwLS9hVLYKJ1fLdp09bDNXS8H0wYfOuoa9FN+k8qxKIghxychxtFTM55 AM2N6XfmA9z1dja7qFlon3Gzq/ODR7MIeU7QlI6ia5Q1YaiGxLqHsmdGzcu1vDSVKM5c jdKNp7etDE0ZT8oi7+6NI7FKi1wTShL3gGSKYIa6kZHF7p2nvq6ouAy1j2SCoB3lOI9t c4v6nFvLsUZgTBih9MzIxvXRIZP7AhmQ1a9VDNGmarLFG9OXbSmtd88S59Ian5JDFBmE nFZBR/tJ5oaZ+UZYDweoqi7RYbVpsxvbTuCr8Afo3h3hsV83GVkrzRlSBp6L1hMIfTxX FLzQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:references:in-reply-to :message-id:subject:cc:to:from:date:dkim-signature; bh=T7Ka5aQc+RrpWZjrKTh0jflJc1Xz87vP2J3FpD8M7X0=; b=E/pwMf6T96nF27O2kfkltrGfIboi+G/jExDYId6cp76XamavzL5bbh1Q3igW62+u8I 0Zuv8t8UAglBJeJ1bjG+YqDx/QIuv9Ez6Oc0YTUinNqgQNP8Vp/OwewxJPCN68vgGM5A bCQIj6Xty1nRIJYV+wP64h1oc1zREuH8KXGu0T1Y6jOrKs1f97Vkfk00qmUBZeVotW6m gNtQrU8UGM4JbFl/Yx3Ym8yZp5OWP3Va8t08A6Zx6mUUsDf/qpK/vQFbInkJ1BuZQPyU 16yQeda/OJAXed5E/wAScOvQ8SRM4whDKc9aH9Ag0Rm1QR6gzasDZpT5wHVx7Lto0Yz3 C9aw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=mo48Lv8+; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of henning.schild@siemens.com designates 40.107.20.43 as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2043.outbound.protection.outlook.com. [40.107.20.43]) by gmr-mx.google.com with ESMTPS id h21-20020a2ea495000000b002797e79499csi1086363lji.8.2022.12.08.11.42.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Dec 2022 11:42:21 -0800 (PST) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 40.107.20.43 as permitted sender) client-ip=40.107.20.43; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=mo48Lv8+; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of henning.schild@siemens.com designates 40.107.20.43 as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=blCsXXUftQfxb5a7w+53vo8HN55esTCBH+SpDhndNKe1HQYIfQOM9gGnmSnGagx54Uvu++5f+LD5xhKcYTPAnbe8m0/vrlZeUZKfz7sd+2z9zqQ7j4EnT8k3d0mvIA7CotcoCih+60Ep9cToAOQKg6oOxIlYWo5JGSMmECZRyCNVPvMd4hPzJ19NxrX4QqM8vh1oWPy73nAi5x0rKni/wHlcUvgZRX0pnTAHtYcen1+En5CYkhQS7X28DuoDldlAyJhc+rf+rqbEyYI6QxYPQr2pmzzMFgajVOUx1paRQ2JFwflfeQkop1BBnW9fTmoD/vE0Be4FNnPl8aj7XqlyCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=T7Ka5aQc+RrpWZjrKTh0jflJc1Xz87vP2J3FpD8M7X0=; b=FG1ttUYSls/Gyv6ufghnAPgq6l7Wgct9PeDkRysafjL4fZja6bOcXHtPZrY9iQ00uas0UUabdQjaUlcFwyTkmxJoU3VAUOvqHsZLVdBRoyRIBF8wFcAZl63PCk4OQV4abX69K9jBhNW+TWW6SvFshY/lr/3nhcm4KJ3WytOjLBn3d/KVHHHr/heTSfLXKLefEYOA5lrVk6x/CcUygCCzVWsBoMMBMw7DlHgiw3dP226ht82g6qNQXtNIUpsrU0JXmVE1H/SWLP4iampWoag4LdXQGZU+07yxOabgT7m54LW/sOxlgiRLlOj+s2lMunNmUOxQD21tWnL4aIdxE4c8rQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=T7Ka5aQc+RrpWZjrKTh0jflJc1Xz87vP2J3FpD8M7X0=; b=mo48Lv8+UvxKr+LnLW+x2S9CNiAiAHbNmLZRLobaY8dQRA/ZF0QBpLE8ubeb0nQYBkIoOq3rGIzww66VL0GXThjVHJKVm2ZFervs39E7sGN7BToq7LmgZbWVZseMKzcfWGYhXdVLhCOkP9ArZdT2+vyat+49Me2AWEpzsB+giR7weaQGRyNWGMvERvHw8yrVE5Lc7JTTg0poozk9TME/M1YCgllZ9Kbhiwqz8fb2xYvXl7Zez8EC4Yk3D+Rp9vdAewtxe8bWaYfCuX/1AUB0SP3D++1IFwbb+Q5nXHEjAoesVG1xdf4QL5NIbzDUr6hMGcQwzW42PXltsZO4zdjbIQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:269::8) by PAXPR10MB5566.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:241::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Thu, 8 Dec 2022 19:42:19 +0000 Received: from PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM ([fe80::bdf0:fdeb:f955:bc79]) by PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM ([fe80::bdf0:fdeb:f955:bc79%3]) with mapi id 15.20.5880.014; Thu, 8 Dec 2022 19:42:19 +0000 Date: Thu, 8 Dec 2022 20:42:14 +0100 From: Henning Schild To: "Schaffner, Tobias (T CED SES-DE)" Cc: "isar-users@googlegroups.com" , "Moessbauer, Felix (T CED INW-CN)" , "Kiszka, Jan (T CED)" Subject: Re: [PATCH] expand-on-first-boot: wait for udev to create symlink Message-ID: <20221208204214.74ec0390@md1za8fc.ad001.siemens.net> In-Reply-To: <12b922b2-8e32-2520-add6-dfbb9b772b48@siemens.com> References: <20221208165542.2451856-1-tobias.schaffner@siemens.com> <20221208183919.1703fb25@md1za8fc.ad001.siemens.net> <12b922b2-8e32-2520-add6-dfbb9b772b48@siemens.com> X-Mailer: Claws Mail 4.1.0 (GTK 3.24.34; x86_64-pc-linux-gnu) Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0021.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::11) To PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:269::8) Return-Path: henning.schild@siemens.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR10MB5780:EE_|PAXPR10MB5566:EE_ X-MS-Office365-Filtering-Correlation-Id: a4338746-e55f-4384-2c1f-08dad954517e X-LD-Processed: 38ae3bcd-9579-4fd4-adda-b42e1495d55a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HJFVDHcteF+VxjyePZNvO21uteS1WZSgM52Q8GE01iabM1vbnftIiqp94RQlVJ9DiCD478CgImAoqZtzTc1pqkX64KdWkCmW1+BHVLngkIIC+vgI5b+bwXNuc7Pxvr5uCmf1lZx1umOBK8ul/7+rQDO2U8vJBK6fZg/JBqTEke4oZjMhMx0qt2YsvOb8t3pxNBkZc8jZL+SXG9DLL/zD/4GCdSultMf9vzOqNPviJlvle+Q0SX/vpjxOW8UytjycTHMsf7Xq+ZknGv3erOPcXDMfJ7sV8Z6tA2IMyAeL5VcF6fq/2KnZLNNNVrFVWvD4DKb73cGj31+Ij4klUl3HlRnB6vvvbtGkGL2ZOATHvIS5t4Iii5ld329dcZuX8xfQLti+oGXpETy2uXCICaRA8blUgACdbvJbwGKUWhECM1jwK878wgNGEFCcquz4ThfsTovjBha4kzIzY/Y5o7pgv9OeKyzB6XfhhzpGKr2ibwH76/1D4ICtffhzLn6TCHaUZ7u+92wHGMiW73uEKs84uEOnaX0LihExykbsLIeeAK9Eh3fjjn+1cBKQr+LD19DHNcWm4kymDw/u0I2qMtbE4rpWfrFILMBB4kmVnYh0OpyJgCicBddpnYxa5CbGuOhd7S9v1HxVrcc3LzMtHvbwHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(346002)(396003)(136003)(39860400002)(366004)(451199015)(6862004)(8936002)(8676002)(66946007)(66476007)(54906003)(41300700001)(66556008)(316002)(4326008)(83380400001)(82960400001)(107886003)(6486002)(478600001)(38100700002)(6512007)(1076003)(6636002)(53546011)(186003)(86362001)(6506007)(6666004)(9686003)(2906002)(5660300002)(44832011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qJPIF9ZpYABbYxI7SCnVow5x5i0xa70u09b4UUf2bP3OzX+rVAiCjp9xJWFQ?= =?us-ascii?Q?LSBLoA0Zg1e4+v1ipPsOSAf6y4J4qaY0cxEpoEaGWXYpYh3vnuQUhiybjge9?= =?us-ascii?Q?hMgiAhz1ozNAx86ODqgNnf/R5Ws7/2DITAkg23uPkPYOEyz6cmqbnALpjT7n?= =?us-ascii?Q?CAs9yvNf4zrdPIysL7TKMXKzS1bXQScY3RLATGz7kJGyznsHoNsNHLQwU/30?= =?us-ascii?Q?d+U2GSifPJgZFi8pQUYa8gW/Frs3lm8Ye0vxTIKATxra5t9I5hpyNbAMQ2FO?= =?us-ascii?Q?eFyDfoKBhdipdDaVqohnH2dOR+cE59VUurqJEJEurGoIA84WilbEa+FShX5G?= =?us-ascii?Q?JqN3GWHcOFU2KjmiHqRXsxFWjq0rrVhvoO1V5WuVMLTV97liQJhG5lo7zjHs?= =?us-ascii?Q?QNMg+WjG1zSEhAlzet0PKoj6lpIg3PpMch7mBAxYFHyDSri3Uef8Bb8wGtdb?= =?us-ascii?Q?DM6F8dy/bxEdUGgba4Qttg8icIFJ1Az6Xjyjz5JpXdeMz1biKmp9yAe3cH5/?= =?us-ascii?Q?93/Bqph/J9QeFb8twRwZbP/1YTZS9pUnSmIbx/gqa3IYsN/9G7jrj71g6/uu?= =?us-ascii?Q?/73VpUyvN8oWV5xVs2GgtTsw9n1s+l5vnItakG74IdlCiUGCpoAlc4Ax7nDj?= =?us-ascii?Q?f+a7jfsqfu04Lwc4PiJ6Xz6T3VcLhRldfiZ1g2FKi4m6P30Skikqkj+6Vs4D?= =?us-ascii?Q?1rRm8aeoJEYCbbNoMRUkIo+29ly2X1G304i5jVLB+PeEelnUsuab86pjxD3U?= =?us-ascii?Q?LM8W6WHp8p18dR1X6iBT5S4SbrlR/v4IPck8Qavt17tvPS6u11uAXJVJEJC6?= =?us-ascii?Q?3WmT19vNjpf5yzyyt44pgN23S+7I6mHkjWC2Dorlql0SNWM3gMP7o/dIKvtZ?= =?us-ascii?Q?oENgpaIX6Fag7uzVTVG+v0NpV4lEdmmyZKhyCk56Tcwlv/F9Dt95ddz9s43l?= =?us-ascii?Q?5YYVv4dlAlmD9ni5zWr6CErkQ4AfFlvU6mgUqYIS26FMrsRV3RmtC280SGSA?= =?us-ascii?Q?FDpKMzyKRFmWyWFVx0TAM4d8L0Rm0uykihcmgbWpzHf1miEr1UMqdDQ4sEQ3?= =?us-ascii?Q?7lD2oSNKD+9YbI6WZ/85DIctLMrVqF0gSqlj2cjTccmTHYLfKLNCiqF7vihP?= =?us-ascii?Q?3X+YPR7kvDkowIzLxqD47AiWqMD926aDZHXZu6k3rdSzkSEzadsMCQ1T8K/g?= =?us-ascii?Q?C8fQAK3RxgzFUuNuGS/6mRO0wRcKPP12iKVTrdwsJ23kVKkikcRZFyONly39?= =?us-ascii?Q?xlYQnTrxRSw72tLlk1H5u6H7gIludsmkAmfAHqRhWZjL1AcE/YD38K/zcS6E?= =?us-ascii?Q?k/KVUoIrxlPUhXhPFNGCwfWie19pDDnW8S+71cdf8GIkL4thpzOIPaCCySEv?= =?us-ascii?Q?Ejj/Av2Ibuhhqp3FjoAcPRZwbJkmApssMh3oZdZGvnmCZ/lAVDUtAJVjN9KR?= =?us-ascii?Q?skxGB/Ol6qHpgD4quNYwl6cRJDPNRK1kffPMmL/xviED1gpyeHXWEU4nlix5?= =?us-ascii?Q?0PsmZfxG+DbTSAOZlxFHXPQtFH6YDeFARpTk+2ZmyKu5wCdbJFdSmp6jplXk?= =?us-ascii?Q?rwZNB+AoDcO/ylw+nBSoLs4Acn3oQ23lJvdkSOwCyaWkwWth/6pgBrh5Sq0D?= =?us-ascii?Q?kcKHtRbRKRbMiiJW+O5imaoJ+dylUQM6e+hF84JcesWFdSJmiJv0COkJa1Zu?= =?us-ascii?Q?FlZEEA=3D=3D?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4338746-e55f-4384-2c1f-08dad954517e X-MS-Exchange-CrossTenant-AuthSource: PA4PR10MB5780.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2022 19:42:19.6237 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ztqjk+Ydzks8AzWMM30dIZvKrEaXiQaxOwGaiWw9ODI56jtDlRupNDJmfJy3szD1vqsCJmCPT/8sKlcNp3BNimTGXYtcQEwG+qdWCElZvYA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR10MB5566 X-TUID: qEOu+yYjRr7M Am Thu, 8 Dec 2022 20:18:28 +0100 schrieb "Schaffner, Tobias (T CED SES-DE)" : > On 08.12.22 18:39, Schild, Henning (T CED SES-DE) wrote: > > Am Thu, 8 Dec 2022 17:55:42 +0100 > > schrieb "T. Schaffner" : > > > >> From: Tobias Schaffner > >> > >> systemd-growfs depends on a symlink to the partition of the > >> filesystem that should be resized. This symlink is created by udev > >> in /dev/block/. > >> > >> If this symlink is not yet created for example because > >> systemd-udev is not up yet systemd-growfs will fail. > >> > >> We could use Require and After to depend on the systemd-udev > >> service but this could again create a race condition if udev is up > >> but not fast enough after the partx -u. > >> > >> Resolve the symlinks in /dev/block/ periodically until the symlink > >> appears before running systemd-growfs. > >> --- > >> .../files/expand-last-partition.sh | 16 > >> +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) > >> > >> diff --git > >> a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > >> b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > >> index 57055cc..7ebb3e5 100755 --- > >> a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > >> +++ > >> b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > >> @@ -38,7 +38,8 @@ if [ "$DISK_SIZE" -lt "$MINIMAL_SIZE" ]; then > >> exit 0 fi -LAST_PART="$(sfdisk -d "${BOOT_DEV}" 2>/dev/null | tail > >> -1 | cut -d ' ' -f 1)" +LAST_PART_NAME="$(lsblk -l -o NAME > >> "${BOOT_DEV}" | tail -1)" +LAST_PART="/dev/${LAST_PART_NAME}" > >> > >> # Transform the partition table as follows: > >> # > >> @@ -79,6 +80,19 @@ if [ ! -d "${MOUNT_POINT}" ]; then > >> exit 1 > >> fi > >> > >> +START_TIME="$(date +%s)" > >> + > >> +# Wait for udev to create the symlink to the partition in > > > > Newer systemd versions will not need that anymore. Maybe write down > > which version that would be and starting from which debian distro we > > can drop that. Who knows when that udev stuff changes and the > > symlinks will never appear ... We should only wait for them in > > systemd versions that use them. > > > > If we already have a version out there ... like bookworm? We can > > already implement it without the wait. > > Yes you are right. I will add a check and skip the loop from V252 on. > > >> /dev/block/ as +# systemd-growfs depends on it > >> +while ! readlink /dev/block/* | grep -q "${LAST_PART_NAME}"; do > > > > I would make that much stricter to not be tricked by partial matches > > > > sda4 vs sda42 > > > > readlink -f /dev/block/* | grep -e -q "^${LAST_PART}$" > > I get a relative path from readlink. So I will have to skip the ^ but > to use match the end of the line is a good idea. -e is not needed for > start and end line matches. ;) > > >> + sleep 0.1 > > > > I wonder if there is anything we could do here. Maybe "udevadm > > trigger" and depend on udev after all. Because the 5 is a nasty > > guess ... > > > Nothing that I am aware of. The main reason for the issues that we > have seen was that the udev service was not up yet. We could maybe > check if it is up first and after that only allow a small period. But > then again how long do we wait for the service to be up and running. > > >> + CURRENT_TIME="$(date +%s)" > >> + if [ $(( CURRENT_TIME - START_TIME )) -gt "5" ]; then > > > > we can simply i++ > 50, no need to call date > > > > so maybe > > > > err=1 > > for i in $(seq 0 50); do > > if readlink -f /dev/block/* | grep -e -q "^${LAST_PART}$"; > > then err=0 > > break > > fi > > sleep 0.1 > > done > > > > if $err ... > >> + echo "Could not find symlink to last part in /dev/block/." > >> + exit 1 > >> + fi > >> +done > >> + > >> mount "${LAST_PART}" "${MOUNT_POINT}" > >> /lib/systemd/systemd-growfs "${MOUNT_POINT}" > > > > we could also loop over calling this until it goes "0" or we reach a > > retry counter, that way we magically handle new systemd versions > > that do not need symlinks and do not implement anything with > > symlinks. > > > That's a cool idea. As systemd-growfs returns 1 in all error cases we > will have to parse stderr to determine if we ran in the error case > that we want to handle. I will give it a try. True ... parsing the error smells bad. But let us have a look at the code we get. We should probably do some code reading of < 252 to make sure the parser would catch it in all affected versions since stretch. And if >= 252 solved that for us that code will hopefully never fail again ... famous last expand-on-first-boot patch ;) I will do a 252 (bookworm) test run on the raspbi which i used to repro. In theory that should work without this upcoming patch already. Also gives the chance to add "raspios-bookworm" to isar. Henning > > > Henning > > > >> umount "${MOUNT_POINT}" > >