From: Lennart Poettering Date: Thu, 23 Sep 2010 13:38:42 +0000 (+0200) Subject: dbus: export number of total failed jobs on D-Bus interface X-Git-Tag: v11~94 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=76bf48b7d09b6e22d1952ac2fa07fec8ee501b76 dbus: export number of total failed jobs on D-Bus interface --- diff --git a/src/dbus-manager.c b/src/dbus-manager.c index eeea821e4..efff06a18 100644 --- a/src/dbus-manager.c +++ b/src/dbus-manager.c @@ -133,6 +133,7 @@ " \n" \ " \n" \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -267,6 +268,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, { "org.freedesktop.systemd1.Manager", "NNames", bus_manager_append_n_names, "u", NULL }, { "org.freedesktop.systemd1.Manager", "NJobs", bus_manager_append_n_jobs, "u", NULL }, { "org.freedesktop.systemd1.Manager", "NInstalledJobs",bus_property_append_uint32, "u", &m->n_installed_jobs }, + { "org.freedesktop.systemd1.Manager", "NFailedJobs", bus_property_append_uint32, "u", &m->n_failed_jobs }, { "org.freedesktop.systemd1.Manager", "Progress", bus_manager_append_progress, "d", NULL }, { "org.freedesktop.systemd1.Manager", "Environment", bus_property_append_strv, "as", m->environment }, { "org.freedesktop.systemd1.Manager", "ConfirmSpawn", bus_property_append_bool, "b", &m->confirm_spawn }, diff --git a/src/job.c b/src/job.c index ac3bb9d72..c219b0d18 100644 --- a/src/job.c +++ b/src/job.c @@ -478,9 +478,13 @@ int job_finish_and_invalidate(Job *j, bool success) { return 0; } + j->failed = !success; + log_debug("Job %s/%s finished, success=%s", j->unit->meta.id, job_type_to_string(j->type), yes_no(success)); - j->failed = !success; + if (j->failed) + j->manager->n_failed_jobs ++; + u = j->unit; t = j->type; job_free(j); diff --git a/src/manager.h b/src/manager.h index c404443f5..df87ed6b6 100644 --- a/src/manager.h +++ b/src/manager.h @@ -210,6 +210,7 @@ struct Manager { int n_deserializing; unsigned n_installed_jobs; + unsigned n_failed_jobs; }; int manager_new(ManagerRunningAs running_as, Manager **m);