diff options
Diffstat (limited to 'src/manager.c')
-rw-r--r-- | src/manager.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/manager.c b/src/manager.c index 9684efac8b..3e742f791e 100644 --- a/src/manager.c +++ b/src/manager.c @@ -1392,9 +1392,15 @@ static int transaction_add_job_and_dependencies( assert(type < _JOB_TYPE_MAX); assert(unit); - if (type != JOB_STOP && - unit->meta.load_state != UNIT_LOADED) { - dbus_set_error(e, BUS_ERROR_LOAD_FAILED, "Unit %s failed to load. See logs for details.", unit->meta.id); + if (unit->meta.load_state != UNIT_LOADED && unit->meta.load_state != UNIT_FAILED) { + dbus_set_error(e, BUS_ERROR_LOAD_FAILED, "Unit %s is not loaded properly.", unit->meta.id); + return -EINVAL; + } + + if (type != JOB_STOP && unit->meta.load_state == UNIT_FAILED) { + dbus_set_error(e, BUS_ERROR_LOAD_FAILED, "Unit %s failed to load: %s. You might find more information in the logs.", + unit->meta.id, + strerror(-unit->meta.load_error)); return -EINVAL; } |