udev, PROGRAM and races...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi...

I (well, the distro I use) has a little problem with creation of links
for CD-ROM devices.

For example, in my box, hda is a DVDRW and hdd is a DVD reader.
I think I should have something like
cdrom0 -> hda
cdrom1 -> hdd
dvd0 -> hda
dvd1 -> hdd
cdrw0 -> hda
dvdrw0 -> hda

(with optional cdrom and dvd links to the default one, say just the
first).

This is done with rule like:

SUBSYSTEM=="block", ACTION=="add", ENV{ID_CDROM}=="?*", PROGRAM="/lib/udev/udev_cdrom_helper", SYMLINK+="%c"

This helper tries to get the next free %d index to create cdrom%d, for
example.
The problem is that the launch of both helpers for hda and add seems to be done
in parallel and the helper gets racy, so both cdroms get id 0, and the last
that comes owns it:

helper instance for hda        helper instance for hdd
Does cdrom0 exist ? No
                               Does cdrom0 exist ? No
ln -sf hda cdrom0
                               ln -sf hdd cdrom0

????

Is there any way to serialize the calls to 'PROGRAM'. I tried something like:

SUBSYSTEM=="block", ACTION=="add", ENV{ID_CDROM}=="?*",
PROGRAM="/usr/bin/flock /sys/block /lib/udev/udev_cdrom_helper", SYMLINK+="%c"

But looks a lot ugly.

Any standard way to do this ?
Can I still use %e, or is it really really deprecated ? this was easy:

ENV{ID_CDROM_CD_RW}=="?*",  SYMLINK+="burner%e", MODE="0666", GROUP="cdwriter"
ENV{ID_CDROM_DVD_R}=="?*",  SYMLINK+="burner%e", MODE="0666", GROUP="cdwriter"

TIA

--
J.A. Magallon <jamagallon()able!es>     \               Software is like sex:
werewolf!able!es                         \         It's better when it's free
Mandriva Linux release 2006.1 (Cooker) for i586
Linux 2.6.16-jam5 (gcc 4.1.1 20060330 (prerelease)) #1 SMP PREEMPT Tue

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux