--- sd.c 2006-02-10 12:22:41.000000000 -0500 +++ sd.c~ 2006-02-08 16:27:31.000000000 -0500 @@ -466,10 +466,15 @@ * is being re-read. */ - if (rscsi_disks[target].device->busy) { - printk("device %d was busy, can't open it, try again soon.\n", target); - return -ENXIO; - } + + while (rscsi_disks[target].device->busy) { + barrier(); + cpu_relax(); + } + /* * The following code can sleep. * Module unloading must be prevented