Re: problem with devfsd compilation

Andris Pavenis (pavenis@latnet.lv)
Thu, 1 Feb 2001 21:26:51 +0200


>> I am trying to compile devfsd on my system running RedHat linux 7.0
>> (kernel 2.2.16-22). I get the error "RTLD_NEXT" undefined. I am not
>> sure where this symbol is defined. Is there anything that I am missing
>> on my system.
>
>
>Sounds like a missing include in the devfsd code. That comes from
>dlfcn.h.

Following small patch fixes this and workarounds devfs related problem
which appeared in 2.4.0-test12-pre8:
when I'm logging out, devfsd tries to state /dev/vcc/[1-6] but sometimes
fails perhaps due to some race in kernel. As result devfsd quits with
error message. Retrying to state node suceeds on next attempt.
I don't know why it happens, but I guess it's related to
change in drivers/char/tty_io.c between test12-pre7 and pre8
(change to use flush_scheduled_tasks())

Hint: it seems to be easier to reproduce on slower machine (it happens seldom
on PIII-700, but very often on P200MMX)

Andris

--- devfsd/devfsd.c~1 Mon Jul 3 22:43:07 2000
+++ devfsd/devfsd.c Fri Jan 12 13:19:33 2001
@@ -189,6 +189,7 @@
#include <signal.h>
#include <regex.h>
#include <errno.h>
+#define __USE_GNU
#include <dlfcn.h>
#include <rpcsvc/ypclnt.h>
#include <rpcsvc/yp_prot.h>
@@ -918,15 +919,29 @@
[RETURNS] Nothing.
*/
{
+ int tries=0;
mode_t new_mode;
struct stat statbuf;

+Retry:
if (lstat (info->devname, &statbuf) != 0)
{
- SYSLOG (LOG_ERR, "error stat(2)ing: \"%s\"\t%s\n",
- info->devname, ERRSTRING);
- SYSLOG (LOG_ERR, "exiting\n");
- exit (1);
+ if (tries<10)
+ {
+ tries++;
+ SYSLOG (LOG_ERR, "error stat(2)ing: \"%s\"\t%s\n",
+ info->devname, ERRSTRING);
+ SYSLOG (LOG_ERR, "retrying (attempt %d) ...\n",tries);
+ usleep (1000); /* Let's sleep a bit */
+ goto Retry;
+ }
+ else
+ {
+ SYSLOG (LOG_ERR, "error stat(2)ing: \"%s\"\t%s\n",
+ info->devname, ERRSTRING);
+ SYSLOG (LOG_ERR, "exiting\n");
+ exit (1);
+ }
}
new_mode = (statbuf.st_mode & S_IFMT) |
(entry->u.permissions.mode & ~S_IFMT);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/