udev remove event not sent untill the device is closed

From: Thomas Stewart
Date: Mon Sep 27 2004 - 16:57:38 EST


Hi,

I'm running 2.6.8.1 with udev-031. I have a usb2serial converter which has a
udev rule to give it a persistent name in my dev tree. I want to run a script
when the converter is attached, and another when the converter is removed.

I tried both the /etc/hotplug.d and /etc/dev.d methods to do this (I like the
dev.d method better as I can use my persistent device name). Unfortunately I
ran into problems.

I'm catching the tty event as it sets $DEVPATH to something useful
(e.g. /devices/sys/class/tty/ttyUSB0). And then running a different script
depending on $ACTION.

I made a short script to do this, and put it in /etc/dev.d/default/ttyUSB.dev:
#!/bin/sh
test "$1" != "tty" && exit
test "$ACTION" == "add" && /usr/local/bin/on
test "$ACTION" == "remove" && /usr/local/bin/off

(I removed the various error checking that actually makes sure the tty event
in question was actually the serial converter, and not some other device.)

This works fine, I can add and remove the converter to my hearts content and
both scripts run accordingly.

However, if I attach the device, open it with say a "cat /dev/ttyUSB0" and
then remove the device. No tty events get sent untill I kill the cat.

I want to be able to run the script when I remove the converter. (I actually
want the remove script to kill the process that has the device open.)

I found it hard to use the usb events because when they run, $DEVPATH no
longer exists. Which means I have no idea which converter was removed.

(Can replies be CC'ed to me as I'm not subscribed. Thanks)

Regards
--
Tom

PGP Fingerprint [DCCD 7DCB A74A 3E3B 60D5 DF4C FC1D 1ECA 68A7 0C48]
PGP Publickey [http://www.stewarts.org.uk/public-key.asc]
PGP ID [0x68A70C48]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/