In message <[EMAIL PROTECTED]>, Bruce Evans writes: > >I don't know how open() of a disk device can be interrupted by a signal >in practice. Most disk operations don't check for signals.
Does the PCATCH tsleep in diskopen() that I mentioned seem a likely candidate? Anyway, below is a simple program that reproduces the EINTR error fairly reliably for me when run on disk devices. Ian #include <sys/types.h> #include <err.h> #include <fcntl.h> #include <signal.h> #include <unistd.h> void handler(int sig) { } int main(int argc, char **argv) { int fd, i; if (argc < 2) errx(1, "Usage: %s device", argv[0]); fork(); fork(); fork(); fork(); signal(SIGUSR1, handler); sleep(1); for (i = 0; i < 200; i++) { killpg(0, SIGUSR1); if ((fd = open(argv[1], O_RDONLY)) < 0) err(1, "%s", argv[1]); close(fd); } return 0; } To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message