lkml.org 
[lkml]   [2020]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 02/27] ata: expose ncq_enable_prio sysfs attribute only on NCQ capable hosts
    Date
    There is no point in exposing ncq_enable_prio sysfs attribute for
    devices on PATA and non-NCQ capable SATA hosts so:

    * remove dev_attr_ncq_prio_enable from ata_common_sdev_attrs[]

    * add ata_ncq_sdev_attrs[]

    * update ATA_NCQ_SHT() macro to use ata_ncq_sdev_attrs[]

    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    ---
    drivers/ata/libata-scsi.c | 8 +++++++-
    include/linux/libata.h | 11 ++++++++---
    2 files changed, 15 insertions(+), 4 deletions(-)

    diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
    index 5a4f43c85131..7ef21e282061 100644
    --- a/drivers/ata/libata-scsi.c
    +++ b/drivers/ata/libata-scsi.c
    @@ -463,11 +463,17 @@ EXPORT_SYMBOL_GPL(dev_attr_sw_activity);

    struct device_attribute *ata_common_sdev_attrs[] = {
    &dev_attr_unload_heads,
    - &dev_attr_ncq_prio_enable,
    NULL
    };
    EXPORT_SYMBOL_GPL(ata_common_sdev_attrs);

    +struct device_attribute *ata_ncq_sdev_attrs[] = {
    + &dev_attr_unload_heads,
    + &dev_attr_ncq_prio_enable,
    + NULL
    +};
    +EXPORT_SYMBOL_GPL(ata_ncq_sdev_attrs);
    +
    /**
    * ata_std_bios_param - generic bios head/sector/cylinder calculator used by sd.
    * @sdev: SCSI device for which BIOS geometry is to be determined
    diff --git a/include/linux/libata.h b/include/linux/libata.h
    index e7090df2231b..fe8a360b4956 100644
    --- a/include/linux/libata.h
    +++ b/include/linux/libata.h
    @@ -1337,6 +1337,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 struct device_attribute *ata_ncq_sdev_attrs[];

    /*
    * All sht initializers (BASE, PIO, BMDMA, NCQ) must be instantiated
    @@ -1344,7 +1345,7 @@ extern struct device_attribute *ata_common_sdev_attrs[];
    * edge driver's module reference, otherwise the driver can be unloaded
    * even if the scsi_device is being accessed.
    */
    -#define ATA_BASE_SHT(drv_name) \
    +#define __ATA_BASE_SHT(drv_name) \
    .module = THIS_MODULE, \
    .name = drv_name, \
    .ioctl = ata_scsi_ioctl, \
    @@ -1358,11 +1359,15 @@ extern struct device_attribute *ata_common_sdev_attrs[];
    .slave_configure = ata_scsi_slave_config, \
    .slave_destroy = ata_scsi_slave_destroy, \
    .bios_param = ata_std_bios_param, \
    - .unlock_native_capacity = ata_scsi_unlock_native_capacity, \
    + .unlock_native_capacity = ata_scsi_unlock_native_capacity
    +
    +#define ATA_BASE_SHT(drv_name) \
    + __ATA_BASE_SHT(drv_name), \
    .sdev_attrs = ata_common_sdev_attrs

    #define ATA_NCQ_SHT(drv_name) \
    - ATA_BASE_SHT(drv_name), \
    + __ATA_BASE_SHT(drv_name), \
    + .sdev_attrs = ata_ncq_sdev_attrs, \
    .change_queue_depth = ata_scsi_change_queue_depth

    /*
    --
    2.24.1
    \
     
     \ /
      Last update: 2020-03-17 15:43    [W:4.261 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site