diff --git a/src/core/unit.c b/src/core/unit.c index 4384e3bfcb..230a782631 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2044,7 +2044,11 @@ int unit_reload(Unit *u) { return -EBADR; state = unit_active_state(u); - if (state == UNIT_RELOADING) + if (IN_SET(state, UNIT_RELOADING, UNIT_REFRESHING)) + /* "refreshing" means some resources in the unit namespace is being updated. Unlike reload, + * the unit processes aren't made aware of refresh. Let's put the job back to queue + * in both cases, as refresh typically takes place before reload and it's better to wait + * for it rather than failing. */ return -EAGAIN; if (state != UNIT_ACTIVE)