linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Olaf Hering <olh@suse.de>
To: linux-hotplug@vger.kernel.org
Subject: [PATCH] queue usb hotplug events
Date: Sat, 07 Jun 2003 11:43:14 +0000	[thread overview]
Message-ID: <marc-linux-hotplug-105498661302046@msgid-missing> (raw)

Hi,

there is a hardcoded sleep 3 in the usb.agent. But this is wrong,
because the kernel runs all hotplug events at once for a new hub. The
result is that every event still runs in parallel, just 3 seconds later.

This patch implements an userland fifo.

touch an unique file
wait one second to let things settle
build a list with lockfiles, oldest last
grab the pid of the oldest agent
if this pid match the running agent, proceed
if all lockfiles are gone, proceed as well, provides a way to workaround
a hanging event
otherwise wait a second and try again


Index: etc/hotplug/usb.agent
=================================--- etc/hotplug/usb.agent	(revision 13)
+++ etc/hotplug/usb.agent	(working copy)
@@ -367,7 +367,15 @@
     # with slow HID devices and "usbmodules".
     # starting with 2.5, all hcds must queue control traffic.
     if [ "$DEVPATH" = "" ]; then
-	sleep 3
+	touch "${REMOVER}.queue.$$"
+    	until [ `sleep 1` ] ; do
+		lockfiles=`ls -t /var/run/usb/*.queue.* 2>/dev/null`
+		pid=${lockfiles##*.}
+		debug_mesg $pid $lockfiles
+		test "$pid" = "$$" && { debug_mesg pid $$ proceeds ; break; }
+		test "$lockfiles" = "" && { debug_mesg all lockfiles gone ; break; }
+		debug_mesg wait 1 second for pid $pid
+	done
     fi
 
     usb_convert_vars
@@ -426,6 +434,10 @@
         /sbin/devlabel restart
     fi
 
+    if [ -e "${REMOVER}.queue.$$" ]; then
+	debug_mesg pid $$ done
+	rm -f "${REMOVER}.queue.$$"
+    fi
     ;;
 
 remove)


-- 
USB is for mice, FireWire is for men!


-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
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

             reply	other threads:[~2003-06-07 11:43 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-07 11:43 Olaf Hering [this message]
2003-06-07 19:22 ` [PATCH] queue usb hotplug events David Brownell
2003-06-07 19:25 ` Olaf Hering
2003-06-07 19:34 ` David Brownell
2003-06-07 19:34 ` Olaf Hering
2003-06-08  7:23 ` Olaf Hering
2003-06-08 19:10 ` David Brownell
2003-06-09 11:34 ` Olaf Hering
2003-06-09 15:25 ` Olaf Hering

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=marc-linux-hotplug-105498661302046@msgid-missing \
    --to=olh@suse.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).