--- drivers/scsi/scsi_error.c Tue Dec 24 09:59:30 2002 +++ /home/wriede/develop/scsi_error.c Wed Jan 1 15:21:46 2003 @@ -52,8 +52,12 @@ * go to single-user mode. For that matter, init also sends SIGKILL, * so we mustn't enable that one either. We use SIGHUP instead. Other * options would be SIGPWR, I suppose. + * + * Changed behavior 1/1/2003 - it turns out, that SIGHUP can get sent + * to error handlers from a process responsible for their creation. + * To sidestep that issue, we now use SIGPWR as suggested above. */ -#define SHUTDOWN_SIGS (sigmask(SIGHUP)) +#define SHUTDOWN_SIGS (sigmask(SIGPWR)) #ifdef DEBUG #define SENSE_TIMEOUT SCSI_TIMEOUT @@ -1619,7 +1623,7 @@ /* * Wake up the thread that created us. */ - SCSI_LOG_ERROR_RECOVERY(3, printk("Wake up parent \n")); + SCSI_LOG_ERROR_RECOVERY(3, printk("Wake up parent of scsi_eh_%d\n",shost->host_no)); up(shost->eh_notify); @@ -1629,7 +1633,7 @@ * away and die. This typically happens if the user is * trying to unload a module. */ - SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler sleeping\n")); + SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler scsi_eh_%d sleeping\n",shost->host_no)); /* * Note - we always use down_interruptible with the semaphore @@ -1644,7 +1648,7 @@ if (signal_pending(current)) break; - SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler waking up\n")); + SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler scsi_eh_%d waking up\n",shost->host_no)); shost->eh_active = 1; @@ -1672,7 +1676,7 @@ } - SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler exiting\n")); + SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler scsi_eh_%d exiting\n",shost->host_no)); /* * Make sure that nobody tries to wake us up again.