* The ipmid failed to start
@ 2018-12-10 4:03 P. K. Lee (李柏寬)
2018-12-11 0:35 ` Andrew Jeffery
0 siblings, 1 reply; 3+ messages in thread
From: P. K. Lee (李柏寬) @ 2018-12-10 4:03 UTC (permalink / raw)
To: bradleyb; +Cc: andrew, openbmc
Hi Brad,
I saw the issue, which is "recipes-phosphor: Fix systemd unit dependences of ipmid, mboxd" appending "Requires=org.openbmc.HostIpmi.service" and "Afteorg.openbmc.HostIpmi.service", you merged on Nov 29.
After that, the ipmid failed to start.
Because the file meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs/org.openbmc.HostIpmi.service already included "After=phosphor-ipmi-host.service" before, it caused two services waiting for each other.
If the "Requires=org.openbmc.HostIpmi.service" and "Afteorg.openbmc.HostIpmi.service" are removed in the meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host/phosphor-ipmi-host.service or the "After=phosphor-ipmi-host.service" is removed in the meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs/org.openbmc.HostIpmi.service, the ipmid will start normally.
I wonder if there is a better way to go about it.
By the way, after I pushed the code to the Gerrit, "Jenkins Patch Set 1: User not approved, see admin, no CI" it showed. How can I solve this problem?
Sincerely,
P. K. Lee
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: The ipmid failed to start
2018-12-10 4:03 The ipmid failed to start P. K. Lee (李柏寬)
@ 2018-12-11 0:35 ` Andrew Jeffery
2018-12-18 7:41 ` P. K. Lee (李柏寬)
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Jeffery @ 2018-12-11 0:35 UTC (permalink / raw)
To: P. K. Lee (李柏寬), bradleyb; +Cc: openbmc
Hello,
On Mon, 10 Dec 2018, at 14:33, P. K. Lee (李柏寬) wrote:
> Hi Brad,
>
> I saw the issue, which is "recipes-phosphor: Fix systemd unit
> dependences of ipmid, mboxd" appending
> "Requires=org.openbmc.HostIpmi.service" and
> "Afteorg.openbmc.HostIpmi.service", you merged on Nov 29.
>
> After that, the ipmid failed to start.
>
> Because the file meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs/
> org.openbmc.HostIpmi.service already included "After=phosphor-ipmi-
> host.service" before, it caused two services waiting for each other.
Ah, KCS. This is why I didn't hit the problem in my testing.
>
> If the "Requires=org.openbmc.HostIpmi.service" and
> "Afteorg.openbmc.HostIpmi.service" are removed in the meta-phosphor/
> recipes-phosphor/ipmi/phosphor-ipmi-host/phosphor-ipmi-host.service or
> the "After=phosphor-ipmi-host.service" is removed in the meta-phosphor/
> recipes-phosphor/ipmi/phosphor-ipmi-kcs/org.openbmc.HostIpmi.service,
> the ipmid will start normally.
>
> I wonder if there is a better way to go about it.
It's a bit dicey. Something to consider here is that systemd does it's tear-down in stack-order with respect to the Before=/After= relationships defined in the service files. With org.openbmc.HostIpmi.service having an After= relationship with phosphor-ipmi-host.service it is torn down before phosphor-ipmi-host. This impacts processes that want to send events to the host during the BMC shutdown path: These applications need to depend on phosphor-ipmi-host to access its APIs, and it's a layering violation for the applications to also depend on the transport that phosphor-ipmi-host is using (KCS, BT etc). In order to propagate the event to the host, phosphor-ipmi-host needs its transport, and therefore must have an After= relationship with the transport process due to systemd's stack ordering on tear-down.
Having said that, requiring that After= relationship means that phosphor-ipmi-host.service is started after org.openbmc.HostIpmi.service, which means messages that arrive in the period between the two starting may get lost. I think it's worth keeping in mind that org.openbmc.HostIpmi simply emits a signal when a message is received, and this provides no guarantee of anyone actually caring. This is in contrast to sending events the other way, where org.openbmc.HostIpmi's interface provides a DBus method, which guarantees someone cares or the caller receives an error. This design fits the After= relationship that I made phosphor-ipmi-host have on org.openbmc.HostIpmi.service, so I'd suggest it's worth changing the relationship for the KCS implementation as well.
However, maybe that's a decision to be made per-platform rather than generally. I guess the unit files can be overridden in the packaging if this is a concern?
>
> By the way, after I pushed the code to the Gerrit, "Jenkins Patch Set 1:
> User not approved, see admin, no CI" it showed. How can I solve this
> problem?
You need to convince someone that your patch isn't going to exploit our CI infrastructure :) Once you've earned some trust in the community with your contributions generally someone will add you to the list that allows CI to test your patches straight away.
Cheers,
Andrew
>
> Sincerely,
> P. K. Lee
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: The ipmid failed to start
2018-12-11 0:35 ` Andrew Jeffery
@ 2018-12-18 7:41 ` P. K. Lee (李柏寬)
0 siblings, 0 replies; 3+ messages in thread
From: P. K. Lee (李柏寬) @ 2018-12-18 7:41 UTC (permalink / raw)
To: Andrew Jeffery; +Cc: bradleyb, openbmc
Hi Andrew,
Thanks for your explanations in details.
The current situation of starting KCS:
systemd[1]: phosphor-ipmi-host.service: Found ordering cycle on org.openbmc.HostIpmi.service/start
systemd[1]: phosphor-ipmi-host.service: Found dependency on phosphor-ipmi-host.service/start
systemd[1]: phosphor-ipmi-host.service: Job org.openbmc.HostIpmi.service/start deleted to break ordering cycle starting with phosphor-ipmi-host.service/start
I will first remove After=phosphor-ipmi-host.service in org.openbmc.HostIpmi.service of phosphor-ipmi-kcs like BT.
Thanks,
P. K. Lee
> On Dec 11, 2018, at 08:35, Andrew Jeffery <andrew@aj.id.au> wrote:
>
> Hello,
>
> On Mon, 10 Dec 2018, at 14:33, P. K. Lee (李柏寬) wrote:
>> Hi Brad,
>>
>> I saw the issue, which is "recipes-phosphor: Fix systemd unit
>> dependences of ipmid, mboxd" appending
>> "Requires=org.openbmc.HostIpmi.service" and
>> "Afteorg.openbmc.HostIpmi.service", you merged on Nov 29.
>>
>> After that, the ipmid failed to start.
>>
>> Because the file meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs/
>> org.openbmc.HostIpmi.service already included "After=phosphor-ipmi-
>> host.service" before, it caused two services waiting for each other.
>
> Ah, KCS. This is why I didn't hit the problem in my testing.
>
>>
>> If the "Requires=org.openbmc.HostIpmi.service" and
>> "Afteorg.openbmc.HostIpmi.service" are removed in the meta-phosphor/
>> recipes-phosphor/ipmi/phosphor-ipmi-host/phosphor-ipmi-host.service or
>> the "After=phosphor-ipmi-host.service" is removed in the meta-phosphor/
>> recipes-phosphor/ipmi/phosphor-ipmi-kcs/org.openbmc.HostIpmi.service,
>> the ipmid will start normally.
>>
>> I wonder if there is a better way to go about it.
>
> It's a bit dicey. Something to consider here is that systemd does it's tear-down in stack-order with respect to the Before=/After= relationships defined in the service files. With org.openbmc.HostIpmi.service having an After= relationship with phosphor-ipmi-host.service it is torn down before phosphor-ipmi-host. This impacts processes that want to send events to the host during the BMC shutdown path: These applications need to depend on phosphor-ipmi-host to access its APIs, and it's a layering violation for the applications to also depend on the transport that phosphor-ipmi-host is using (KCS, BT etc). In order to propagate the event to the host, phosphor-ipmi-host needs its transport, and therefore must have an After= relationship with the transport process due to systemd's stack ordering on tear-down.
>
> Having said that, requiring that After= relationship means that phosphor-ipmi-host.service is started after org.openbmc.HostIpmi.service, which means messages that arrive in the period between the two starting may get lost. I think it's worth keeping in mind that org.openbmc.HostIpmi simply emits a signal when a message is received, and this provides no guarantee of anyone actually caring. This is in contrast to sending events the other way, where org.openbmc.HostIpmi's interface provides a DBus method, which guarantees someone cares or the caller receives an error. This design fits the After= relationship that I made phosphor-ipmi-host have on org.openbmc.HostIpmi.service, so I'd suggest it's worth changing the relationship for the KCS implementation as well.
>
> However, maybe that's a decision to be made per-platform rather than generally. I guess the unit files can be overridden in the packaging if this is a concern?
>
>>
>> By the way, after I pushed the code to the Gerrit, "Jenkins Patch Set 1:
>> User not approved, see admin, no CI" it showed. How can I solve this
>> problem?
>
> You need to convince someone that your patch isn't going to exploit our CI infrastructure :) Once you've earned some trust in the community with your contributions generally someone will add you to the list that allows CI to test your patches straight away.
>
> Cheers,
>
> Andrew
>
>>
>> Sincerely,
>> P. K. Lee
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-12-18 7:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-10 4:03 The ipmid failed to start P. K. Lee (李柏寬)
2018-12-11 0:35 ` Andrew Jeffery
2018-12-18 7:41 ` P. K. Lee (李柏寬)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.