← Documents Documentation/ABI/testing/sysfs-ata GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

ATA topology와 device attributes sysfs ABI

ATA host의 port·link·Port Multiplier·device topology naming과 port IRQ, SATA speed, GSCR·IDENTIFY·transfer mode·class·DSM TRIM attributes를 설명합니다.

Source pathDocumentation/ABI/testing/sysfs-ata
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

ATA topology root와 port attributes

sysfs-ata:1-35

/sys/class/ata_*는 ATA topology를 저장합니다. 각 port는 ata_port_id X로 ataX가 되며 PMP link 수, idle IRQ 수, host-local port number를 제공합니다.

ATA device naming

sysfs-ata:64-71

각 link 뒤 최대 두 device가 devX[.Y].Z로 생성됩니다. X는 port ID, Y는 optional PMP port, Z는 device ID이며 PATA는 보통 0·1 두 개, SATA는 하나입니다.

Error·identify·mode·class attributes

sysfs-ata:74-121

Device attributes는 speed downgrade count, PMP GSCR cache, error ring, ATA IDENTIFY cache, PIO·current transfer·DMA modes와 ata·atapi·pmp·none class를 제공합니다.

DSM TRIM mode

sysfs-ata:124-140

trim은 unsupported·unqueued·queued·forced_unqueued 중 현재 DSM TRIM mode를 보고하며 마지막 값은 buggy queued support 때문에 unqueued commands만 보냄을 뜻합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 What: /sys/class/ata_*
2 Description:
3 Provide a place in sysfs for storing the ATA topology of the
4 system. This allows retrieving various information about ATA
5 objects.
6
7 Files under /sys/class/ata_port
8 -------------------------------
9
10 For each port, a directory ataX is created where X is the ata_port_id of the
11 port. The device parent is the ata host device.
12
13
14 What: /sys/class/ata_port/ataX/nr_pmp_links
15 What: /sys/class/ata_port/ataX/idle_irq
16 Date: May, 2010
17 KernelVersion: v2.6.37
18 Contact: Gwendal Grignou <gwendal@chromium.org>
19 Description:
20 nr_pmp_links: (RO) If a SATA Port Multiplier (PM) is
21 connected, the number of links behind it.
22
23 idle_irq: (RO) Number of IRQ received by the port while
24 idle [some ata HBA only].
25
26
27 What: /sys/class/ata_port/ataX/port_no
28 Date: May, 2013
29 KernelVersion: v3.11
30 Contact: Gwendal Grignou <gwendal@chromium.org>
31 Description:
32 (RO) Host local port number. While registering host controller,
33 port numbers are tracked based upon number of ports available on
34 the controller. This attribute is needed by udev for composing
35 persistent links in /dev/disk/by-path.
36
37 Files under /sys/class/ata_link
38 -------------------------------
39
40 Behind each port, there is a ata_link. If there is a SATA PM in the topology, 15
41 ata_link objects are created.
42
43 If a link is behind a port, the directory name is linkX, where X is ata_port_id
44 of the port. If a link is behind a PM, its name is linkX.Y where X is
45 ata_port_id of the parent port and Y the PM port.
46
47
48 What: /sys/class/ata_link/linkX[.Y]/hw_sata_spd_limit
49 What: /sys/class/ata_link/linkX[.Y]/sata_spd_limit
50 What: /sys/class/ata_link/linkX[.Y]/sata_spd
51 Date: May, 2010
52 KernelVersion: v2.6.37
53 Contact: Gwendal Grignou <gwendal@chromium.org>
54 Description:
55 hw_sata_spd_limit: (RO) Maximum speed supported by the
56 connected SATA device.
57
58 sata_spd_limit: (RO) Maximum speed imposed by libata.
59
60 sata_spd: (RO) Current speed of the link
61 eg. 1.5, 3 Gbps etc.
62
63
64 Files under /sys/class/ata_device
65 ---------------------------------
66
67 Behind each link, up to two ata devices are created.
68 The name of the directory is devX[.Y].Z where:
69 - X is ata_port_id of the port where the device is connected,
70 - Y the port of the PM if any, and
71 - Z the device id: for PATA, there is usually 2 devices [0,1], only 1 for SATA.
72
73
74 What: /sys/class/ata_device/devX[.Y].Z/spdn_cnt
75 What: /sys/class/ata_device/devX[.Y].Z/gscr
76 What: /sys/class/ata_device/devX[.Y].Z/ering
77 What: /sys/class/ata_device/devX[.Y].Z/id
78 What: /sys/class/ata_device/devX[.Y].Z/pio_mode
79 What: /sys/class/ata_device/devX[.Y].Z/xfer_mode
80 What: /sys/class/ata_device/devX[.Y].Z/dma_mode
81 What: /sys/class/ata_device/devX[.Y].Z/class
82 Date: May, 2010
83 KernelVersion: v2.6.37
84 Contact: Gwendal Grignou <gwendal@chromium.org>
85 Description:
86 spdn_cnt: (RO) Number of times libata decided to lower the
87 speed of link due to errors.
88
89 gscr: (RO) Cached result of the dump of PM GSCR
90 register. Valid registers are:
91
92 0: SATA_PMP_GSCR_PROD_ID,
93 1: SATA_PMP_GSCR_REV,
94 2: SATA_PMP_GSCR_PORT_INFO,
95 32: SATA_PMP_GSCR_ERROR,
96 33: SATA_PMP_GSCR_ERROR_EN,
97 64: SATA_PMP_GSCR_FEAT,
98 96: SATA_PMP_GSCR_FEAT_EN,
99 130: SATA_PMP_GSCR_SII_GPIO
100
101 Only valid if the device is a PM.
102
103 ering: (RO) Formatted output of the error ring of the
104 device.
105
106 id: (RO) Cached result of IDENTIFY command, as
107 described in ATA8 7.16 and 7.17. Only valid if
108 the device is not a PM.
109
110 pio_mode: (RO) PIO transfer mode used by the device.
111 Mostly used by PATA devices.
112
113 xfer_mode: (RO) Current transfer mode. Mostly used by
114 PATA devices.
115
116 dma_mode: (RO) DMA transfer mode used by the device.
117 Mostly used by PATA devices.
118
119 class: (RO) Device class. Can be "ata" for disk,
120 "atapi" for packet device, "pmp" for PM, or
121 "none" if no device was found behind the link.
122
123
124 What: /sys/class/ata_device/devX[.Y].Z/trim
125 Date: May, 2015
126 KernelVersion: v4.10
127 Contact: Gwendal Grignou <gwendal@chromium.org>
128 Description:
129 (RO) Shows the DSM TRIM mode currently used by the device. Valid
130 values are:
131
132 unsupported: Drive does not support DSM TRIM
133
134 unqueued: Drive supports unqueued DSM TRIM only
135
136 queued: Drive supports queued DSM TRIM
137
138 forced_unqueued: Drive's queued DSM support is known to
139 be buggy and only unqueued TRIM commands
140 are sent
141

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

