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