linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* udevsend fallback
@ 2004-05-11 11:16 Kay Sievers
  2004-05-11 12:21 ` Harald Hoyer
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Kay Sievers @ 2004-05-11 11:16 UTC (permalink / raw)
  To: linux-hotplug

Hi,
the execution of udev depends on the proper fuction of udevd, the
serializing daemon. If we can't connect to udevd within a 20 second we
give up and the request to create a node is lost. Hope this never happens,
but a broken udevd may prevent udev from working.

What do you think? Should we call the udev binary directly from udevsend
instead of discarding the event? This way we would create the node, regardless
of the state of udevd. It would be 20 seconds later and maybe not in the right
sequence order - but the node will propably be there.

Does it sound sane? What do you think?

thanks,
Kay


-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to 
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
@ 2004-05-11 12:21 ` Harald Hoyer
  2004-05-11 23:54 ` Greg KH
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Harald Hoyer @ 2004-05-11 12:21 UTC (permalink / raw)
  To: linux-hotplug

Kay Sievers wrote:
> Hi,
> the execution of udev depends on the proper fuction of udevd, the
> serializing daemon. If we can't connect to udevd within a 20 second we
> give up and the request to create a node is lost. Hope this never happens,
> but a broken udevd may prevent udev from working.
> 
> What do you think? Should we call the udev binary directly from udevsend
> instead of discarding the event? This way we would create the node, regardless
> of the state of udevd. It would be 20 seconds later and maybe not in the right
> sequence order - but the node will propably be there.
> 
> Does it sound sane? What do you think?
> 
> thanks,
> Kay

Directly is better than nothing...

my 2¢,
Harald


-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to 
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
  2004-05-11 12:21 ` Harald Hoyer
@ 2004-05-11 23:54 ` Greg KH
  2004-05-13  7:51 ` Harald Hoyer
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2004-05-11 23:54 UTC (permalink / raw)
  To: linux-hotplug

On Tue, May 11, 2004 at 01:16:41PM +0200, Kay Sievers wrote:
> Hi,
> the execution of udev depends on the proper fuction of udevd, the
> serializing daemon. If we can't connect to udevd within a 20 second we
> give up and the request to create a node is lost. Hope this never happens,
> but a broken udevd may prevent udev from working.
> 
> What do you think? Should we call the udev binary directly from udevsend
> instead of discarding the event? This way we would create the node, regardless
> of the state of udevd. It would be 20 seconds later and maybe not in the right
> sequence order - but the node will propably be there.
> 
> Does it sound sane? What do you think?

That sounds like a good "failsafe" thing to do.

thanks,

greg k-h


-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to 
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
  2004-05-11 12:21 ` Harald Hoyer
  2004-05-11 23:54 ` Greg KH
@ 2004-05-13  7:51 ` Harald Hoyer
  2004-05-13 10:10 ` Kay Sievers
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Harald Hoyer @ 2004-05-13  7:51 UTC (permalink / raw)
  To: linux-hotplug

Btw, how about exit()ing udevd after, say half an hour in idle mode?


-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id%62&alloc_ida84&op=click
_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
                   ` (2 preceding siblings ...)
  2004-05-13  7:51 ` Harald Hoyer
@ 2004-05-13 10:10 ` Kay Sievers
  2004-05-13 21:03 ` Greg KH
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kay Sievers @ 2004-05-13 10:10 UTC (permalink / raw)
  To: linux-hotplug

On Thu, May 13, 2004 at 09:51:15AM +0200, Harald Hoyer wrote:
> Btw, how about exit()ing udevd after, say half an hour in idle mode?

We had this already, but I've removed it. We can't know the first
sequence number after a udevd exit() - so we need to delay every first
event until the timeout happens.
So every first event _after_ any exit will be delayed, which is not
nice. Any better idea?

thanks,
Kay


-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id%62&alloc_ida84&op=click
_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
                   ` (3 preceding siblings ...)
  2004-05-13 10:10 ` Kay Sievers