ATA class root와 port

1-35
항목내용
What/sys/class/ata_*
DescriptionSystem의 ATA topology를 저장할 sysfs 위치를 제공합니다. 이를 통해 ATA object의 여러 정보를 검색할 수 있습니다.

/sys/class/ata_port 아래에는 각 port마다 ataX directory를 만듭니다. X는 port의 ata_port_id입니다. Device parent는 ATA host device입니다.

What전문 번역
/sys/class/ata_port/ataX/nr_pmp_links(RO) SATA Port Multiplier(PM)가 연결된 경우 그 뒤에 있는 link 수입니다.
/sys/class/ata_port/ataX/idle_irq(RO) Port가 idle인 동안 받은 IRQ 수입니다. 일부 ATA HBA에만 있습니다.
공통 항목내용
Date2010년 5월
KernelVersionv2.6.37
ContactGwendal Grignou <gwendal@chromium.org>
항목내용
What/sys/class/ata_port/ataX/port_no
Date2013년 5월
KernelVersionv3.11
ContactGwendal Grignou <gwendal@chromium.org>
Description(RO) Host-local port number입니다. Host controller를 등록할 때 controller에서 사용할 수 있는 port 수를 기준으로 port number를 추적합니다. Udev가 /dev/disk/by-path의 persistent link를 구성하는 데 이 attribute가 필요합니다.

