Message ID | cover.1727795639.git.jan.kiszka@siemens.com |
---|---|
Headers | show |
Series | Start to address umount problems | expand |
On Tue, 2024-10-01 at 17:13 +0200, Jan Kiszka wrote: > Changes in v2: > - break up the previously single patch into refactoring + fix > - add a fix for prematurely failing rootfs_do_unounts For v2: Tested-by: Florian Bezdeka <florian.bezdeka@siemens.com> But: We're not done yet. There are two more calls to rootfs_do_mounts that are not yet pared with rootfs_do_unmounts calls. The one in do_rootfs_postprocess is the problematic one from the other thread on the ML. (Anton is now in CC as well) I'm currently testing (on top of v2): diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index c67d3bb8..e359d529 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -235,18 +235,21 @@ python do_rootfs_install() { progress_reporter = bb.progress.MultiStageProgressReporter(d, stage_weights) - for cmd in cmds: - progress_reporter.next_stage() + try: + for cmd in cmds: + progress_reporter.next_stage() - if (d.getVarFlag(cmd, 'isar-apt-lock') or "") == "acquire-before": - lock = bb.utils.lockfile(d.getVar("REPO_ISAR_DIR") + "/isar.lock", - shared=True) + if (d.getVarFlag(cmd, 'isar-apt-lock') or "") == "acquire-before": + lock = bb.utils.lockfile(d.getVar("REPO_ISAR_DIR") + "/isar.lock", + shared=True) - bb.build.exec_func(cmd, d) + bb.build.exec_func(cmd, d) - if (d.getVarFlag(cmd, 'isar-apt-lock') or "") == "release-after": - bb.utils.unlockfile(lock) - progress_reporter.finish() + if (d.getVarFlag(cmd, 'isar-apt-lock') or "") == "release-after": + bb.utils.unlockfile(lock) + progress_reporter.finish() + finally: + bb.build.exec_func('rootfs_do_umounts', d) } addtask rootfs_install before do_rootfs_postprocess after do_unpack @@ -366,9 +369,13 @@ python do_rootfs_postprocess() { if cmds is None or not cmds.strip(): return cmds = cmds.split() - for i, cmd in enumerate(cmds): - bb.build.exec_func(cmd, d) - progress_reporter.update(int(i / len(cmds) * 100)) + + try: + for i, cmd in enumerate(cmds): + bb.build.exec_func(cmd, d) + progress_reporter.update(int(i / len(cmds) * 100)) + finally: + bb.build.exec_func('rootfs_do_umounts', d) } addtask rootfs_postprocess before do_rootfs after do_unpack > > Jan Kiszka (3): > image: Avoid breaking the build when mounts are no longer present on > umount > rootfs: Provide rootfs_do_umounts > initramfs: Add missing umounts after generation > > meta/classes/image.bbclass | 21 ++------------------- > meta/classes/initramfs.bbclass | 2 ++ > meta/classes/rootfs.bbclass | 32 ++++++++++++++++++++++++++++++++ > 3 files changed, 36 insertions(+), 19 deletions(-) > > -- > 2.43.0