Re: [PATCH v3 02/46] ata: Switch to attribute groups

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/9/21 05:23, Bart Van Assche wrote:
> struct device supports attribute groups directly but does not support
> struct device_attribute directly. Hence switch to attribute groups.
> 
> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>

Acked-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx>

> ---
>  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 +-
>  include/linux/libata.h    |  8 +++---
>  10 files changed, 79 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
> index 2e89499bd9c3..eeac5482f1d1 100644
> --- a/drivers/ata/ahci.h
> +++ b/drivers/ata/ahci.h
> @@ -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
> diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> index 3ca7720e7d8f..0b2fcf0d1d6c 100644
> --- a/drivers/ata/ata_piix.c
> +++ b/drivers/ata/ata_piix.c
> @@ -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 = {
> diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
> index 5b3fa2cbe722..28430c093a7f 100644
> --- a/drivers/ata/libahci.c
> +++ b/drivers/ata/libahci.c
> @@ -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,
> diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c
> index 8f3ff830ab0c..79e0f86aa3ae 100644
> --- a/drivers/ata/libata-sata.c
> +++ b/drivers/ata/libata-sata.c
> @@ -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,
> diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
> index 1fb4611f7eeb..75c54b2761bf 100644
> --- a/drivers/ata/libata-scsi.c
> +++ b/drivers/ata/libata-scsi.c
> @@ -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.
> diff --git a/drivers/ata/pata_macio.c b/drivers/ata/pata_macio.c
> index be0ca8d5b345..16e8aa184a75 100644
> --- a/drivers/ata/pata_macio.c
> +++ b/drivers/ata/pata_macio.c
> @@ -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,
>  };
> diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
> index 9d86203e1e7a..24130e551b26 100644
> --- a/drivers/ata/sata_mv.c
> +++ b/drivers/ata/sata_mv.c
> @@ -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
> diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
> index c385d18ce87b..16272c111208 100644
> --- a/drivers/ata/sata_nv.c
> +++ b/drivers/ata/sata_nv.c
> @@ -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,
>  };
> diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
> index 06a1e27c4f84..f99ec6f7d7c0 100644
> --- a/drivers/ata/sata_sil24.c
> +++ b/drivers/ata/sata_sil24.c
> @@ -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
>  };
> diff --git a/include/linux/libata.h b/include/linux/libata.h
> index c0c64f03e107..bd1b782d1bbf 100644
> --- a/include/linux/libata.h
> +++ b/include/linux/libata.h
> @@ -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
>  
> 


-- 
Damien Le Moal
Western Digital Research



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux