In Fedora 31, `systemd-journal-flush.service` uses a new `--smart-relinquish-var` switch which fixes the `umount: /var: target is busy` bug by telling journald to stop logging to `/var` and back to `/run` again during shutdown. This interacted with `ostree-finalize-staged.service` in a tricky way: since we weren't strongly ordered against it, when we happened to finalize after `/var` is relinquished, we never persisted the output from that service to disk. This then threw off `rpm-ostree status` when trying to find the completion message to know that finalization went well. Just fix this by adding an explicit `After=` on that unit. That way we shut down *before* `systemd-journal-flush.service` (the `/var` relinquish bit happens in its `ExecStop=`). For more info, see: https://github.com/systemd/systemd/commit/3ff7a50d66e3f851d3d9f132b740a7fb2055aa1d https://github.com/systemd/systemd/commit/1e187d2dd52cbb4f0bb30e4d96acf7f72a145b91 https://bugzilla.redhat.com/show_bug.cgi?id=1751272 Closes: #1926 Approved by: cgwalters
42 lines
1.5 KiB
Desktop File
42 lines
1.5 KiB
Desktop File
# Copyright (C) 2018 Red Hat, Inc.
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the
|
|
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
# Boston, MA 02111-1307, USA.
|
|
|
|
# For some implementation discussion, see:
|
|
# https://lists.freedesktop.org/archives/systemd-devel/2018-March/040557.html
|
|
[Unit]
|
|
Description=OSTree Finalize Staged Deployment
|
|
Documentation=man:ostree(1)
|
|
ConditionPathExists=/run/ostree-booted
|
|
DefaultDependencies=no
|
|
|
|
RequiresMountsFor=/sysroot
|
|
After=local-fs.target
|
|
Before=basic.target final.target
|
|
# We want to make sure the transaction logs are persisted to disk:
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1751272
|
|
After=systemd-journal-flush.service
|
|
Conflicts=final.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
ExecStop=/usr/bin/ostree admin finalize-staged
|
|
# This is a quite long timeout intentionally; the failure mode
|
|
# here is that people don't get an upgrade. We need to handle
|
|
# cases with slow rotational media, etc.
|
|
TimeoutStopSec=5m
|