]> git.neil.brown.name Git - history.git/commitdiff
[SCSI] sd moved synchronisation from release to detach
authorJames Bottomley <jejb@mulgrave.(none)>
Sat, 5 Oct 2002 20:26:00 +0000 (16:26 -0400)
committerJames Bottomley <jejb@mulgrave.(none)>
Sat, 5 Oct 2002 20:26:00 +0000 (16:26 -0400)
drivers/scsi/sd.c

index 2a1b8a9f8432183c84f742a1850568ae9a6d08c0..9124683e9d8ceaaf56bef445f16030ac5453675d 100644 (file)
@@ -580,13 +580,6 @@ static int sd_release(struct inode *inode, struct file *filp)
        if (sd_template.module)
                __MOD_DEC_USE_COUNT(sd_template.module);
 
-       /* check that we actually have a write back cache to synchronize */
-       if(sdkp->WCE) {
-               printk(KERN_NOTICE "Synchronizing SCSI cache: ");
-               sd_synchronize_cache(dsk_nr, 1);
-               printk("\n");
-       }
-                      
        return 0;
 }
 
@@ -1477,9 +1470,6 @@ static void sd_detach(Scsi_Device * sdp)
        for (dsk_nr = 0; dsk_nr < sd_template.dev_max; dsk_nr++) {
                sdkp = sd_dsk_arr[dsk_nr];
                if (sdkp->device == sdp) {
-                       sdkp->device = NULL;
-                       sdkp->capacity = 0;
-                       /* sdkp->detaching = 1; */
                        break;
                }
        }
@@ -1487,6 +1477,16 @@ static void sd_detach(Scsi_Device * sdp)
        if (dsk_nr >= sd_template.dev_max)
                return;
 
+       /* check that we actually have a write back cache to synchronize */
+       if(sdkp->WCE) {
+               printk(KERN_NOTICE "Synchronizing SCSI cache: ");
+               sd_synchronize_cache(dsk_nr, 1);
+               printk("\n");
+       }
+       sdkp->device = NULL;
+       sdkp->capacity = 0;
+       /* sdkp->detaching = 1; */
+
        if (sdkp->has_been_registered) {
                sdkp->has_been_registered = 0;
                dev = MKDEV_SD(dsk_nr);