diff options
author | Kevin Hilman <khilman@linaro.org> | 2015-10-13 16:31:57 -0700 |
---|---|---|
committer | Kevin Hilman <khilman@linaro.org> | 2015-10-13 16:31:57 -0700 |
commit | 2b090d9432eb704e3d718a0a05a3d62437b1863f (patch) | |
tree | 35baef756aa643f04a3a6af7aa97ad5d7ec6177a /drivers/ata/libata-transport.c | |
parent | 1f18cad529990d6637c6b7f49f79a4c3928ccf05 (diff) | |
parent | ac6d8ef9174fc00b7ea3ff2474fc57f531d312c2 (diff) |
Merge tag 'v3.18.22' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable into linux-linaro-lsk-v3.18
Linux 3.18.22
* tag 'v3.18.22' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable: (178 commits)
Linux 3.18.22
net: call rcu_read_lock early in process_backlog
lpfc: Fix scsi prep dma buf error.
rds: fix an integer overflow test in rds_info_getsockopt()
net/mlx4_core: Fix wrong index in propagating port change event to VFs
netlink: don't hold mutex in rcu callback when releasing mmapd ring
inet: frags: fix defragmented packet's IP header for af_packet
bonding: correct the MAC address for "follow" fail_over_mac policy
bonding: fix destruction of bond with devices different from arphrd_ether
ipv6: lock socket in ip6_datagram_connect()
isdn/gigaset: reset tty->receive_room when attaching ser_gigaset
bridge: mdb: fix double add notification
net: Fix skb csum races when peeking
net: do not process device backlog during unregistration
net: pktgen: fix race between pktgen_thread_worker() and kthread_stop()
bridge: mdb: zero out the local br_ip variable before use
net/tipc: initialize security state for new connection socket
ip_tunnel: fix ipv4 pmtu check to honor inner ip header df
net: graceful exit from netif_alloc_netdev_queues()
ipv6: Make MLD packets to only be processed locally
...
Diffstat (limited to 'drivers/ata/libata-transport.c')
-rw-r--r-- | drivers/ata/libata-transport.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c index e37413228228..fd29b7224082 100644 --- a/drivers/ata/libata-transport.c +++ b/drivers/ata/libata-transport.c @@ -559,6 +559,29 @@ show_ata_dev_gscr(struct device *dev, static DEVICE_ATTR(gscr, S_IRUGO, show_ata_dev_gscr, NULL); +static ssize_t +show_ata_dev_trim(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct ata_device *ata_dev = transport_class_to_dev(dev); + unsigned char *mode; + + if (!ata_id_has_trim(ata_dev->id)) + mode = "unsupported"; + else if (ata_dev->horkage & ATA_HORKAGE_NOTRIM) + mode = "forced_unsupported"; + else if (ata_dev->horkage & ATA_HORKAGE_NO_NCQ_TRIM) + mode = "forced_unqueued"; + else if (ata_fpdma_dsm_supported(ata_dev)) + mode = "queued"; + else + mode = "unqueued"; + + return snprintf(buf, 20, "%s\n", mode); +} + +static DEVICE_ATTR(trim, S_IRUGO, show_ata_dev_trim, NULL); + static DECLARE_TRANSPORT_CLASS(ata_dev_class, "ata_device", NULL, NULL, NULL); @@ -732,6 +755,7 @@ struct scsi_transport_template *ata_attach_transport(void) SETUP_DEV_ATTRIBUTE(ering); SETUP_DEV_ATTRIBUTE(id); SETUP_DEV_ATTRIBUTE(gscr); + SETUP_DEV_ATTRIBUTE(trim); BUG_ON(count > ATA_DEV_ATTRS); i->dev_attrs[count] = NULL; |