SET_FLAG(flags, SD_LOGIND_SOFT_REBOOT, a == ACTION_SOFT_REBOOT);
r = bus_call_method(bus, bus_login_mgr, method_with_flags, &error, NULL, "t", flags);
+ if (r < 0 && FLAGS_SET(flags, SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP) &&
+ sd_bus_error_has_name(&error, SD_BUS_ERROR_INVALID_ARGS)) {
+ sd_bus_error_free(&error);
+ r = bus_call_method(
+ bus,
+ bus_login_mgr,
+ method_with_flags,
+ &error,
+ NULL,
+ "t",
+ flags & ~SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP);
+ }
if (r >= 0)
return 0;
if (!sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD))