diff options
author | David Disseldorp <ddiss@suse.de> | 2018-12-05 07:18:38 -0500 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2018-12-07 21:54:33 -0500 |
commit | 3beeabd5f2d1fc7a48cb887a298bc412789a1f68 (patch) | |
tree | 4e90eb51a61c20ba599ac9063cf4a73028956607 /drivers/target | |
parent | 2d882847280e3ae1ddc95175d0fc2006e11bb63f (diff) |
scsi: target: perform t10_wwn ID initialisation in target_alloc_device()
Initialise the t10_wwn vendor, model and revision defaults when a device is
allocated instead of when it's enabled. This ensures that custom vendor or
model strings set prior to enablement are not later overwritten with
default values.
The TRANSPORT_FLAG_PASSTHROUGH conditional can be dropped for the following
reasons:
- target_core_pscsi overwrites the defaults in the
pscsi_configure_device() callback.
+ the contents is then only used for ConfigFS via
$pscsi_dev/statistics/scsi_lu/vend, etc.
- target_core_user doesn't touch the defaults, nor are they used for
anything outside of ConfigFS.
Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/target')
-rw-r--r-- | drivers/target/target_core_device.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c index 7655c426d6a5..93c56f4a9911 100644 --- a/drivers/target/target_core_device.c +++ b/drivers/target/target_core_device.c | |||
@@ -810,6 +810,13 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) | |||
810 | mutex_init(&xcopy_lun->lun_tg_pt_md_mutex); | 810 | mutex_init(&xcopy_lun->lun_tg_pt_md_mutex); |
811 | xcopy_lun->lun_tpg = &xcopy_pt_tpg; | 811 | xcopy_lun->lun_tpg = &xcopy_pt_tpg; |
812 | 812 | ||
813 | /* Preload the default INQUIRY const values */ | ||
814 | strlcpy(dev->t10_wwn.vendor, "LIO-ORG", sizeof(dev->t10_wwn.vendor)); | ||
815 | strlcpy(dev->t10_wwn.model, dev->transport->inquiry_prod, | ||
816 | sizeof(dev->t10_wwn.model)); | ||
817 | strlcpy(dev->t10_wwn.revision, dev->transport->inquiry_rev, | ||
818 | sizeof(dev->t10_wwn.revision)); | ||
819 | |||
813 | return dev; | 820 | return dev; |
814 | } | 821 | } |
815 | 822 | ||
@@ -972,20 +979,6 @@ int target_configure_device(struct se_device *dev) | |||
972 | */ | 979 | */ |
973 | INIT_WORK(&dev->qf_work_queue, target_qf_do_work); | 980 | INIT_WORK(&dev->qf_work_queue, target_qf_do_work); |
974 | 981 | ||
975 | /* | ||
976 | * Preload the initial INQUIRY const values if we are doing | ||
977 | * anything virtual (IBLOCK, FILEIO, RAMDISK), but not for TCM/pSCSI | ||
978 | * passthrough because this is being provided by the backend LLD. | ||
979 | */ | ||
980 | if (!(dev->transport->transport_flags & TRANSPORT_FLAG_PASSTHROUGH)) { | ||
981 | strlcpy(dev->t10_wwn.vendor, "LIO-ORG", | ||
982 | sizeof(dev->t10_wwn.vendor)); | ||
983 | strlcpy(dev->t10_wwn.model, dev->transport->inquiry_prod, | ||
984 | sizeof(dev->t10_wwn.model)); | ||
985 | strlcpy(dev->t10_wwn.revision, dev->transport->inquiry_rev, | ||
986 | sizeof(dev->t10_wwn.revision)); | ||
987 | } | ||
988 | |||
989 | scsi_dump_inquiry(dev); | 982 | scsi_dump_inquiry(dev); |
990 | 983 | ||
991 | spin_lock(&hba->device_lock); | 984 | spin_lock(&hba->device_lock); |