@@ -141,7 +141,7 @@ struct scsi_device {
struct scsi_vpd __rcu *vpd_pg80;
struct scsi_vpd __rcu *vpd_pg89;
unsigned char current_tag; /* current tag */
- struct scsi_target *sdev_target; /* used only for single_lun */
+ struct scsi_target *sdev_target; /* parent of this object */
blist_flags_t sdev_bflags; /* black/white flags as also found in
* scsi_devinfo.[hc]. For now used only to
@@ -337,7 +337,7 @@ static inline struct Scsi_Host *starget_to_shost(struct scsi_target *starg)
#define to_scsi_target(d) container_of(d, struct scsi_target, dev)
static inline struct scsi_target *scsi_target(struct scsi_device *sdev)
{
- return to_scsi_target(sdev->sdev_gendev.parent);
+ return sdev->sdev_target;
}
#define transport_class_to_starget(class_dev) \
to_scsi_target(class_dev->parent)
A review of the code indicates this scsi_device.h comment for a struct scsi_device member is misleading: struct scsi_target *sdev_target; /* used only for single_lun */ sdev_target is set once in scsi_alloc_sdev() to the new sdev's parent and not altered thereafter. This in turn implies that the often-used scsi_target(struct scsi_device *sdev) inline function is going the long way around finding its parent. Simplify it and rework that comment. Signed-off-by: Douglas Gilbert <dgilbert@interlog.com> --- include/scsi/scsi_device.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)