From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7010687509260664832 X-Received: by 2002:adf:cf04:: with SMTP id o4mr31329290wrj.352.1632302894273; Wed, 22 Sep 2021 02:28:14 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:8b92:: with SMTP id o18ls2287886wra.0.gmail; Wed, 22 Sep 2021 02:28:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwrsn1ilQ6PjQ+sIsbd7pA4eWZNouSdEgNNZE5pxPurfiZ+V7ZOMA8yywFcnj41PfqRds4R X-Received: by 2002:a05:6000:18a2:: with SMTP id b2mr28291441wri.342.1632302893270; Wed, 22 Sep 2021 02:28:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632302893; cv=none; d=google.com; s=arc-20160816; b=G4d7yTzwzo2mZ90B8Hm8g1a63vpE/whnlkr7sjUn5oau4wDUl+XY0qTN4tUgpflbS6 CBW/IRCPEO6+/h8BGECfOz+0OT8Q1Yz1pXv8pnZBvygEt1xbh2Bgw02czs0vNo+qtM1o yx//vCFHqTMWTk2ca8tdYk8em+m1wmn2yLcc4EAtLT+hmgenpMLQgUAvMr1kjgrQlxeG T9pwgGasS0o6c13WnIYqqOosNtwE7pxdLfj5F/NWsDXKsxD7quaySvId8WtfKlACy2V9 BAdSTL+Mjxcv/guafgRSab+XSTXhRHUuOaIk3+wgKEkszhYg6y2rWEkqbfvD5/jgE4SY hwUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=UcHf5vnifiqVR7+nPcaD1ET++hn15l9HFCFSfBfEfHE=; b=UwVpQ0glygmJRbhXd37AOm+8Oj1MnPkEkXHBRry9etozWK1w5c10GRQ4oPaB/09/ZF Dj7YvkrVsqTibvErUYwVXoiMVnrNFwBvOE9swtDgR0wob8V/kSf+A4aC54EDnuVbxIjR k3p2XVlr+eDK/9LtuBD/4ArdG7/VWTVMzyiTsTRtoeVZvY21jQLeK1mPlT8WW+rgkSFp yO09W6AlBnEwOAZUSPeqV54nD8NEBWZRPjw5nhUmlp4ORY6A7ZnqrEL3NEOlFTlpPNF4 O5cmuR6j0SAlauVZeSKcHXd4XAAlPkXU45L4xG9IXKrfUsneghuP/mSyDug7uZ3jI6DE uVTg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id f5si112582wrm.5.2021.09.22.02.28.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Sep 2021 02:28:13 -0700 (PDT) Received-SPF: pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id 18M9SC6D020270 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 22 Sep 2021 11:28:13 +0200 Received: from MD1T0KAC-VM.ad001.siemens.net (md1t0kac.ad001.siemens.net [139.25.68.224]) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id 18M9S3kC028537; Wed, 22 Sep 2021 11:28:11 +0200 From: Felix Moessbauer To: isar-users@googlegroups.com Cc: henning.schild@siemens.com, jan.kiszka@siemens.com, Felix Moessbauer Subject: [PATCH 2/4] execute do_wic_image under a lock to ensure mountpoints remain mounted Date: Wed, 22 Sep 2021 11:27:52 +0200 Message-Id: <20210922092754.3649703-3-felix.moessbauer@siemens.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210922092754.3649703-1-felix.moessbauer@siemens.com> References: <20210922092754.3649703-1-felix.moessbauer@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: J5TlFEhYWo2S This patch adds the isar.lock to the do_wic_image task to ensure that the mountpoints are not unmounted by a simultaneously running wic task. Further, it makes mounting more robust by executing the wic task in a try / finally handler so that the mount points are unmounted even if the task itself fails. Signed-off-by: Felix Moessbauer --- meta/classes/wic-img.bbclass | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/meta/classes/wic-img.bbclass b/meta/classes/wic-img.bbclass index d849ad9..e495c12 100644 --- a/meta/classes/wic-img.bbclass +++ b/meta/classes/wic-img.bbclass @@ -138,23 +138,40 @@ python check_for_wic_warnings() { do_wic_image[file-checksums] += "${WKS_FILE_CHECKSUM}" python do_wic_image() { - bb.build.exec_func("generate_wic_image", d) - bb.build.exec_func("check_for_wic_warnings", d) + lock = bb.utils.lockfile(d.getVar("REPO_ISAR_DIR") + "/isar.lock", shared=True) + bb.build.exec_func("wic_do_mounts", d) + try: + bb.build.exec_func("generate_wic_image", d) + bb.build.exec_func("check_for_wic_warnings", d) + finally: + bb.build.exec_func("wic_undo_mounts", d) + bb.utils.unlockfile(lock) } addtask wic_image before do_image after do_image_tools -generate_wic_image() { +wic_do_mounts() { buildchroot_do_mounts sudo -s <<'EOSUDO' - ( flock 9 for dir in ${BBLAYERS} ${STAGING_DIR} ${SCRIPTSDIR} ${BITBAKEDIR}; do mkdir -p ${BUILDCHROOT_DIR}/$dir if ! mountpoint ${BUILDCHROOT_DIR}/$dir >/dev/null 2>&1; then mount --bind --make-private $dir ${BUILDCHROOT_DIR}/$dir fi done - ) 9>${MOUNT_LOCKFILE} EOSUDO +} + +wic_undo_mounts() { + sudo -s <<'EOSUDO' + for dir in ${BBLAYERS} ${STAGING_DIR} ${SCRIPTSDIR} ${BITBAKEDIR}; do + if mountpoint -q ${BUILDCHROOT_DIR}/$dir; then + umount ${BUILDCHROOT_DIR}/$dir + fi + done +EOSUDO +} + +generate_wic_image() { export FAKEROOTCMD=${FAKEROOTCMD} export BUILDDIR=${BUILDDIR} export MTOOLS_SKIP_CHECK=1 @@ -200,13 +217,4 @@ EOSUDO done rm -rf ${BUILDCHROOT_DIR}/${WICTMP} rm -rf ${IMAGE_ROOTFS}/../pseudo - sudo -s <<'EOSUDO' - ( flock 9 - for dir in ${BBLAYERS} ${STAGING_DIR} ${SCRIPTSDIR} ${BITBAKEDIR}; do - if mountpoint -q ${BUILDCHROOT_DIR}/$dir; then - umount ${BUILDCHROOT_DIR}/$dir - fi - done - ) 9>${MOUNT_LOCKFILE} -EOSUDO } -- 2.30.2