Hi Martin, For certain user space software, e.g. udev, it is important that sysfs attributes are registered before the KOBJ_ADD uevent is emitted. Hence this patch series that removes the device_create_file() and sysfs_create_groups() calls from the SCSI core. Please consider this patch series for kernel v5.16. Thanks, Bart. Changes compared to v2: - Use the ATTRIBUTE_GROUPS() macro where appropriate. Changes compared to v1: - Switched from struct attribute ** to struct attribute_group **. - Added comments that explain how the size of the new arrays have been chosen. - Cleaned up the code in the qla2xxx driver that modifies a struct device_attribute array by introducing an .is_visible() callback. - Split this patch series into one patch per driver. Bart Van Assche (46): scsi: core: Register sysfs attributes earlier ata: Switch to attribute groups firewire: sbp2: Switch to attribute groups RDMA/srp: Switch to attribute groups scsi: message: fusion: Switch to attribute groups scsi: zfcp: Switch to attribute groups scsi: 3w-9xxx: Switch to attribute groups scsi: 3w-sas: Switch to attribute groups scsi: 3w-xxxx: Switch to attribute groups scsi: 53c700: Switch to attribute groups scsi: aacraid: Switch to attribute groups scsi: arcmsr: Switch to attribute groups scsi: be2iscsi: Switch to attribute groups scsi: bfa: Switch to attribute groups scsi: bnx2fc: Switch to attribute groups scsi: bnx2i: Switch to attribute groups scsi: csiostor: Switch to attribute groups scsi: cxlflash: Switch to attribute groups scsi: fnic: Switch to attribute groups scsi: hisi_sas: Switch to attribute groups scsi: hpsa: Switch to attribute groups scsi: hptiop: Switch to attribute groups scsi: ibmvscsi: Switch to attribute groups scsi: ibmvfc: Switch to attribute groups scsi: ipr: Switch to attribute groups scsi: isci: Switch to attribute groups scsi: lpfc: Switch to attribute groups scsi: megaraid: Switch to attribute groups scsi: mpt3sas: Switch to attribute groups scsi: mvsas: Switch to attribute groups scsi: myrb: Switch to attribute groups scsi: myrs: Switch to attribute groups scsi: ncr53c8xx: Switch to attribute groups scsi: sym53c500_cs: Switch to attribute groups scsi: pm8001: Switch to attribute groups scsi: pmcraid: Switch to attribute groups scsi: qedf: Switch to attribute groups scsi: qedi: Switch to attribute groups scsi: qla2xxx: Remove a declaration scsi: qla2xxx: Switch to attribute groups scsi: qla4xxx: Switch to attribute groups scsi: smartpqi: Switch to attribute groups scsi: snic: Switch to attribute groups scsi: unisys: Remove the shost_attrs member scsi: usb: Switch to attribute groups scsi: core: Remove two host template members that are no longer used drivers/ata/ahci.h | 8 +- drivers/ata/ata_piix.c | 8 +- drivers/ata/libahci.c | 52 ++- drivers/ata/libata-sata.c | 19 +- drivers/ata/libata-scsi.c | 15 +- drivers/ata/pata_macio.c | 2 +- drivers/ata/sata_mv.c | 2 +- drivers/ata/sata_nv.c | 4 +- drivers/ata/sata_sil24.c | 2 +- drivers/firewire/sbp2.c | 8 +- drivers/infiniband/ulp/srp/ib_srp.c | 51 +-- drivers/message/fusion/mptfc.c | 2 +- drivers/message/fusion/mptsas.c | 2 +- drivers/message/fusion/mptscsih.c | 36 +- drivers/message/fusion/mptscsih.h | 2 +- drivers/message/fusion/mptspi.c | 2 +- drivers/s390/scsi/zfcp_ext.h | 4 +- drivers/s390/scsi/zfcp_scsi.c | 4 +- drivers/s390/scsi/zfcp_sysfs.c | 52 ++- drivers/scsi/3w-9xxx.c | 8 +- drivers/scsi/3w-sas.c | 8 +- drivers/scsi/3w-xxxx.c | 8 +- drivers/scsi/53c700.c | 12 +- drivers/scsi/aacraid/linit.c | 38 ++- drivers/scsi/arcmsr/arcmsr.h | 2 +- drivers/scsi/arcmsr/arcmsr_attr.c | 33 +- drivers/scsi/arcmsr/arcmsr_hba.c | 2 +- drivers/scsi/be2iscsi/be_main.c | 21 +- drivers/scsi/bfa/bfad_attr.c | 68 ++-- drivers/scsi/bfa/bfad_im.c | 4 +- drivers/scsi/bfa/bfad_im.h | 4 +- drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 8 +- drivers/scsi/bnx2i/bnx2i.h | 2 +- drivers/scsi/bnx2i/bnx2i_iscsi.c | 2 +- drivers/scsi/bnx2i/bnx2i_sysfs.c | 15 +- drivers/scsi/csiostor/csio_scsi.c | 24 +- drivers/scsi/cxlflash/main.c | 40 ++- drivers/scsi/fnic/fnic.h | 2 +- drivers/scsi/fnic/fnic_attrs.c | 17 +- drivers/scsi/fnic/fnic_main.c | 2 +- drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 8 +- drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 8 +- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 14 +- drivers/scsi/hosts.c | 14 +- drivers/scsi/hpsa.c | 44 +-- drivers/scsi/hptiop.c | 10 +- drivers/scsi/ibmvscsi/ibmvfc.c | 22 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 22 +- drivers/scsi/ipr.c | 38 ++- drivers/scsi/isci/init.c | 8 +- drivers/scsi/lpfc/lpfc_attr.c | 314 +++++++++--------- drivers/scsi/lpfc/lpfc_crtn.h | 4 +- drivers/scsi/lpfc/lpfc_init.c | 2 +- drivers/scsi/lpfc/lpfc_scsi.c | 4 +- drivers/scsi/megaraid/megaraid_mbox.c | 15 +- drivers/scsi/megaraid/megaraid_sas_base.c | 24 +- drivers/scsi/mpt3sas/mpt3sas_base.h | 4 +- drivers/scsi/mpt3sas/mpt3sas_ctl.c | 84 +++-- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 8 +- drivers/scsi/mvsas/mv_init.c | 12 +- drivers/scsi/myrb.c | 28 +- drivers/scsi/myrs.c | 40 ++- drivers/scsi/ncr53c8xx.c | 10 +- drivers/scsi/pcmcia/sym53c500_cs.c | 8 +- drivers/scsi/pm8001/pm8001_ctl.c | 64 ++-- drivers/scsi/pm8001/pm8001_init.c | 2 +- drivers/scsi/pm8001/pm8001_sas.h | 2 +- drivers/scsi/pmcraid.c | 11 +- drivers/scsi/qedf/qedf.h | 2 +- drivers/scsi/qedf/qedf_attr.c | 15 +- drivers/scsi/qedf/qedf_main.c | 2 +- drivers/scsi/qedi/qedi_gbl.h | 2 +- drivers/scsi/qedi/qedi_iscsi.c | 2 +- drivers/scsi/qedi/qedi_sysfs.c | 15 +- drivers/scsi/qla2xxx/qla_attr.c | 118 +++---- drivers/scsi/qla2xxx/qla_gbl.h | 4 +- drivers/scsi/qla2xxx/qla_os.c | 5 +- drivers/scsi/qla4xxx/ql4_attr.c | 41 ++- drivers/scsi/qla4xxx/ql4_glbl.h | 3 +- drivers/scsi/qla4xxx/ql4_os.c | 2 +- drivers/scsi/scsi_priv.h | 2 +- drivers/scsi/scsi_sysfs.c | 53 +-- drivers/scsi/smartpqi/smartpqi_init.c | 46 +-- drivers/scsi/snic/snic.h | 2 +- drivers/scsi/snic/snic_attrs.c | 19 +- drivers/scsi/snic/snic_main.c | 2 +- .../staging/unisys/visorhba/visorhba_main.c | 1 - drivers/usb/storage/scsiglue.c | 8 +- include/linux/libata.h | 8 +- include/scsi/scsi_device.h | 6 + include/scsi/scsi_host.h | 15 +- 91 files changed, 1025 insertions(+), 767 deletions(-)