scsi: ata: Switch to attribute groups
authorBart Van Assche <bvanassche@acm.org>
Tue, 12 Oct 2021 23:35:14 +0000 (16:35 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 17 Oct 2021 01:45:52 +0000 (21:45 -0400)
struct device supports attribute groups directly but does not support
struct device_attribute directly. Hence switch to attribute groups.

Link: https://lore.kernel.org/r/20211012233558.4066756-3-bvanassche@acm.org
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ata/ahci.h
drivers/ata/ata_piix.c
drivers/ata/libahci.c
drivers/ata/libata-sata.c
drivers/ata/libata-scsi.c
drivers/ata/pata_macio.c
drivers/ata/sata_mv.c
drivers/ata/sata_nv.c
drivers/ata/sata_sil24.c
include/linux/libata.h

index 2e89499bd9c3d240bdfdf3f0f56aad7372703ee0..eeac5482f1d1acb554dc2c029aa858a9fe184a88 100644 (file)
@@ -376,8 +376,8 @@ struct ahci_host_priv {
 
 extern int ahci_ignore_sss;
 
-extern struct device_attribute *ahci_shost_attrs[];
-extern struct device_attribute *ahci_sdev_attrs[];
+extern const struct attribute_group *ahci_shost_groups[];
+extern const struct attribute_group *ahci_sdev_groups[];
 
 /*
  * This must be instantiated by the edge drivers.  Read the comments
@@ -388,8 +388,8 @@ extern struct device_attribute *ahci_sdev_attrs[];
        .can_queue              = AHCI_MAX_CMDS,                        \
        .sg_tablesize           = AHCI_MAX_SG,                          \
        .dma_boundary           = AHCI_DMA_BOUNDARY,                    \
-       .shost_attrs            = ahci_shost_attrs,                     \
-       .sdev_attrs             = ahci_sdev_attrs,                      \
+       .shost_groups           = ahci_shost_groups,                    \
+       .sdev_groups            = ahci_sdev_groups,                     \
        .change_queue_depth     = ata_scsi_change_queue_depth,          \
        .tag_alloc_policy       = BLK_TAG_ALLOC_RR,                     \
        .slave_configure        = ata_scsi_slave_config
index 3ca7720e7d8fba57b3bfa2daf0c5951fdde430d9..0b2fcf0d1d6c4760ef002b229d60a52e1afaaf44 100644 (file)
@@ -1085,14 +1085,16 @@ static struct ata_port_operations ich_pata_ops = {
        .set_dmamode            = ich_set_dmamode,
 };
 
-static struct device_attribute *piix_sidpr_shost_attrs[] = {
-       &dev_attr_link_power_management_policy,
+static struct attribute *piix_sidpr_shost_attrs[] = {
+       &dev_attr_link_power_management_policy.attr,
        NULL
 };
 
+ATTRIBUTE_GROUPS(piix_sidpr_shost);
+
 static struct scsi_host_template piix_sidpr_sht = {
        ATA_BMDMA_SHT(DRV_NAME),
-       .shost_attrs            = piix_sidpr_shost_attrs,
+       .shost_groups           = piix_sidpr_shost_groups,
 };
 
 static struct ata_port_operations piix_sidpr_sata_ops = {
index 5b3fa2cbe722385ab000853169ff358dc509733b..28430c093a7f4d6b4b925cc1e1c9e64451a73779 100644 (file)
@@ -108,28 +108,46 @@ static DEVICE_ATTR(em_buffer, S_IWUSR | S_IRUGO,
                   ahci_read_em_buffer, ahci_store_em_buffer);
 static DEVICE_ATTR(em_message_supported, S_IRUGO, ahci_show_em_supported, NULL);
 
-struct device_attribute *ahci_shost_attrs[] = {
-       &dev_attr_link_power_management_policy,
-       &dev_attr_em_message_type,
-       &dev_attr_em_message,
-       &dev_attr_ahci_host_caps,
-       &dev_attr_ahci_host_cap2,
-       &dev_attr_ahci_host_version,
-       &dev_attr_ahci_port_cmd,
-       &dev_attr_em_buffer,
-       &dev_attr_em_message_supported,
+static struct attribute *ahci_shost_attrs[] = {
+       &dev_attr_link_power_management_policy.attr,
+       &dev_attr_em_message_type.attr,
+       &dev_attr_em_message.attr,
+       &dev_attr_ahci_host_caps.attr,
+       &dev_attr_ahci_host_cap2.attr,
+       &dev_attr_ahci_host_version.attr,
+       &dev_attr_ahci_port_cmd.attr,
+       &dev_attr_em_buffer.attr,
+       &dev_attr_em_message_supported.attr,
        NULL
 };
-EXPORT_SYMBOL_GPL(ahci_shost_attrs);
 
-struct device_attribute *ahci_sdev_attrs[] = {
-       &dev_attr_sw_activity,
-       &dev_attr_unload_heads,
-       &dev_attr_ncq_prio_supported,
-       &dev_attr_ncq_prio_enable,
+static const struct attribute_group ahci_shost_attr_group = {
+       .attrs = ahci_shost_attrs
+};
+
+const struct attribute_group *ahci_shost_groups[] = {
+       &ahci_shost_attr_group,
+       NULL
+};
+EXPORT_SYMBOL_GPL(ahci_shost_groups);
+
+struct attribute *ahci_sdev_attrs[] = {
+       &dev_attr_sw_activity.attr,
+       &dev_attr_unload_heads.attr,
+       &dev_attr_ncq_prio_supported.attr,
+       &dev_attr_ncq_prio_enable.attr,
+       NULL
+};
+
+static const struct attribute_group ahci_sdev_attr_group = {
+       .attrs = ahci_sdev_attrs
+};
+
+const struct attribute_group *ahci_sdev_groups[] = {
+       &ahci_sdev_attr_group,
        NULL
 };
-EXPORT_SYMBOL_GPL(ahci_sdev_attrs);
+EXPORT_SYMBOL_GPL(ahci_sdev_groups);
 
 struct ata_port_operations ahci_ops = {
        .inherits               = &sata_pmp_port_ops,
index 60418d872c122fbe12c026df6b97ce7fd942538d..4e88597aa9df3fa022d2475a8d27b51d1a49e801 100644 (file)
@@ -922,13 +922,22 @@ DEVICE_ATTR(ncq_prio_enable, S_IRUGO | S_IWUSR,
            ata_ncq_prio_enable_show, ata_ncq_prio_enable_store);
 EXPORT_SYMBOL_GPL(dev_attr_ncq_prio_enable);
 
-struct device_attribute *ata_ncq_sdev_attrs[] = {
-       &dev_attr_unload_heads,
-       &dev_attr_ncq_prio_enable,
-       &dev_attr_ncq_prio_supported,
+struct attribute *ata_ncq_sdev_attrs[] = {
+       &dev_attr_unload_heads.attr,
+       &dev_attr_ncq_prio_enable.attr,
+       &dev_attr_ncq_prio_supported.attr,
        NULL
 };
-EXPORT_SYMBOL_GPL(ata_ncq_sdev_attrs);
+
+static const struct attribute_group ata_ncq_sdev_attr_group = {
+       .attrs = ata_ncq_sdev_attrs
+};
+
+const struct attribute_group *ata_ncq_sdev_groups[] = {
+       &ata_ncq_sdev_attr_group,
+       NULL
+};
+EXPORT_SYMBOL_GPL(ata_ncq_sdev_groups);
 
 static ssize_t
 ata_scsi_em_message_store(struct device *dev, struct device_attribute *attr,
index 4afe1abc470912d88a45db24d2ae863864449a8f..29eb7cca17a4a68e0e72f4e24805280ef166f82b 100644 (file)
@@ -234,11 +234,20 @@ static void ata_scsi_set_invalid_parameter(struct ata_device *dev,
                                     field, 0xff, 0);
 }
 
-struct device_attribute *ata_common_sdev_attrs[] = {
-       &dev_attr_unload_heads,
+static struct attribute *ata_common_sdev_attrs[] = {
+       &dev_attr_unload_heads.attr,
        NULL
 };
-EXPORT_SYMBOL_GPL(ata_common_sdev_attrs);
+
+static const struct attribute_group ata_common_sdev_attr_group = {
+       .attrs = ata_common_sdev_attrs
+};
+
+const struct attribute_group *ata_common_sdev_groups[] = {
+       &ata_common_sdev_attr_group,
+       NULL
+};
+EXPORT_SYMBOL_GPL(ata_common_sdev_groups);
 
 /**
  *     ata_std_bios_param - generic bios head/sector/cylinder calculator used by sd.
index be0ca8d5b3452e0a24325d3a98d75ca75ad2eb99..16e8aa184a75793f53302e561f7c477993e26fb3 100644 (file)
@@ -923,7 +923,7 @@ static struct scsi_host_template pata_macio_sht = {
         */
        .max_segment_size       = MAX_DBDMA_SEG,
        .slave_configure        = pata_macio_slave_config,
-       .sdev_attrs             = ata_common_sdev_attrs,
+       .sdev_groups            = ata_common_sdev_groups,
        .can_queue              = ATA_DEF_QUEUE,
        .tag_alloc_policy       = BLK_TAG_ALLOC_RR,
 };
index 9d86203e1e7a10af58e2b6cc2c6c410437260aa2..24130e551b26186aba929834f9dae0a3baa84984 100644 (file)
@@ -670,7 +670,7 @@ static struct scsi_host_template mv6_sht = {
        .can_queue              = MV_MAX_Q_DEPTH - 1,
        .sg_tablesize           = MV_MAX_SG_CT / 2,
        .dma_boundary           = MV_DMA_BOUNDARY,
-       .sdev_attrs             = ata_ncq_sdev_attrs,
+       .sdev_groups            = ata_ncq_sdev_groups,
        .change_queue_depth     = ata_scsi_change_queue_depth,
        .tag_alloc_policy       = BLK_TAG_ALLOC_RR,
        .slave_configure        = ata_scsi_slave_config
index c385d18ce87b762eb4a3e9a55d256c68c0ca997d..16272c1112085ab52ed638cb7d7c0907505fbbf2 100644 (file)
@@ -380,7 +380,7 @@ static struct scsi_host_template nv_adma_sht = {
        .sg_tablesize           = NV_ADMA_SGTBL_TOTAL_LEN,
        .dma_boundary           = NV_ADMA_DMA_BOUNDARY,
        .slave_configure        = nv_adma_slave_config,
-       .sdev_attrs             = ata_ncq_sdev_attrs,
+       .sdev_groups            = ata_ncq_sdev_groups,
        .change_queue_depth     = ata_scsi_change_queue_depth,
        .tag_alloc_policy       = BLK_TAG_ALLOC_RR,
 };
@@ -391,7 +391,7 @@ static struct scsi_host_template nv_swncq_sht = {
        .sg_tablesize           = LIBATA_MAX_PRD,
        .dma_boundary           = ATA_DMA_BOUNDARY,
        .slave_configure        = nv_swncq_slave_config,
-       .sdev_attrs             = ata_ncq_sdev_attrs,
+       .sdev_groups            = ata_ncq_sdev_groups,
        .change_queue_depth     = ata_scsi_change_queue_depth,
        .tag_alloc_policy       = BLK_TAG_ALLOC_RR,
 };
index 06a1e27c4f84a9db7f6a887a0cbedba9c9d351bb..f99ec6f7d7c07728bc6de1822f20aea3a95e7d0d 100644 (file)
@@ -379,7 +379,7 @@ static struct scsi_host_template sil24_sht = {
        .sg_tablesize           = SIL24_MAX_SGE,
        .dma_boundary           = ATA_DMA_BOUNDARY,
        .tag_alloc_policy       = BLK_TAG_ALLOC_FIFO,
-       .sdev_attrs             = ata_ncq_sdev_attrs,
+       .sdev_groups            = ata_ncq_sdev_groups,
        .change_queue_depth     = ata_scsi_change_queue_depth,
        .slave_configure        = ata_scsi_slave_config
 };
index c0c64f03e10740797850881b2a2131a829a7ad77..bd1b782d1bbfa355fe726687b6df2a7ed9c55857 100644 (file)
@@ -1388,7 +1388,7 @@ extern int ata_link_nr_enabled(struct ata_link *link);
  */
 extern const struct ata_port_operations ata_base_port_ops;
 extern const struct ata_port_operations sata_port_ops;
-extern struct device_attribute *ata_common_sdev_attrs[];
+extern const struct attribute_group *ata_common_sdev_groups[];
 
 /*
  * All sht initializers (BASE, PIO, BMDMA, NCQ) must be instantiated
@@ -1418,14 +1418,14 @@ extern struct device_attribute *ata_common_sdev_attrs[];
 
 #define ATA_BASE_SHT(drv_name)                                 \
        ATA_SUBBASE_SHT(drv_name),                              \
-       .sdev_attrs             = ata_common_sdev_attrs
+       .sdev_groups            = ata_common_sdev_groups
 
 #ifdef CONFIG_SATA_HOST
-extern struct device_attribute *ata_ncq_sdev_attrs[];
+extern const struct attribute_group *ata_ncq_sdev_groups[];
 
 #define ATA_NCQ_SHT(drv_name)                                  \
        ATA_SUBBASE_SHT(drv_name),                              \
-       .sdev_attrs             = ata_ncq_sdev_attrs,           \
+       .sdev_groups            = ata_ncq_sdev_groups,          \
        .change_queue_depth     = ata_scsi_change_queue_depth
 #endif