scsi: sd: Keep disk read-only when re-reading partition
[sfrench/cifs-2.6.git] / drivers / scsi / sd.c
index 24fe685227169d1be705e9ddc1d8861cb962d2bf..3b45f7fc562017c8f626c46153e343a1f675cdfb 100644 (file)
@@ -2170,7 +2170,7 @@ sd_spinup_disk(struct scsi_disk *sdkp)
                        }
                        /* Wait 1 second for next try */
                        msleep(1000);
-                       printk(".");
+                       printk(KERN_CONT ".");
 
                /*
                 * Wait for USB flash devices with slow firmware.
@@ -2200,9 +2200,9 @@ sd_spinup_disk(struct scsi_disk *sdkp)
 
        if (spintime) {
                if (scsi_status_is_good(the_result))
-                       printk("ready\n");
+                       printk(KERN_CONT "ready\n");
                else
-                       printk("not responding...\n");
+                       printk(KERN_CONT "not responding...\n");
        }
 }
 
@@ -2624,6 +2624,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
        int res;
        struct scsi_device *sdp = sdkp->device;
        struct scsi_mode_data data;
+       int disk_ro = get_disk_ro(sdkp->disk);
        int old_wp = sdkp->write_prot;
 
        set_disk_ro(sdkp->disk, 0);
@@ -2664,7 +2665,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
                          "Test WP failed, assume Write Enabled\n");
        } else {
                sdkp->write_prot = ((data.device_specific & 0x80) != 0);
-               set_disk_ro(sdkp->disk, sdkp->write_prot);
+               set_disk_ro(sdkp->disk, sdkp->write_prot || disk_ro);
                if (sdkp->first_scan || old_wp != sdkp->write_prot) {
                        sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
                                  sdkp->write_prot ? "on" : "off");