On Wed, Oct 30, 2019 at 9:02 AM d.hatayama(a)fujitsu.com
<d.hatayama(a)fujitsu.com> wrote:
> -----Original Message-----
> From: Kairui Song [mailto:kasong@redhat.com]
> Sent: Monday, October 28, 2019 5:29 PM
> To: Hatayama, Daisuke/畑山 大輔 <d.hatayama(a)fujitsu.com>
> Subject: Re: [PATCH] kdump-lib-initramfs.sh: use -f option for failure_action
> halt
>
> On Mon, Oct 28, 2019 at 11:29 AM d.hatayama(a)fujitsu.com
> <d.hatayama(a)fujitsu.com> wrote:
> >
> > failure_action halt doesn't work well now. This appears to be similar
> > to the previous issues such as
> > b2534348199ad5010c86890a068653d970c9933d and
> > 89565289c64aa5323278cf5722c725a58b369af8.
>
> Hi,
>
> Thanks for the patch, it looks good to me in general, but can you add
> more detail about the problem you are trying to solve?
> Eg, add some word about the system behavior or some error logs. Like
> in the two commits you mentioned.
I see. I'll reflect your comment in the next version.
I would write that there is a message indicating halt command is executed
but actually system is reboot, not halted together with log message.
Also I a little more looked into the behavior using debug message
with systemd.log-leve=debug. It looks that systemd-halt.service
is once pulled-in but it is somehow not executed and finally system
is rebooted.
systemd-udevd-control.socket: Changed listening -> dead
systemd-udevd-control.socket: Job 100 systemd-udevd-control.socket/stop finished,
result=done
[^[[0;32m OK ^[[0m] Closed ^[[0;1;39mudev Control Socket^[[0m.
Kdump: Executing failure action halt
^-- failure_action halt is executed
Bus private-bus-connection: changing state UNSET → OPENING
Bus private-bus-connection: changing state OPENING → AUTHENTICATING
Accepted new private connection.
Bus private-bus-connection: changing state AUTHENTICATING → RUNNING
Got message type=method_call sender=n/a destination=org.freedesktop.systemd1
path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=StartUnit
cookie=1 reply_cookie=0 signature=ss error-name=n/a error-message=n/\
a
halt.target: Trying to enqueue job halt.target/start/replace-irreversibly
^-- halt.target gets started being pulled-in here
Added job halt.target/start to transaction.
Pulling in systemd-halt.service/start from halt.target/start
Added job systemd-halt.service/start to transaction.
Pulling in shutdown.target/start from systemd-halt.service/start
Added job shutdown.target/start to transaction.
Pulling in dracut-cmdline.service/stop from shutdown.target/start
Added job dracut-cmdline.service/stop to transaction.
Pulling in cryptsetup.target/stop from shutdown.target/start
Added job cryptsetup.target/stop to transaction.
...<snip>...
squash-root.mount: squash-root.mount lost dependency After=dev-loop0.device
squash-root.mount: squash-root.mount lost dependency References=dev-loop0.device
squash-root.mount: Collecting.
Child 400 (umount) died (code=exited, status=0/SUCCESS)
etc.mount: Child 400 belongs to etc.mount.
etc.mount: Mount process exited, code=exited, status=0/SUCCESS
etc.mount: Succeeded.
etc.mount: Changed unmounting -> dead
etc.mount: Job 181 etc.mount/stop finished, result=done
[^[[0;32m OK ^[[0m] Unmounted ^[[0;1;39m/etc^[[0m.
etc.mount: Collecting.
Received SIGCHLD from PID 400 (n/a).
inotify event for /etc/localtime
Failed to stat /etc/localtime, ignoring: No such file or directory
/etc/localtime doesn't exist yet, watching /etc instead.
Timezone has been changed (now: UTC).
Bus private-bus-connection: changing state AUTHENTICATING → RUNNING
Got message type=method_call sender=n/a destination=org.freedesktop.systemd1
path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=Reboot
cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/aO\
perating on architecture: x86-64
Sent message type=method_return sender=org.freedesktop.systemd1 destination=n/a path=n/a
interface=n/a member=n/a cookie=1 reply_cookie=1 signature=n/a error-name=n/a
error-message=n/a
Shutting down.
Bus private-bus-connection: changing state RUNNING → CLOSING
dev-vda.device: Failed to send unit remove signal for dev-vda.device: Connection reset by
peer
systemd-journald.service: Executing: /usr/lib/systemd/systemd-journald
Bus private-bus-connection: changing state CLOSING → CLOSED
[ 15.956995] Unregister pv shared memory for cpu 0
[ 15.967559] reboot: Restarting system
[ 15.970216] reboot: machine restart
^---- but finally system gets restarted.
This behavior doesn't change even if I changed ExecStart=/usr/bin/systemctl --force
halt
in systemd-halt.service into ExecStart=/usr/bin/systemctl --force --force halt.
systemctl halt with --force twice means systemctl calls immediately directly reboot
system call. Thus, I think systemd somehow reboot system before entering
systemd-halt.service.
Thanks, I remember Pingfan have encountered similar problem before,
that force shutdown turns into reboot and that seems to be a systemd
bug. CC Pingfan see if he has any idea about this.
But it's very strange that systemctl --force --force halt doesn't work
either. I can reproduce this locally with Fedora.
Also add the missing kexec(a)lists.fedoraproject.org in CC list.
--
Best Regards,
Kairui Song