From: James Bottomley Date: Sat, 5 Oct 2002 20:26:00 +0000 (-0400) Subject: [SCSI] sd moved synchronisation from release to detach X-Git-Tag: v2.5.41~10^2~20^2 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=f6d999f9f6d2eb2d21ea5e72e5c9710a05605a52;p=history.git [SCSI] sd moved synchronisation from release to detach --- diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 2a1b8a9f8432..9124683e9d8c 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -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);