mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-15 12:28:06 +02:00
team: back off a little when re-spawning teamd
It might have dropped off for a reason (e.g. D-Bus itself has gone away, because the system is transitioning from initrd to real root). Give things a few seconds to cool off, just to be nice. That shouldn't be a big deal, the link should still be operational.
This commit is contained in:
parent
7dccb5f548
commit
7a8cfd1467
1 changed files with 18 additions and 2 deletions
|
|
@ -39,6 +39,7 @@ typedef struct {
|
|||
guint teamd_process_watch;
|
||||
guint teamd_timeout;
|
||||
guint teamd_read_timeout;
|
||||
guint teamd_backoff;
|
||||
guint teamd_dbus_watch;
|
||||
bool kill_in_progress : 1;
|
||||
GFileMonitor *usock_monitor;
|
||||
|
|
@ -312,6 +313,7 @@ teamd_cleanup(NMDeviceTeam *self, gboolean free_tdc)
|
|||
nm_clear_g_source(&priv->teamd_process_watch);
|
||||
nm_clear_g_source(&priv->teamd_timeout);
|
||||
nm_clear_g_source(&priv->teamd_read_timeout);
|
||||
nm_clear_g_source(&priv->teamd_backoff);
|
||||
|
||||
if (priv->teamd_pid > 0) {
|
||||
priv->kill_in_progress = TRUE;
|
||||
|
|
@ -406,9 +408,10 @@ teamd_ready(NMDeviceTeam *self)
|
|||
nm_device_activate_schedule_stage1_device_prepare(device, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
teamd_gone(NMDeviceTeam *self)
|
||||
static gboolean
|
||||
teamd_backoff_cb(gpointer user_data)
|
||||
{
|
||||
NMDeviceTeam *self = NM_DEVICE_TEAM(user_data);
|
||||
NMDevice *device = NM_DEVICE(self);
|
||||
NMDeviceState state;
|
||||
|
||||
|
|
@ -423,6 +426,19 @@ teamd_gone(NMDeviceTeam *self)
|
|||
NM_DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
teamd_gone(NMDeviceTeam *self)
|
||||
{
|
||||
/* Wait a little before respawning. Something unexpected has happened
|
||||
* causing teamd to disappear and we need to be careful. Maybe a clumsy
|
||||
* supervisor is just killing off all processes and it's not too nice
|
||||
* if we respawn too quickly. */
|
||||
NM_DEVICE_TEAM_GET_PRIVATE(self)->teamd_backoff =
|
||||
g_timeout_add_seconds(5, teamd_backoff_cb, self);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue