UbuntuDevel/UdevRaces

Status

Introduction

Udev is the new way of handling device hot-plugging and cold-plugging. In some cases, udev and the regular init script system works together in surprising and non-deterministic ways. This specification seeks to describe those race conditions and a strategy to eliminate them. dev.d scripts are called when the hardware becomes available and are responsible for starting the relevant services. (Alsa would be the service to start when a sound card becomes available)

Rationale

If the race conditions are not handled correctly, the boot process will be non-deterministic. Problems such as longer boot times or failure to start services may be the result. By using a multiplexer, udevsend and udevd (described below), we can get rid of the race conditions. Not moving towards using dev.d can cause non-deterministic boots due to hardware not being available. This can be mitigated to a certain extent by having the init scripts check for the hardware and wait (with a timeout). However, this will give new problems such as ntpdate not running if the DHCP client takes more than about five seconds to obtain a lease.

Scope and Use Cases

Implementation Plan

Data Preservation and Migration

dev.d scripts exist outside the runlevel concept, so a user wanting to have a runlevel without X would not be able to express this any longer.

Packages Affected

User Interface Requirements

Handle the case of multiple dev.d scripts wanting to present information to the user at the same time.

Outstanding Issues

UDU BOF Agenda

UDU Pre-Work

UbuntuDownUnder/BOFs/UdevRaces (last edited 2008-08-06 16:41:32 by localhost)