Signed-off-by: Luben Tuikov ===== sd.c 1.31 vs edited ===== --- 1.31/drivers/scsi/sd.c 2003-06-25 19:34:08 -04:00 +++ edited/sd.c 2005-02-14 17:09:43 -05:00 @@ -1332,8 +1332,8 @@ rscsi_disks[i].device = SDp; rscsi_disks[i].has_part_table = 0; - sd_template.nr_dev++; - SD_GENDISK(i).nr_real++; + if (sd_template.nr_dev++ >= SD_GENDISK(i).nr_real) + SD_GENDISK(i).nr_real++; devnum = i % SCSI_DISKS_PER_MAJOR; SD_GENDISK(i).de_arr[devnum] = SDp->de; if (SDp->removable) @@ -1424,9 +1424,12 @@ for (dpnt = rscsi_disks, i = 0; i < sd_template.dev_max; i++, dpnt++) if (dpnt->device == SDp) { + char nbuff[6]; /* If we are disconnecting a disk driver, sync and invalidate * everything */ + sd_devname(i, nbuff); + sdgd = &SD_GENDISK(i); max_p = sd_gendisk.max_p; start = i << sd_gendisk.minor_shift; @@ -1447,7 +1450,12 @@ SDp->attached--; sd_template.dev_noticed--; sd_template.nr_dev--; - SD_GENDISK(i).nr_real--; + + printk("Detached scsi %sdisk %s at scsi%d, " + "channel %d, id %d, lun %d\n", + SDp->removable ? "removable " : "", + nbuff, SDp->host->host_no, SDp->channel, + SDp->id, SDp->lun); return; } return;