aboutsummaryrefslogtreecommitdiff
path: root/drivers/ata/libata-transport.c
diff options
context:
space:
mode:
authorKevin Hilman <khilman@linaro.org>2015-10-13 16:31:57 -0700
committerKevin Hilman <khilman@linaro.org>2015-10-13 16:31:57 -0700
commit2b090d9432eb704e3d718a0a05a3d62437b1863f (patch)
tree35baef756aa643f04a3a6af7aa97ad5d7ec6177a /drivers/ata/libata-transport.c
parent1f18cad529990d6637c6b7f49f79a4c3928ccf05 (diff)
parentac6d8ef9174fc00b7ea3ff2474fc57f531d312c2 (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.c24
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;