ATA device directory 이름

64-71

각 link 뒤에는 ATA device를 최대 두 개 만듭니다. Directory 이름은 devX[.Y].Z이며 각 component 의미는 다음과 같습니다.

Component의미
XDevice가 연결된 port의 ata_port_id
YPM이 있다면 그 PM port
ZDevice ID. PATA에는 보통 device [0,1] 두 개, SATA에는 하나만 있습니다.

ATA device status와 transfer attributes

74-121
Attribute전문 번역
spdn_cnt(RO) Error 때문에 libata가 link speed를 낮추기로 결정한 횟수입니다.
gscr(RO) PM GSCR register dump의 cached result입니다. Device가 PM인 경우에만 유효합니다.
ering(RO) Device error ring을 formatting한 output입니다.
id(RO) ATA8 7.16과 7.17에 설명된 IDENTIFY command의 cached result입니다. Device가 PM이 아닌 경우에만 유효합니다.
pio_mode(RO) Device가 사용하는 PIO transfer mode입니다. 주로 PATA device가 사용합니다.
xfer_mode(RO) Current transfer mode입니다. 주로 PATA device가 사용합니다.
dma_mode(RO) Device가 사용하는 DMA transfer mode입니다. 주로 PATA device가 사용합니다.
class(RO) Device class입니다. Disk는 ata, packet device는 atapi, PM은 pmp, link 뒤에서 device를 찾지 못하면 none입니다.

이 attribute들은 /sys/class/ata_device/devX[.Y].Z/ 아래의 spdn_cnt, gscr, ering, id, pio_mode, xfer_mode, dma_mode, class file입니다.

GSCR registerSymbol
0SATA_PMP_GSCR_PROD_ID
1SATA_PMP_GSCR_REV
2SATA_PMP_GSCR_PORT_INFO
32SATA_PMP_GSCR_ERROR
33SATA_PMP_GSCR_ERROR_EN
64SATA_PMP_GSCR_FEAT
96SATA_PMP_GSCR_FEAT_EN
130SATA_PMP_GSCR_SII_GPIO
공통 항목내용
Date2010년 5월
KernelVersionv2.6.37
ContactGwendal Grignou <gwendal@chromium.org>

ATA DSM TRIM mode

124-140
항목내용
What/sys/class/ata_device/devX[.Y].Z/trim
Date2015년 5월
KernelVersionv4.10
ContactGwendal Grignou <gwendal@chromium.org>
Description(RO) Device가 현재 사용하는 DSM TRIM mode를 보여 줍니다.
의미
unsupportedDrive가 DSM TRIM을 지원하지 않음
unqueuedDrive가 unqueued DSM TRIM만 지원함
queuedDrive가 queued DSM TRIM을 지원함
forced_unqueuedDrive의 queued DSM support에 bug가 있다고 알려져 있어 unqueued TRIM command만 보냄
ATA sysfs topology와 naming
ATA host deviceataX where X is ata_port_idlinkX for direct linkdevX.Z
ATA host deviceataXSATA Port Multiplier15 links named linkX.Ydevices named devX.Y.Z
PATA linkUsually device IDs Z=0 and Z=1
SATA linkUsually one device ID
Hardware speed maximumlibata imposed limitCurrent negotiated sata_spd

ATA host 아래 port, direct 또는 PMP link, device가 계층적으로 생성되고 각 ID가 sysfs directory 이름에 반영된다.