fix our current target reap infrastructure
authorJames Bottomley <JBottomley@Parallels.com>
Tue, 21 Jan 2014 15:00:50 +0000 (07:00 -0800)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 Jul 2014 12:33:56 +0000 (13:33 +0100)
commit181086c6cc8a186f26bbb87872e48bb7973fdc28
treed08bb67265ed92c0b42d42cd1e9c6a5c4195f21b
parentb5a10549d528827aa331c1d95a6170032718babe
fix our current target reap infrastructure

commit e63ed0d7a98014fdfc2cfeb3f6dada313dcabb59 upstream.

This patch eliminates the reap_ref and replaces it with a proper kref.
On last put of this kref, the target is removed from visibility in
sysfs.  The final call to scsi_target_reap() for the device is done from
__scsi_remove_device() and only if the device was made visible.  This
ensures that the target disappears as soon as the last device is gone
rather than waiting until final release of the device (which is often
too long).

Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/scsi/scsi_scan.c
drivers/scsi/scsi_sysfs.c
include/scsi/scsi_device.h