# rpm-ostree and systemd-inhibitors * [JL] UX of users using sd-inhibitors does not look great * [JL] I'd like to have the machine *not* block forever if there is an inhibitor stuck * [JL] this seems to come from a Zincati request, but haven't seen it outside of that * [CW] there aren't many other things doing auto-updates so far * [CW] OCP customers are segmenting nodes into different MachinePools to coordinate updates * [CW] I'd like to just have sd-inhibitors as a useful primitive, no matter what's the driver * [JL] let's draw an example: a custom updating every month; should they keep a month-long inhibitors * [CW] IMHO yes; also because MCO can now do reboot-less changes * [LB] in FCOS world, no need to keep the inhibitor for a month, you can have dedicated strategies for that * [JL] yes, it looks like a bit of race-y primitive, especially if there are multiple upgrades pending (i.e. barriers) * [LB] right now we are only considering rpm-ostree, but we can add logic at higher levels too (Zincati & MCO) * [CW] I'd like to have blocking inhibitors as a reliable primitive, not happy with rpm-ostree declaring an arbitrary timeout * [CW] MCO could be a bit smarter and mirror inhibitors/annotations to steer MCO away * [LB] we can layer stuff: * a timeout at the high-level (MCO / Zincati) * respecting blocks at the low-level by default (rpm-ostree) * a manual override to bypass blocks within rpm-ostree * [LB] last point possibly not worth, just rebooting the node will make any stuck block-inhibitor disappear * [JL] we should respect inhibitors at the OS level, without timeout or anything * [CW] rpm plugins knows how to use sd-inhibitors, we should make sure we are not deadlocking * [JL] we can experiment with the Zincati flow only, first * [LB] instead of starting to tackle this in rpm-ostree, we can do the some changed in MCO/Zincati to get an idea about real-world usage right now * [JL/CW] there are multiple update paths in MCO, and some of them do not require a drain+reboot * [KF] not sure which direction to go from here * [JL] a PR should be ok, if only Zincati goes through that codeflow * [CW] should rpm-ostree have a flag to ignore block-inhibitors? * [KF] my PR may likely interact with other consumers too * [KF] but it sounds like is ok to have rpm-ostree always respect block inhibitors * [KF] for later, whether we need a flag to ignore them * [JL] possibly not, it doesn't look very useful as a UX flow * [JL] for the Zincati flow, we still have no way for users to own the manual flow, but it would be good * [LB] ack, but I wouldn't mix into this discussion * [CW] MCO changes not a top priority right now, we can leave them for later