All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: put "device" symlink into hotplug environment?
Date: Thu, 04 Nov 2004 00:12:55 +0000	[thread overview]
Message-ID: <20041104001255.GA17646@vrfy.org> (raw)
In-Reply-To: <20041103233959.GA17546@vrfy.org>

[-- Attachment #1: Type: text/plain, Size: 1558 bytes --]

On Thu, Nov 04, 2004 at 12:39:59AM +0100, Kay Sievers wrote:
> Hi Greg,
> what if we put the sysfs path of the physical device into the hotplug
> environment? All virtual devices will not have the key. This would solve
> all the wait for the "device" link issues and we can throw away one of
> the exception lists as the kernel will tell us if it is going to create
> a symlink.
> 
> I get hotplug events like this now:
> 
> physical backed device:
>   ACTION=add
>   SUBSYSTEM=net
>   DEVPATH=/class/net/eth0
>   DEVSYSDEV=/devices/pci0000:00/0000:00:1e.0/0000:02:01.0
>   INTERFACE=eth0
>   SEQNUM=966
>   PATH=/sbin:/bin:/usr/sbin:/usr/bin
>   HOME=/
> 
> virtual:
>   ACTION=add
>   SUBSYSTEM=net
>   DEVPATH=/class/net/dummy0
>   INTERFACE=dummy0
>   SEQNUM=977
>   PATH=/sbin:/bin:/usr/sbin:/usr/bin
>   HOME=/

We can also pass the BUS together with the class device. The search
for the BUS value is an expensive tasks in udev, cause we need to
reverse lookup the whole /sys/bus directory to find the symlink to our
physical device.

This is my pci network card again:
  ACTION=add
  SUBSYSTEM=net
  DEVPATH=/class/net/eth0
  DEVPHYSDEV=/devices/pci0000:00/0000:00:1e.0/0000:02:01.0
  DEVBUS=pci
  INTERFACE=eth0
  SEQNUM=827
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  HOME=/

And an USB-mouse:
  ACTION=add
  SUBSYSTEM=input
  DEVPATH=/class/input/mouse2
  DEVPHYSDEV=/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0
  DEVBUS=usb
  SEQNUM=1001
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  HOME=/

Hmm, another exception list in wait_for_sysfs killed. :)
Kay


[-- Attachment #2: kernel-DEVSYSDEV-02.patch --]
[-- Type: text/plain, Size: 1197 bytes --]

===== drivers/base/class.c 1.54 vs edited =====
--- 1.54/drivers/base/class.c	2004-10-08 20:32:52 +02:00
+++ edited/drivers/base/class.c	2004-11-04 00:54:26 +01:00
@@ -283,8 +283,33 @@ static int class_hotplug(struct kset *ks
 {
 	struct class_device *class_dev = to_class_dev(kobj);
 	int retval = 0;
+	int i = 0;
+	int length = 0;
 
 	pr_debug("%s - name = %s\n", __FUNCTION__, class_dev->class_id);
+
+	if (class_dev->dev) {
+		/* add physical device backing this class to environment */
+		struct device *dev = class_dev->dev;
+		char *path = kobject_get_path(&dev->kobj, GFP_KERNEL);
+
+		add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size,
+				    &length, "DEVPHYSDEV=%s", path);
+		kfree(path);
+
+		if (dev->bus)
+			add_hotplug_env_var(envp, num_envp, &i,
+					    buffer, buffer_size, &length,
+					    "DEVBUS=%s", dev->bus->name);
+
+		/* terminate, set to next free slot, shrink available space */
+		envp[i] = NULL;
+		envp = &envp[i];
+		num_envp -= i;
+		buffer = &buffer[length];
+		buffer_size -= length;
+	}
+
 	if (class_dev->class->hotplug) {
 		/* have the bus specific function add its stuff */
 		retval = class_dev->class->hotplug (class_dev, envp, num_envp,

      reply	other threads:[~2004-11-04  0:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-03 23:39 put "device" symlink into hotplug environment? Kay Sievers
2004-11-04  0:12 ` Kay Sievers [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20041104001255.GA17646@vrfy.org \
    --to=kay.sievers@vrfy.org \
    --cc=linux-hotplug@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.