* hotplug for klibc utils
@ 2004-02-27 13:02 Arnd Bergmann
2004-02-27 13:29 ` Hannes Reinecke
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Arnd Bergmann @ 2004-02-27 13:02 UTC (permalink / raw)
To: linux-hotplug
Several people have run into problems when attaching large disk arrays to
a mainframe because of running /sbin/hotplug as a bash script takes far
longer than the interval between hotplug events.
Attaching more than 300 devices at once will cause an out-of-memory
condition and the kernel starts killing random processes.
Running only udev instead of hotplug from the kernel is fast enough.
Christian Bornträger was so kind to reimplement the Gregs hotplug
shell script in C and verify that this solves the problem.
The shell version currently does:
> DIR="/etc/hotplug.d"
> for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do
> if [ -f $I ]; then test -x $I && $I $1 ; fi
> done
> exit 1;
Arnd <><
diff -urN klibc-0.115/utils/Makefile klibc-0.115-hotplug/utils/Makefile
--- klibc-0.115/utils/Makefile 2004-02-22 01:57:32.000000000 +0100
+++ klibc-0.115-hotplug/utils/Makefile 2004-02-27 11:00:40.000000000 +0100
@@ -6,7 +6,7 @@
CFLAGS = $(MAKEDEPS) $(OPTFLAGS) $(REQFLAGS) -W -Wall
LIBS = $(KLIBC) $(LIBGCC)
PROGS := chroot dd fstype mkdir mkfifo mount pivot_root umount \
- true false sleep ln
+ true false sleep ln hotplug
STATICPROGS := $(patsubst %,static/%,$(PROGS))
SHAREDPROGS := $(patsubst %,shared/%,$(PROGS))
LIBOBJS = file_mode.o
diff -urN klibc-0.115/utils/hotplug.c klibc-0.115-hotplug/utils/hotplug.c
--- klibc-0.115/utils/hotplug.c 1970-01-01 01:00:00.000000000 +0100
+++ klibc-0.115-hotplug/utils/hotplug.c 2004-02-27 11:00:28.000000000 +0100
@@ -0,0 +1,80 @@
+/*
+ * Hotplug Multiplexer
+ * Author(s) Christian Borntraeger <cborntra@de.ibm.com>
+ */
+
+#include <dirent.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#define HOTPLUGDIR "/etc/hotplug.d"
+#define SUFFIX ".hotplug"
+
+static inline void run_agent(char *name, char *parm)
+{
+ pid_t pid;
+
+ if (strlen(name) < sizeof (SUFFIX))
+ return;
+
+ if (strcmp(name + strlen(name) - sizeof (".hotplug") + 1, ".hotplug") != 0)
+ return;
+
+ pid = fork();
+
+ if (pid < 0) {
+ perror("fork");
+ return;
+ }
+
+ if (pid > 0){
+ wait(NULL);
+ return;
+ }
+
+ execlp(name, name, parm, NULL);
+ exit(1);
+}
+
+/*
+ * enters the given directory and execute the *.hotplug files
+ */
+static void execute_dir (char *dirname, char *parm)
+{
+ DIR *directory;
+ struct dirent *entry;
+ char filename[256];
+
+ directory = opendir(dirname);
+ if (!directory)
+ return;
+
+ while ((entry = readdir(directory))) {
+ snprintf(filename, sizeof (filename),
+ "%s%s", dirname, entry->d_name);
+ filename[sizeof (filename)-1] = '\0';
+ run_agent(filename, parm);
+ }
+
+ closedir(directory);
+}
+
+int main (int argc, char **argv)
+{
+ char dirname[256];
+
+ if (argc = 1)
+ return 0;
+
+ snprintf(dirname, sizeof (dirname), HOTPLUGDIR "/%s/", argv[1]);
+ dirname[sizeof (dirname)-1] = '\0';
+ execute_dir(dirname, argv[1]);
+
+ strcpy(dirname, HOTPLUGDIR "/default/");
+ execute_dir(dirname, argv[1]);
+ return 0;
+}
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id\x1356&alloc_id438&opÌk
_______________________________________________
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] 6+ messages in thread* Re: hotplug for klibc utils
2004-02-27 13:02 hotplug for klibc utils Arnd Bergmann
@ 2004-02-27 13:29 ` Hannes Reinecke
2004-02-27 13:53 ` Arnd Bergmann
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Hannes Reinecke @ 2004-02-27 13:29 UTC (permalink / raw)
To: linux-hotplug
Arnd Bergmann wrote:
> Several people have run into problems when attaching large disk arrays to
> a mainframe because of running /sbin/hotplug as a bash script takes far
> longer than the interval between hotplug events.
>
> Attaching more than 300 devices at once will cause an out-of-memory
> condition and the kernel starts killing random processes.
>
> Running only udev instead of hotplug from the kernel is fast enough.
>
> The shell version currently does:
>
>>DIR="/etc/hotplug.d"
>>for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do
>> if [ -f $I ]; then test -x $I && $I $1 ; fi
>>done
>>exit 1;
>
And so it does.
Just to double-check:
does this program also works for cases where the files in
/etc/hotplug.d/default
are scripts themselves?
Can't really see how this will help, since in that case we will have to
start bash anyway ... but what do I know ...
Cheers,
Hannes
--
Dr. Hannes Reinecke hare@suse.de
SuSE Linux AG S390 & zSeries
Maxfeldstraße 5 +49 911 74053 688
90409 Nürnberg http://www.suse.de
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id\x1356&alloc_id438&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] 6+ messages in thread* Re: hotplug for klibc utils
2004-02-27 13:02 hotplug for klibc utils Arnd Bergmann
2004-02-27 13:29 ` Hannes Reinecke
@ 2004-02-27 13:53 ` Arnd Bergmann
2004-02-27 14:20 ` Hannes Reinecke
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Arnd Bergmann @ 2004-02-27 13:53 UTC (permalink / raw)
To: linux-hotplug
On Friday 27 February 2004 14:29, Hannes Reinecke wrote:
> Arnd Bergmann wrote:
>
> Just to double-check:
> does this program also works for cases where the files in
> /etc/hotplug.d/default
> are scripts themselves?
> Can't really see how this will help, since in that case we will have to
> start bash anyway ... but what do I know ...
No, if you have other scripts in /etc/hotplug.d/default, it does not
eliminate the problem, although it will at least help a bit since hotplug
will go through the bash startup less often.
What scripts do you need in /etc/hotplug.d/default?
Arnd <><
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id\x1356&alloc_id438&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] 6+ messages in thread* Re: hotplug for klibc utils
2004-02-27 13:02 hotplug for klibc utils Arnd Bergmann
2004-02-27 13:29 ` Hannes Reinecke
2004-02-27 13:53 ` Arnd Bergmann
@ 2004-02-27 14:20 ` Hannes Reinecke
2004-02-27 16:52 ` Arnd Bergmann
2004-02-28 0:19 ` Greg KH
4 siblings, 0 replies; 6+ messages in thread
From: Hannes Reinecke @ 2004-02-27 14:20 UTC (permalink / raw)
To: linux-hotplug
Arnd Bergmann wrote:
> On Friday 27 February 2004 14:29, Hannes Reinecke wrote:
>
>>Arnd Bergmann wrote:
>>
>>Just to double-check:
>>does this program also works for cases where the files in
>>/etc/hotplug.d/default
>>are scripts themselves?
>>Can't really see how this will help, since in that case we will have to
>>start bash anyway ... but what do I know ...
>
>
> No, if you have other scripts in /etc/hotplug.d/default, it does not
> eliminate the problem, although it will at least help a bit since hotplug
> will go through the bash startup less often.
>
> What scripts do you need in /etc/hotplug.d/default?
>
Well, it's not quite clever to call udev by default, as we have devices
which needs to be initialized first, e.g our infamous zfcp adapter. If
we are to configure this with hotplug events, we basically have to
resolve to use scripts.
Hmm. But maybe we can be a bit more clever; after all, the default
script in /etc/hotplug.d/default just calls the appropriate agent. If we
were to implement this behaviour in the multiplexer, then we can use as
a block agent 'udev' and scripts for everything else, always assuming
that the other events are not as numerous.
ccw events aside.
Cheers,
Hannes
--
Dr. Hannes Reinecke hare@suse.de
SuSE Linux AG S390 & zSeries
Maxfeldstraße 5 +49 911 74053 688
90409 Nürnberg http://www.suse.de
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id\x1356&alloc_id438&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] 6+ messages in thread
* Re: hotplug for klibc utils
2004-02-27 13:02 hotplug for klibc utils Arnd Bergmann
` (2 preceding siblings ...)
2004-02-27 14:20 ` Hannes Reinecke
@ 2004-02-27 16:52 ` Arnd Bergmann
2004-02-28 0:19 ` Greg KH
4 siblings, 0 replies; 6+ messages in thread
From: Arnd Bergmann @ 2004-02-27 16:52 UTC (permalink / raw)
To: linux-hotplug
On Friday 27 February 2004 15:20, Hannes Reinecke wrote:
> Hmm. But maybe we can be a bit more clever; after all, the default
> script in /etc/hotplug.d/default just calls the appropriate agent. If we
> were to implement this behaviour in the multiplexer, then we can use as
> a block agent 'udev' and scripts for everything else, always assuming
> that the other events are not as numerous.
IFAIR, the current /etc/hotplug.d/default/default.hotplug is simply
what used to be /sbin/hotplug before it did any multiplexing.
It should be easy to just convert the /etc/hotplug/*.agent scripts
to /etc/hotplug.d/*/*.hotplug. At least for new distributions that
don't need to provide support for /etc/hotplug/*.agent, you could
simply leave out /etc/hotplug.d/default/default.hotplug.
Arnd <><
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id\x1356&alloc_id438&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] 6+ messages in thread* Re: hotplug for klibc utils
2004-02-27 13:02 hotplug for klibc utils Arnd Bergmann
` (3 preceding siblings ...)
2004-02-27 16:52 ` Arnd Bergmann
@ 2004-02-28 0:19 ` Greg KH
4 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2004-02-28 0:19 UTC (permalink / raw)
To: linux-hotplug
On Fri, Feb 27, 2004 at 02:29:20PM +0100, Hannes Reinecke wrote:
> Arnd Bergmann wrote:
> >Several people have run into problems when attaching large disk arrays to
> >a mainframe because of running /sbin/hotplug as a bash script takes far
> >longer than the interval between hotplug events.
> >
> >Attaching more than 300 devices at once will cause an out-of-memory
> >condition and the kernel starts killing random processes.
> >
> >Running only udev instead of hotplug from the kernel is fast enough.
> >
> >The shell version currently does:
> >
> >>DIR="/etc/hotplug.d"
> >>for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do
> >> if [ -f $I ]; then test -x $I && $I $1 ; fi
> >>done
> >>exit 1;
> >
> And so it does.
>
> Just to double-check:
> does this program also works for cases where the files in
> /etc/hotplug.d/default
> are scripts themselves?
Then use the dietHotplug package to handle the autoloading of modules.
Then you do not have any shell scripts in the picture at all.
Hope this helps,
greg k-h
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id\x1356&alloc_id438&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] 6+ messages in thread
end of thread, other threads:[~2004-02-28 0:19 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-27 13:02 hotplug for klibc utils Arnd Bergmann
2004-02-27 13:29 ` Hannes Reinecke
2004-02-27 13:53 ` Arnd Bergmann
2004-02-27 14:20 ` Hannes Reinecke
2004-02-27 16:52 ` Arnd Bergmann
2004-02-28 0:19 ` 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).