@ 2004-05-13 21:03 ` Greg KH
  2004-05-14 11:22 ` Kay Sievers
  2004-05-14 22:21 ` Greg KH
  6 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2004-05-13 21:03 UTC (permalink / raw)
  To: linux-hotplug

On Thu, May 13, 2004 at 09:51:15AM +0200, Harald Hoyer wrote:
> Btw, how about exit()ing udevd after, say half an hour in idle mode?

Why?  It takes almost _no_ system resources if built with klibc (I think
2 pages of memory last time I looked).  Also, there is a long delay the
next time it gets launched, which is a bad thing from a user
perspective.

thanks,

greg k-h


-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id%62&alloc_ida84&op=click
_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
                   ` (4 preceding siblings ...)
  2004-05-13 21:03 ` Greg KH
@ 2004-05-14 11:22 ` Kay Sievers
  2004-05-14 22:21 ` Greg KH
  6 siblings, 0 replies; 8+ messages in thread
From: Kay Sievers @ 2004-05-14 11:22 UTC (permalink / raw)
  To: linux-hotplug

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

On Tue, May 11, 2004 at 04:54:44PM -0700, Greg KH wrote:
> On Tue, May 11, 2004 at 01:16:41PM +0200, Kay Sievers wrote:
> > Hi,
> > the execution of udev depends on the proper fuction of udevd, the
> > serializing daemon. If we can't connect to udevd within a 20 second we
> > give up and the request to create a node is lost. Hope this never happens,
> > but a broken udevd may prevent udev from working.
> > 
> > What do you think? Should we call the udev binary directly from udevsend
> > instead of discarding the event? This way we would create the node, regardless
> > of the state of udevd. It would be 20 seconds later and maybe not in the right
> > sequence order - but the node will propably be there.
> > 
> > Does it sound sane? What do you think?
> 
> That sounds like a good "failsafe" thing to do.

Here we go:

Add a fallback udev call to udevsend. If udev is unable to send the
event to udevd, we call the udevd binary instead of do nothing and exit.

thanks,
Kay

[-- Attachment #2: 01-udevsend-fallback.patch --]
[-- Type: text/plain, Size: 1931 bytes --]

===== udevsend.c 1.29 vs edited =====
--- 1.29/udevsend.c	Sun Mar 28 01:08:58 2004
+++ edited/udevsend.c	Fri May 14 12:55:50 2004
@@ -98,6 +98,26 @@
 	return 0;
 }
 
+static void run_udev(const char *subsystem)
+{
+	pid_t pid;
+
+	pid = fork();
+	switch (pid) {
+	case 0:
+		/* child */
+		execl(UDEV_BIN, "udev", subsystem, NULL);
+		dbg("exec of child failed");
+		exit(1);
+		break;
+	case -1:
+		dbg("fork of child failed");
+		break;
+	default:
+		wait(NULL);
+	}
+}
+
 int main(int argc, char* argv[])
 {
 	struct hotplug_msg msg;
@@ -109,14 +129,12 @@
 	int retval = 1;
 	int loop;
 	struct timespec tspec;
-	int sock;
+	int sock = -1;
 	struct sockaddr_un saddr;
 	socklen_t addrlen;
 	int started_daemon = 0;
 
-#ifdef DEBUG
 	init_logging("udevsend");
-#endif
 	dbg("version %s", UDEV_VERSION);
 
 	subsystem = get_subsystem(argv[1]);
@@ -150,7 +168,7 @@
 	sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
 	if (sock == -1) {
 		dbg("error getting socket");
-		goto exit;
+		goto fallback;
 	}
 
 	memset(&saddr, 0x00, sizeof(struct sockaddr_un));
@@ -168,22 +186,21 @@
 				(struct sockaddr *)&saddr, addrlen);
 		if (retval != -1) {
 			retval = 0;
-			goto close_and_exit;
+			goto exit;
 		}
-		
+
 		if (errno != ECONNREFUSED) {
 			dbg("error sending message");
-			goto close_and_exit;
+			goto fallback;
 		}
-		
+
 		if (!started_daemon) {
-			dbg("connect failed, try starting daemon...");
+			info("starting udevd daemon");
 			retval = start_daemon();
 			if (retval) {
-				dbg("error starting daemon");
-				goto exit;
+				info("error starting daemon");
+				goto fallback;
 			}
-			
 			dbg("daemon started");
 			started_daemon = 1;
 		} else {
@@ -193,9 +210,14 @@
 			nanosleep(&tspec, NULL);
 		}
 	}
-	
-close_and_exit:
-	close(sock);
+
+fallback:
+	info("unable to connect to event daemon, try to call udev directly");
+	run_udev(subsystem);
+
 exit:
+	if (sock != -1)
+		close(sock);
+
 	return retval;
 }

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udevsend fallback
  2004-05-11 11:16 udevsend fallback Kay Sievers
                   ` (5 preceding siblings ...)
  2004-05-14 11:22 ` Kay Sievers
@ 2004-05-14 22:21 ` Greg KH
  6 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2004-05-14 22:21 UTC (permalink / raw)
  To: linux-hotplug

On Fri, May 14, 2004 at 01:22:06PM +0200, Kay Sievers wrote:
> On Tue, May 11, 2004 at 04:54:44PM -0700, Greg KH wrote:
> > On Tue, May 11, 2004 at 01:16:41PM +0200, Kay Sievers wrote:
> > > Hi,
> > > the execution of udev depends on the proper fuction of udevd, the
> > > serializing daemon. If we can't connect to udevd within a 20 second we
> > > give up and the request to create a node is lost. Hope this never happens,
> > > but a broken udevd may prevent udev from working.
> > > 
> > > What do you think? Should we call the udev binary directly from udevsend
> > > instead of discarding the event? This way we would create the node, regardless
> > > of the state of udevd. It would be 20 seconds later and maybe not in the right
> > > sequence order - but the node will propably be there.
> > > 
> > > Does it sound sane? What do you think?
> > 
> > That sounds like a good "failsafe" thing to do.
> 
> Here we go:
> 
> Add a fallback udev call to udevsend. If udev is unable to send the
> event to udevd, we call the udevd binary instead of do nothing and exit.

Applied, thanks.

greg k-h


-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id%62&alloc_ida84&op=click
_______________________________________________
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

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2004-05-14 22:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-11 11:16 udevsend fallback Kay Sievers
2004-05-11 12:21 ` Harald Hoyer
2004-05-11 23:54 ` Greg KH
2004-05-13  7:51 ` Harald Hoyer
2004-05-13 10:10 ` Kay Sievers
2004-05-13 21:03 ` Greg KH
2004-05-14 11:22 ` Kay Sievers
2004-05-14 22:21 ` Greg KH

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).