From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Fri, 23 Mar 2007 16:53:48 +0000 Subject: Re: [PATCH] udevsettle should read udev not kernel seqnum first Message-Id: <1174668828.4550.13.camel@lov.localdomain> List-Id: References: <20070323144655.GD30083@ojjektum.uhulinux.hu> In-Reply-To: <20070323144655.GD30083@ojjektum.uhulinux.hu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: linux-hotplug@vger.kernel.org On Fri, 2007-03-23 at 17:36 +0100, Pozsar Balazs wrote: > On Fri, Mar 23, 2007 at 05:26:48PM +0100, Kay Sievers wrote: > > On 3/23/07, Pozsar Balazs wrote: > > >I think that the order of reading the kernel and udev seqnum files > > >should be: first udev, then kernel, because with the current code > > >there's a chance of exiting too early, for example in the following > > >scenario: > > > 1. kernel seqnum is X, udevsettle reads it > > > 2. udev finishes processing the event X, which generates new events > > > (for example a modprobe), udev seqnum becomes X > > > 3. udevsettle reads the udev seqnum which is X now, so it exits > > > 4. at least another event comes which should have been waited for > >=20 > > Makes sense. I've applied this. > >=20 > > Note, that the kernel interaction is async, and the device creation in > > the kernel is threaded, it can always happen that there is currently > > no pending uevent in the kernel, even when udev has triggered a device > > creation, an it just happens shortly after udevsettle "thinks", that > > there is nothing left to wait for. >=20 > And in this case, how case one wait until the kernel and udev really=20 > settles down? You can't. In some cases it's possible to watch for kernel-treads, like the usb-storage device probing, but in a lot of cases it's just impossible. And there is absolutely no guarantee, that these threads will always have the same name, because that can change with every kernel release. In cases like boot-up, you better wait for the device that you expect to show up, instead of "all" devices. If your kernel command line specifies: root=3D/dev/disk/by-id/scsi-SATA_ST910021AS_3MH0Y3KF-part1 you just wait until that device is created. In the real root, you may want to way for all mandatory devices listed in fstab, instead of assuming that there is a constant event flow of events you can wait for. Kay ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=DEVD= EV _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel