+ dbus_error_init(&error);
+
+ if (!u->service) {
+ char lu[DECIMAL_STR_MAX(unsigned long) + 1];
+ sprintf(lu, "%lu", (unsigned long) u->uid);
+
+ u->service = unit_name_build("user", lu, ".service");
+ if (!u->service)
+ return log_oom();
+
+ r = hashmap_put(u->manager->user_units, u->service, u);
+ if (r < 0)
+ log_warning("Failed to create mapping between service and user");
+ }
+
+ r = manager_start_unit(u->manager, u->service, &error, &job);
+ if (r < 0) {
+ log_error("Failed to start user service: %s", bus_error(&error, r));
+ dbus_error_free(&error);
+ }
+
+ free(u->service_job);
+ u->service_job = job;