xref: /linux/Documentation/ABI/stable/sysfs-block (revision ee94b00c1a648530333d9734200be7a45e6e00cd)
107c9093cSEric BiggersWhat:		/sys/block/<disk>/alignment_offset
207c9093cSEric BiggersDate:		April 2009
307c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
407c9093cSEric BiggersDescription:
507c9093cSEric Biggers		Storage devices may report a physical block size that is
607c9093cSEric Biggers		bigger than the logical block size (for instance a drive
707c9093cSEric Biggers		with 4KB physical sectors exposing 512-byte logical
807c9093cSEric Biggers		blocks to the operating system).  This parameter
907c9093cSEric Biggers		indicates how many bytes the beginning of the device is
1007c9093cSEric Biggers		offset from the disk's natural alignment.
1107c9093cSEric Biggers
1207c9093cSEric Biggers
1307c9093cSEric BiggersWhat:		/sys/block/<disk>/discard_alignment
1407c9093cSEric BiggersDate:		May 2011
1507c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
1607c9093cSEric BiggersDescription:
1707c9093cSEric Biggers		Devices that support discard functionality may
1807c9093cSEric Biggers		internally allocate space in units that are bigger than
1907c9093cSEric Biggers		the exported logical block size. The discard_alignment
2007c9093cSEric Biggers		parameter indicates how many bytes the beginning of the
2107c9093cSEric Biggers		device is offset from the internal allocation unit's
2207c9093cSEric Biggers		natural alignment.
2307c9093cSEric Biggers
249da3d1e9SJohn GarryWhat:		/sys/block/<disk>/atomic_write_max_bytes
259da3d1e9SJohn GarryDate:		February 2024
269da3d1e9SJohn GarryContact:	Himanshu Madhani <himanshu.madhani@oracle.com>
279da3d1e9SJohn GarryDescription:
289da3d1e9SJohn Garry		[RO] This parameter specifies the maximum atomic write
299da3d1e9SJohn Garry		size reported by the device. This parameter is relevant
309da3d1e9SJohn Garry		for merging of writes, where a merged atomic write
319da3d1e9SJohn Garry		operation must not exceed this number of bytes.
329da3d1e9SJohn Garry		This parameter may be greater than the value in
339da3d1e9SJohn Garry		atomic_write_unit_max_bytes as
349da3d1e9SJohn Garry		atomic_write_unit_max_bytes will be rounded down to a
359da3d1e9SJohn Garry		power-of-two and atomic_write_unit_max_bytes may also be
369da3d1e9SJohn Garry		limited by some other queue limits, such as max_segments.
379da3d1e9SJohn Garry		This parameter - along with atomic_write_unit_min_bytes
389da3d1e9SJohn Garry		and atomic_write_unit_max_bytes - will not be larger than
399da3d1e9SJohn Garry		max_hw_sectors_kb, but may be larger than max_sectors_kb.
409da3d1e9SJohn Garry
419da3d1e9SJohn Garry
429da3d1e9SJohn GarryWhat:		/sys/block/<disk>/atomic_write_unit_min_bytes
439da3d1e9SJohn GarryDate:		February 2024
449da3d1e9SJohn GarryContact:	Himanshu Madhani <himanshu.madhani@oracle.com>
459da3d1e9SJohn GarryDescription:
469da3d1e9SJohn Garry		[RO] This parameter specifies the smallest block which can
479da3d1e9SJohn Garry		be written atomically with an atomic write operation. All
489da3d1e9SJohn Garry		atomic write operations must begin at a
499da3d1e9SJohn Garry		atomic_write_unit_min boundary and must be multiples of
509da3d1e9SJohn Garry		atomic_write_unit_min. This value must be a power-of-two.
519da3d1e9SJohn Garry
529da3d1e9SJohn Garry
539da3d1e9SJohn GarryWhat:		/sys/block/<disk>/atomic_write_unit_max_bytes
549da3d1e9SJohn GarryDate:		February 2024
559da3d1e9SJohn GarryContact:	Himanshu Madhani <himanshu.madhani@oracle.com>
569da3d1e9SJohn GarryDescription:
579da3d1e9SJohn Garry		[RO] This parameter defines the largest block which can be
589da3d1e9SJohn Garry		written atomically with an atomic write operation. This
599da3d1e9SJohn Garry		value must be a multiple of atomic_write_unit_min and must
609da3d1e9SJohn Garry		be a power-of-two. This value will not be larger than
619da3d1e9SJohn Garry		atomic_write_max_bytes.
629da3d1e9SJohn Garry
639da3d1e9SJohn Garry
649da3d1e9SJohn GarryWhat:		/sys/block/<disk>/atomic_write_boundary_bytes
659da3d1e9SJohn GarryDate:		February 2024
669da3d1e9SJohn GarryContact:	Himanshu Madhani <himanshu.madhani@oracle.com>
679da3d1e9SJohn GarryDescription:
689da3d1e9SJohn Garry		[RO] A device may need to internally split an atomic write I/O
699da3d1e9SJohn Garry		which straddles a given logical block address boundary. This
709da3d1e9SJohn Garry		parameter specifies the size in bytes of the atomic boundary if
719da3d1e9SJohn Garry		one is reported by the device. This value must be a
729da3d1e9SJohn Garry		power-of-two and at least the size as in
739da3d1e9SJohn Garry		atomic_write_unit_max_bytes.
749da3d1e9SJohn Garry		Any attempt to merge atomic write I/Os must not result in a
759da3d1e9SJohn Garry		merged I/O which crosses this boundary (if any).
769da3d1e9SJohn Garry
7707c9093cSEric Biggers
7807c9093cSEric BiggersWhat:		/sys/block/<disk>/diskseq
7907c9093cSEric BiggersDate:		February 2021
80fd0ad5e9SAhmad FatoumContact:	Matteo Croce <teknoraver@meta.com>
8107c9093cSEric BiggersDescription:
8207c9093cSEric Biggers		The /sys/block/<disk>/diskseq files reports the disk
8307c9093cSEric Biggers		sequence number, which is a monotonically increasing
8407c9093cSEric Biggers		number assigned to every drive.
8507c9093cSEric Biggers		Some devices, like the loop device, refresh such number
8607c9093cSEric Biggers		every time the backing file is changed.
8707c9093cSEric Biggers		The value type is 64 bit unsigned.
8807c9093cSEric Biggers
8907c9093cSEric Biggers
9007c9093cSEric BiggersWhat:		/sys/block/<disk>/inflight
9107c9093cSEric BiggersDate:		October 2009
9207c9093cSEric BiggersContact:	Jens Axboe <axboe@kernel.dk>, Nikanth Karthikesan <knikanth@suse.de>
9307c9093cSEric BiggersDescription:
9407c9093cSEric Biggers		Reports the number of I/O requests currently in progress
9507c9093cSEric Biggers		(pending / in flight) in a device driver. This can be less
9607c9093cSEric Biggers		than the number of requests queued in the block device queue.
9707c9093cSEric Biggers		The report contains 2 fields: one for read requests
9807c9093cSEric Biggers		and one for write requests.
9907c9093cSEric Biggers		The value type is unsigned int.
10007c9093cSEric Biggers		Cf. Documentation/block/stat.rst which contains a single value for
10107c9093cSEric Biggers		requests in flight.
102849ab826SEric Biggers		This is related to /sys/block/<disk>/queue/nr_requests
10307c9093cSEric Biggers		and for SCSI device also its queue_depth.
10407c9093cSEric Biggers
10507c9093cSEric Biggers
10607c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/device_is_integrity_capable
10707c9093cSEric BiggersDate:		July 2014
10807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
10907c9093cSEric BiggersDescription:
11007c9093cSEric Biggers		Indicates whether a storage device is capable of storing
11107c9093cSEric Biggers		integrity metadata. Set if the device is T10 PI-capable.
112fc22b34eSMilan Broz		This flag is set to 1 if the storage media is formatted
113fc22b34eSMilan Broz		with T10 Protection Information. If the storage media is
114fc22b34eSMilan Broz		not formatted with T10 Protection Information, this flag
115fc22b34eSMilan Broz		is set to 0.
11607c9093cSEric Biggers
11707c9093cSEric Biggers
11807c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/format
11907c9093cSEric BiggersDate:		June 2008
12007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
12107c9093cSEric BiggersDescription:
12207c9093cSEric Biggers		Metadata format for integrity capable block device.
12307c9093cSEric Biggers		E.g. T10-DIF-TYPE1-CRC.
124fc22b34eSMilan Broz		This field describes the type of T10 Protection Information
125fc22b34eSMilan Broz		that the block device can send and receive.
126fc22b34eSMilan Broz		If the device can store application integrity metadata but
127fc22b34eSMilan Broz		no T10 Protection Information profile is used, this field
128fc22b34eSMilan Broz		contains "nop".
129fc22b34eSMilan Broz		If the device does not support integrity metadata, this
130fc22b34eSMilan Broz		field contains "none".
13107c9093cSEric Biggers
13207c9093cSEric Biggers
13307c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/protection_interval_bytes
13407c9093cSEric BiggersDate:		July 2015
13507c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
13607c9093cSEric BiggersDescription:
13707c9093cSEric Biggers		Describes the number of data bytes which are protected
13807c9093cSEric Biggers		by one integrity tuple. Typically the device's logical
13907c9093cSEric Biggers		block size.
14007c9093cSEric Biggers
14107c9093cSEric Biggers
14207c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/read_verify
14307c9093cSEric BiggersDate:		June 2008
14407c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
14507c9093cSEric BiggersDescription:
14607c9093cSEric Biggers		Indicates whether the block layer should verify the
14707c9093cSEric Biggers		integrity of read requests serviced by devices that
14807c9093cSEric Biggers		support sending integrity metadata.
14907c9093cSEric Biggers
15007c9093cSEric Biggers
15107c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/tag_size
15207c9093cSEric BiggersDate:		June 2008
15307c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
15407c9093cSEric BiggersDescription:
15507c9093cSEric Biggers		Number of bytes of integrity tag space available per
156fc22b34eSMilan Broz		protection_interval_bytes, which is typically
157fc22b34eSMilan Broz		the device's logical block size.
158fc22b34eSMilan Broz		This field describes the size of the application tag
159fc22b34eSMilan Broz		if the storage device is formatted with T10 Protection
160fc22b34eSMilan Broz		Information and permits use of the application tag.
161fc22b34eSMilan Broz		The tag_size is reported in bytes and indicates the
162fc22b34eSMilan Broz		space available for adding an opaque tag to each block
163fc22b34eSMilan Broz		(protection_interval_bytes).
164fc22b34eSMilan Broz		If the device does not support T10 Protection Information
165fc22b34eSMilan Broz		(even if the device provides application integrity
166fc22b34eSMilan Broz		metadata space), this field is set to 0.
16707c9093cSEric Biggers
16807c9093cSEric Biggers
16907c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/write_generate
17007c9093cSEric BiggersDate:		June 2008
17107c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
17207c9093cSEric BiggersDescription:
17307c9093cSEric Biggers		Indicates whether the block layer should automatically
17407c9093cSEric Biggers		generate checksums for write requests bound for
17507c9093cSEric Biggers		devices that support receiving integrity metadata.
17607c9093cSEric Biggers
17707c9093cSEric Biggers
178a4217c67SChristoph HellwigWhat:		/sys/block/<disk>/partscan
179a4217c67SChristoph HellwigDate:		May 2024
180a4217c67SChristoph HellwigContact:	Christoph Hellwig <hch@lst.de>
181a4217c67SChristoph HellwigDescription:
182a4217c67SChristoph Hellwig		The /sys/block/<disk>/partscan files reports if partition
183a4217c67SChristoph Hellwig		scanning is enabled for the disk.  It returns "1" if partition
184a4217c67SChristoph Hellwig		scanning is enabled, or "0" if not.  The value type is a 32-bit
185a4217c67SChristoph Hellwig		unsigned integer, but only "0" and "1" are valid values.
186a4217c67SChristoph Hellwig
187a4217c67SChristoph Hellwig
18807c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/alignment_offset
18907c9093cSEric BiggersDate:		April 2009
19007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
19107c9093cSEric BiggersDescription:
19207c9093cSEric Biggers		Storage devices may report a physical block size that is
19307c9093cSEric Biggers		bigger than the logical block size (for instance a drive
19407c9093cSEric Biggers		with 4KB physical sectors exposing 512-byte logical
19507c9093cSEric Biggers		blocks to the operating system).  This parameter
19607c9093cSEric Biggers		indicates how many bytes the beginning of the partition
19707c9093cSEric Biggers		is offset from the disk's natural alignment.
19807c9093cSEric Biggers
19907c9093cSEric Biggers
20007c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/discard_alignment
20107c9093cSEric BiggersDate:		May 2011
20207c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
20307c9093cSEric BiggersDescription:
20407c9093cSEric Biggers		Devices that support discard functionality may
20507c9093cSEric Biggers		internally allocate space in units that are bigger than
20607c9093cSEric Biggers		the exported logical block size. The discard_alignment
20707c9093cSEric Biggers		parameter indicates how many bytes the beginning of the
20807c9093cSEric Biggers		partition is offset from the internal allocation unit's
20907c9093cSEric Biggers		natural alignment.
21007c9093cSEric Biggers
21107c9093cSEric Biggers
21207c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/stat
21307c9093cSEric BiggersDate:		February 2008
21407c9093cSEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
21507c9093cSEric BiggersDescription:
21607c9093cSEric Biggers		The /sys/block/<disk>/<partition>/stat files display the
21707c9093cSEric Biggers		I/O statistics of partition <partition>. The format is the
21807c9093cSEric Biggers		same as the format of /sys/block/<disk>/stat.
21907c9093cSEric Biggers
22007c9093cSEric Biggers
221849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/add_random
222849ab826SEric BiggersDate:		June 2010
223849ab826SEric BiggersContact:	linux-block@vger.kernel.org
224849ab826SEric BiggersDescription:
225849ab826SEric Biggers		[RW] This file allows to turn off the disk entropy contribution.
226849ab826SEric Biggers		Default value of this file is '1'(on).
227849ab826SEric Biggers
228849ab826SEric Biggers
22907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/chunk_sectors
23007c9093cSEric BiggersDate:		September 2016
23107c9093cSEric BiggersContact:	Hannes Reinecke <hare@suse.com>
23207c9093cSEric BiggersDescription:
233849ab826SEric Biggers		[RO] chunk_sectors has different meaning depending on the type
23407c9093cSEric Biggers		of the disk. For a RAID device (dm-raid), chunk_sectors
235849ab826SEric Biggers		indicates the size in 512B sectors of the RAID volume stripe
236849ab826SEric Biggers		segment. For a zoned block device, either host-aware or
237849ab826SEric Biggers		host-managed, chunk_sectors indicates the size in 512B sectors
238849ab826SEric Biggers		of the zones of the device, with the eventual exception of the
239849ab826SEric Biggers		last zone of the device which may be smaller.
240849ab826SEric Biggers
241849ab826SEric Biggers
24220f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/
24320f01f16SEric BiggersDate:		February 2022
24420f01f16SEric BiggersContact:	linux-block@vger.kernel.org
24520f01f16SEric BiggersDescription:
24620f01f16SEric Biggers		The presence of this subdirectory of /sys/block/<disk>/queue/
24720f01f16SEric Biggers		indicates that the device supports inline encryption.  This
24820f01f16SEric Biggers		subdirectory contains files which describe the inline encryption
24920f01f16SEric Biggers		capabilities of the device.  For more information about inline
25020f01f16SEric Biggers		encryption, refer to Documentation/block/inline-encryption.rst.
25120f01f16SEric Biggers
25220f01f16SEric Biggers
253e35fde43SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/hw_wrapped_keys
254e35fde43SEric BiggersDate:		February 2025
255e35fde43SEric BiggersContact:	linux-block@vger.kernel.org
256e35fde43SEric BiggersDescription:
257e35fde43SEric Biggers		[RO] The presence of this file indicates that the device
258e35fde43SEric Biggers		supports hardware-wrapped inline encryption keys, i.e. key blobs
259e35fde43SEric Biggers		that can only be unwrapped and used by dedicated hardware.  For
260e35fde43SEric Biggers		more information about hardware-wrapped inline encryption keys,
261e35fde43SEric Biggers		see Documentation/block/inline-encryption.rst.
262e35fde43SEric Biggers
263e35fde43SEric Biggers
26420f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/max_dun_bits
26520f01f16SEric BiggersDate:		February 2022
26620f01f16SEric BiggersContact:	linux-block@vger.kernel.org
26720f01f16SEric BiggersDescription:
26820f01f16SEric Biggers		[RO] This file shows the maximum length, in bits, of data unit
26920f01f16SEric Biggers		numbers accepted by the device in inline encryption requests.
27020f01f16SEric Biggers
27120f01f16SEric Biggers
27220f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/modes/<mode>
27320f01f16SEric BiggersDate:		February 2022
27420f01f16SEric BiggersContact:	linux-block@vger.kernel.org
27520f01f16SEric BiggersDescription:
27620f01f16SEric Biggers		[RO] For each crypto mode (i.e., encryption/decryption
27720f01f16SEric Biggers		algorithm) the device supports with inline encryption, a file
27820f01f16SEric Biggers		will exist at this location.  It will contain a hexadecimal
27920f01f16SEric Biggers		number that is a bitmask of the supported data unit sizes, in
28020f01f16SEric Biggers		bytes, for that crypto mode.
28120f01f16SEric Biggers
28220f01f16SEric Biggers		Currently, the crypto modes that may be supported are:
28320f01f16SEric Biggers
28420f01f16SEric Biggers		   * AES-256-XTS
28520f01f16SEric Biggers		   * AES-128-CBC-ESSIV
28620f01f16SEric Biggers		   * Adiantum
28720f01f16SEric Biggers
28820f01f16SEric Biggers		For example, if a device supports AES-256-XTS inline encryption
28920f01f16SEric Biggers		with data unit sizes of 512 and 4096 bytes, the file
29020f01f16SEric Biggers		/sys/block/<disk>/queue/crypto/modes/AES-256-XTS will exist and
29120f01f16SEric Biggers		will contain "0x1200".
29220f01f16SEric Biggers
29320f01f16SEric Biggers
29420f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/num_keyslots
29520f01f16SEric BiggersDate:		February 2022
29620f01f16SEric BiggersContact:	linux-block@vger.kernel.org
29720f01f16SEric BiggersDescription:
29820f01f16SEric Biggers		[RO] This file shows the number of keyslots the device has for
29920f01f16SEric Biggers		use with inline encryption.
30020f01f16SEric Biggers
30120f01f16SEric Biggers
302e35fde43SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/raw_keys
303e35fde43SEric BiggersDate:		February 2025
304e35fde43SEric BiggersContact:	linux-block@vger.kernel.org
305e35fde43SEric BiggersDescription:
306e35fde43SEric Biggers		[RO] The presence of this file indicates that the device
307e35fde43SEric Biggers		supports raw inline encryption keys, i.e. keys that are managed
308e35fde43SEric Biggers		in raw, plaintext form in software.
309e35fde43SEric Biggers
310e35fde43SEric Biggers
311849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/dax
312849ab826SEric BiggersDate:		June 2016
313849ab826SEric BiggersContact:	linux-block@vger.kernel.org
314849ab826SEric BiggersDescription:
315849ab826SEric Biggers		[RO] This file indicates whether the device supports Direct
316849ab826SEric Biggers		Access (DAX), used by CPU-addressable storage to bypass the
317849ab826SEric Biggers		pagecache.  It shows '1' if true, '0' if not.
31807c9093cSEric Biggers
31907c9093cSEric Biggers
32007c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_granularity
32107c9093cSEric BiggersDate:		May 2011
32207c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
32307c9093cSEric BiggersDescription:
324849ab826SEric Biggers		[RO] Devices that support discard functionality may internally
325849ab826SEric Biggers		allocate space using units that are bigger than the logical
326849ab826SEric Biggers		block size. The discard_granularity parameter indicates the size
327849ab826SEric Biggers		of the internal allocation unit in bytes if reported by the
328849ab826SEric Biggers		device. Otherwise the discard_granularity will be set to match
329849ab826SEric Biggers		the device's physical block size. A discard_granularity of 0
330849ab826SEric Biggers		means that the device does not support discard functionality.
33107c9093cSEric Biggers
33207c9093cSEric Biggers
33307c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_bytes
33407c9093cSEric BiggersDate:		May 2011
33507c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
33607c9093cSEric BiggersDescription:
337849ab826SEric Biggers		[RW] While discard_max_hw_bytes is the hardware limit for the
338849ab826SEric Biggers		device, this setting is the software limit. Some devices exhibit
339849ab826SEric Biggers		large latencies when large discards are issued, setting this
340849ab826SEric Biggers		value lower will make Linux issue smaller discards and
341849ab826SEric Biggers		potentially help reduce latencies induced by large discard
342849ab826SEric Biggers		operations.
343849ab826SEric Biggers
344849ab826SEric Biggers
345849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_hw_bytes
346849ab826SEric BiggersDate:		July 2015
347849ab826SEric BiggersContact:	linux-block@vger.kernel.org
348849ab826SEric BiggersDescription:
349849ab826SEric Biggers		[RO] Devices that support discard functionality may have
350849ab826SEric Biggers		internal limits on the number of bytes that can be trimmed or
351849ab826SEric Biggers		unmapped in a single operation.  The `discard_max_hw_bytes`
352849ab826SEric Biggers		parameter is set by the device driver to the maximum number of
353849ab826SEric Biggers		bytes that can be discarded in a single operation.  Discard
354849ab826SEric Biggers		requests issued to the device must not exceed this limit.  A
355849ab826SEric Biggers		`discard_max_hw_bytes` value of 0 means that the device does not
356849ab826SEric Biggers		support discard functionality.
35707c9093cSEric Biggers
35807c9093cSEric Biggers
35907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_zeroes_data
36007c9093cSEric BiggersDate:		May 2011
36107c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
36207c9093cSEric BiggersDescription:
363849ab826SEric Biggers		[RO] Will always return 0.  Don't rely on any specific behavior
36407c9093cSEric Biggers		for discards, and don't read this file.
36507c9093cSEric Biggers
36607c9093cSEric Biggers
3673850e13fSKeith BuschWhat:		/sys/block/<disk>/queue/dma_alignment
3683850e13fSKeith BuschDate:		May 2022
3693850e13fSKeith BuschContact:	linux-block@vger.kernel.org
3703850e13fSKeith BuschDescription:
3713850e13fSKeith Busch		Reports the alignment that user space addresses must have to be
3723850e13fSKeith Busch		used for raw block device access with O_DIRECT and other driver
3733850e13fSKeith Busch		specific passthrough mechanisms.
3743850e13fSKeith Busch
3753850e13fSKeith Busch
376849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/fua
377849ab826SEric BiggersDate:		May 2018
378849ab826SEric BiggersContact:	linux-block@vger.kernel.org
379849ab826SEric BiggersDescription:
380849ab826SEric Biggers		[RO] Whether or not the block driver supports the FUA flag for
381849ab826SEric Biggers		write requests.  FUA stands for Force Unit Access. If the FUA
382849ab826SEric Biggers		flag is set that means that write requests must bypass the
383849ab826SEric Biggers		volatile cache of the storage device.
384849ab826SEric Biggers
385849ab826SEric Biggers
386849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/hw_sector_size
387849ab826SEric BiggersDate:		January 2008
388849ab826SEric BiggersContact:	linux-block@vger.kernel.org
389849ab826SEric BiggersDescription:
390849ab826SEric Biggers		[RO] This is the hardware sector size of the device, in bytes.
391849ab826SEric Biggers
392849ab826SEric Biggers
393849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/independent_access_ranges/
394849ab826SEric BiggersDate:		October 2021
395849ab826SEric BiggersContact:	linux-block@vger.kernel.org
396849ab826SEric BiggersDescription:
397849ab826SEric Biggers		[RO] The presence of this sub-directory of the
398849ab826SEric Biggers		/sys/block/xxx/queue/ directory indicates that the device is
399849ab826SEric Biggers		capable of executing requests targeting different sector ranges
400849ab826SEric Biggers		in parallel. For instance, single LUN multi-actuator hard-disks
401849ab826SEric Biggers		will have an independent_access_ranges directory if the device
402ebab9426SBjorn Helgaas		correctly advertises the sector ranges of its actuators.
403849ab826SEric Biggers
404849ab826SEric Biggers		The independent_access_ranges directory contains one directory
405849ab826SEric Biggers		per access range, with each range described using the sector
406849ab826SEric Biggers		(RO) attribute file to indicate the first sector of the range
407849ab826SEric Biggers		and the nr_sectors (RO) attribute file to indicate the total
408849ab826SEric Biggers		number of sectors in the range starting from the first sector of
409849ab826SEric Biggers		the range.  For example, a dual-actuator hard-disk will have the
410849ab826SEric Biggers		following independent_access_ranges entries.::
411849ab826SEric Biggers
412849ab826SEric Biggers			$ tree /sys/block/<disk>/queue/independent_access_ranges/
413849ab826SEric Biggers			/sys/block/<disk>/queue/independent_access_ranges/
414849ab826SEric Biggers			|-- 0
415849ab826SEric Biggers			|   |-- nr_sectors
416849ab826SEric Biggers			|   `-- sector
417849ab826SEric Biggers			`-- 1
418849ab826SEric Biggers			    |-- nr_sectors
419849ab826SEric Biggers			    `-- sector
420849ab826SEric Biggers
421849ab826SEric Biggers		The sector and nr_sectors attributes use 512B sector unit,
422849ab826SEric Biggers		regardless of the actual block size of the device. Independent
423849ab826SEric Biggers		access ranges do not overlap and include all sectors within the
424849ab826SEric Biggers		device capacity. The access ranges are numbered in increasing
425849ab826SEric Biggers		order of the range start sector, that is, the sector attribute
426849ab826SEric Biggers		of range 0 always has the value 0.
427849ab826SEric Biggers
428849ab826SEric Biggers
429849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll
430849ab826SEric BiggersDate:		November 2015
431849ab826SEric BiggersContact:	linux-block@vger.kernel.org
432849ab826SEric BiggersDescription:
433849ab826SEric Biggers		[RW] When read, this file shows whether polling is enabled (1)
434849ab826SEric Biggers		or disabled (0).  Writing '0' to this file will disable polling
435849ab826SEric Biggers		for this device.  Writing any non-zero value will enable this
436849ab826SEric Biggers		feature.
437849ab826SEric Biggers
438849ab826SEric Biggers
439849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll_delay
440849ab826SEric BiggersDate:		November 2016
441849ab826SEric BiggersContact:	linux-block@vger.kernel.org
442849ab826SEric BiggersDescription:
44354bdd67dSKeith Busch		[RW] This was used to control what kind of polling will be
44454bdd67dSKeith Busch		performed.  It is now fixed to -1, which is classic polling.
445849ab826SEric Biggers		In this mode, the CPU will repeatedly ask for completions
44654bdd67dSKeith Busch		without giving up any time.
44754bdd67dSKeith Busch		<deprecated>
448849ab826SEric Biggers
449849ab826SEric Biggers
45007c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/io_timeout
45107c9093cSEric BiggersDate:		November 2018
45207c9093cSEric BiggersContact:	Weiping Zhang <zhangweiping@didiglobal.com>
45307c9093cSEric BiggersDescription:
454849ab826SEric Biggers		[RW] io_timeout is the request timeout in milliseconds. If a
455849ab826SEric Biggers		request does not complete in this time then the block driver
456849ab826SEric Biggers		timeout handler is invoked. That timeout handler can decide to
457849ab826SEric Biggers		retry the request, to fail it or to start a device recovery
458849ab826SEric Biggers		strategy.
459849ab826SEric Biggers
460849ab826SEric Biggers
461849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/iostats
462849ab826SEric BiggersDate:		January 2009
463849ab826SEric BiggersContact:	linux-block@vger.kernel.org
464849ab826SEric BiggersDescription:
465849ab826SEric Biggers		[RW] This file is used to control (on/off) the iostats
466849ab826SEric Biggers		accounting of the disk.
46707c9093cSEric Biggers
468110234daSKeith BuschWhat:		/sys/block/<disk>/queue/iostats_passthrough
469110234daSKeith BuschDate:		October 2024
470110234daSKeith BuschContact:	linux-block@vger.kernel.org
471110234daSKeith BuschDescription:
472110234daSKeith Busch		[RW] This file is used to control (on/off) the iostats
473110234daSKeith Busch		accounting of the disk for passthrough commands.
474110234daSKeith Busch
47507c9093cSEric Biggers
47607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/logical_block_size
47707c9093cSEric BiggersDate:		May 2009
47807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
47907c9093cSEric BiggersDescription:
480849ab826SEric Biggers		[RO] This is the smallest unit the storage device can address.
481849ab826SEric Biggers		It is typically 512 bytes.
48207c9093cSEric Biggers
48307c9093cSEric Biggers
48407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_active_zones
48507c9093cSEric BiggersDate:		July 2020
48607c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
48707c9093cSEric BiggersDescription:
488849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
48907c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
49007c9093cSEric Biggers		any of the zone states: EXPLICIT OPEN, IMPLICIT OPEN or CLOSED,
49107c9093cSEric Biggers		is limited by this value. If this value is 0, there is no limit.
49207c9093cSEric Biggers
493849ab826SEric Biggers		If the host attempts to exceed this limit, the driver should
494849ab826SEric Biggers		report this error with BLK_STS_ZONE_ACTIVE_RESOURCE, which user
495849ab826SEric Biggers		space may see as the EOVERFLOW errno.
496849ab826SEric Biggers
497849ab826SEric Biggers
498849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_discard_segments
499849ab826SEric BiggersDate:		February 2017
500849ab826SEric BiggersContact:	linux-block@vger.kernel.org
501849ab826SEric BiggersDescription:
502849ab826SEric Biggers		[RO] The maximum number of DMA scatter/gather entries in a
503849ab826SEric Biggers		discard request.
504849ab826SEric Biggers
505849ab826SEric Biggers
506849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_hw_sectors_kb
507849ab826SEric BiggersDate:		September 2004
508849ab826SEric BiggersContact:	linux-block@vger.kernel.org
509849ab826SEric BiggersDescription:
510849ab826SEric Biggers		[RO] This is the maximum number of kilobytes supported in a
511849ab826SEric Biggers		single data transfer.
512849ab826SEric Biggers
513849ab826SEric Biggers
514849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_integrity_segments
515849ab826SEric BiggersDate:		September 2010
516849ab826SEric BiggersContact:	linux-block@vger.kernel.org
517849ab826SEric BiggersDescription:
518849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
519849ab826SEric Biggers		with integrity data that will be submitted by the block layer
520849ab826SEric Biggers		core to the associated block driver.
521849ab826SEric Biggers
52207c9093cSEric Biggers
52307c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_open_zones
52407c9093cSEric BiggersDate:		July 2020
52507c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
52607c9093cSEric BiggersDescription:
527849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
52807c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
529849ab826SEric Biggers		any of the zone states: EXPLICIT OPEN or IMPLICIT OPEN, is
530849ab826SEric Biggers		limited by this value. If this value is 0, there is no limit.
531849ab826SEric Biggers
532849ab826SEric Biggers
533849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_sectors_kb
534849ab826SEric BiggersDate:		September 2004
535849ab826SEric BiggersContact:	linux-block@vger.kernel.org
536849ab826SEric BiggersDescription:
537849ab826SEric Biggers		[RW] This is the maximum number of kilobytes that the block
538849ab826SEric Biggers		layer will allow for a filesystem request. Must be smaller than
539c9c77418SKeith Busch		or equal to the maximum size allowed by the hardware. Write 0
540c9c77418SKeith Busch		to use default kernel settings.
541849ab826SEric Biggers
542849ab826SEric Biggers
543849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segment_size
544849ab826SEric BiggersDate:		March 2010
545849ab826SEric BiggersContact:	linux-block@vger.kernel.org
546849ab826SEric BiggersDescription:
547849ab826SEric Biggers		[RO] Maximum size in bytes of a single element in a DMA
548849ab826SEric Biggers		scatter/gather list.
549849ab826SEric Biggers
550d2f526baSKeith BuschWhat:		/sys/block/<disk>/queue/max_write_streams
551d2f526baSKeith BuschDate:		November 2024
552d2f526baSKeith BuschContact:	linux-block@vger.kernel.org
553d2f526baSKeith BuschDescription:
554d2f526baSKeith Busch		[RO] Maximum number of write streams supported, 0 if not
555d2f526baSKeith Busch		supported. If supported, valid values are 1 through
556d2f526baSKeith Busch		max_write_streams, inclusive.
557849ab826SEric Biggers
558c23acfacSChristoph HellwigWhat:		/sys/block/<disk>/queue/write_stream_granularity
559c23acfacSChristoph HellwigDate:		November 2024
560c23acfacSChristoph HellwigContact:	linux-block@vger.kernel.org
561c23acfacSChristoph HellwigDescription:
562c23acfacSChristoph Hellwig		[RO] Granularity of a write stream in bytes.  The granularity
563c23acfacSChristoph Hellwig		of a write stream is the size that should be discarded or
564c23acfacSChristoph Hellwig		overwritten together to avoid write amplification in the device.
565c23acfacSChristoph Hellwig
566849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segments
567849ab826SEric BiggersDate:		March 2010
568849ab826SEric BiggersContact:	linux-block@vger.kernel.org
569849ab826SEric BiggersDescription:
570849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
571849ab826SEric Biggers		that is submitted to the associated block driver.
57207c9093cSEric Biggers
57307c9093cSEric Biggers
57407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/minimum_io_size
57507c9093cSEric BiggersDate:		April 2009
57607c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
57707c9093cSEric BiggersDescription:
578849ab826SEric Biggers		[RO] Storage devices may report a granularity or preferred
579849ab826SEric Biggers		minimum I/O size which is the smallest request the device can
580849ab826SEric Biggers		perform without incurring a performance penalty.  For disk
581849ab826SEric Biggers		drives this is often the physical block size.  For RAID arrays
582849ab826SEric Biggers		it is often the stripe chunk size.  A properly aligned multiple
583849ab826SEric Biggers		of minimum_io_size is the preferred request size for workloads
584849ab826SEric Biggers		where a high number of I/O operations is desired.
58507c9093cSEric Biggers
58607c9093cSEric Biggers
58707c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nomerges
58807c9093cSEric BiggersDate:		January 2010
5898b0551a7SEric BiggersContact:	linux-block@vger.kernel.org
59007c9093cSEric BiggersDescription:
591849ab826SEric Biggers		[RW] Standard I/O elevator operations include attempts to merge
592849ab826SEric Biggers		contiguous I/Os. For known random I/O loads these attempts will
593849ab826SEric Biggers		always fail and result in extra cycles being spent in the
594849ab826SEric Biggers		kernel. This allows one to turn off this behavior on one of two
595849ab826SEric Biggers		ways: When set to 1, complex merge checks are disabled, but the
596849ab826SEric Biggers		simple one-shot merges with the previous I/O request are
597849ab826SEric Biggers		enabled. When set to 2, all merge tries are disabled. The
598849ab826SEric Biggers		default value is 0 - which enables all types of merge tries.
599849ab826SEric Biggers
600849ab826SEric Biggers
601849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/nr_requests
602849ab826SEric BiggersDate:		July 2003
603849ab826SEric BiggersContact:	linux-block@vger.kernel.org
604849ab826SEric BiggersDescription:
605849ab826SEric Biggers		[RW] This controls how many requests may be allocated in the
606849ab826SEric Biggers		block layer for read or write requests. Note that the total
607849ab826SEric Biggers		allocated number may be twice this amount, since it applies only
608849ab826SEric Biggers		to reads or writes (not the accumulated sum).
609849ab826SEric Biggers
610849ab826SEric Biggers		To avoid priority inversion through request starvation, a
611849ab826SEric Biggers		request queue maintains a separate request pool per each cgroup
612849ab826SEric Biggers		when CONFIG_BLK_CGROUP is enabled, and this parameter applies to
613849ab826SEric Biggers		each such per-block-cgroup request pool.  IOW, if there are N
614849ab826SEric Biggers		block cgroups, each request queue may have up to N request
615849ab826SEric Biggers		pools, each independently regulated by nr_requests.
61607c9093cSEric Biggers
61707c9093cSEric Biggers
61807c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nr_zones
61907c9093cSEric BiggersDate:		November 2018
62007c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
62107c9093cSEric BiggersDescription:
622849ab826SEric Biggers		[RO] nr_zones indicates the total number of zones of a zoned
623849ab826SEric Biggers		block device ("host-aware" or "host-managed" zone model). For
624849ab826SEric Biggers		regular block devices, the value is always 0.
62507c9093cSEric Biggers
62607c9093cSEric Biggers
62707c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/optimal_io_size
62807c9093cSEric BiggersDate:		April 2009
62907c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
63007c9093cSEric BiggersDescription:
631849ab826SEric Biggers		[RO] Storage devices may report an optimal I/O size, which is
632849ab826SEric Biggers		the device's preferred unit for sustained I/O.  This is rarely
633849ab826SEric Biggers		reported for disk drives.  For RAID arrays it is usually the
634849ab826SEric Biggers		stripe width or the internal track size.  A properly aligned
635849ab826SEric Biggers		multiple of optimal_io_size is the preferred request size for
636849ab826SEric Biggers		workloads where sustained throughput is desired.  If no optimal
637849ab826SEric Biggers		I/O size is reported this file contains 0.
63807c9093cSEric Biggers
63907c9093cSEric Biggers
64007c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/physical_block_size
64107c9093cSEric BiggersDate:		May 2009
64207c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
64307c9093cSEric BiggersDescription:
644849ab826SEric Biggers		[RO] This is the smallest unit a physical storage device can
645849ab826SEric Biggers		write atomically.  It is usually the same as the logical block
646849ab826SEric Biggers		size but may be bigger.  One example is SATA drives with 4KB
647849ab826SEric Biggers		sectors that expose a 512-byte logical block size to the
648849ab826SEric Biggers		operating system.  For stacked block devices the
649849ab826SEric Biggers		physical_block_size variable contains the maximum
650849ab826SEric Biggers		physical_block_size of the component devices.
651849ab826SEric Biggers
652849ab826SEric Biggers
653849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/read_ahead_kb
654849ab826SEric BiggersDate:		May 2004
655849ab826SEric BiggersContact:	linux-block@vger.kernel.org
656849ab826SEric BiggersDescription:
657849ab826SEric Biggers		[RW] Maximum number of kilobytes to read-ahead for filesystems
658849ab826SEric Biggers		on this block device.
659849ab826SEric Biggers
6600740e543SYafang Shao		For MADV_HUGEPAGE, the readahead size may exceed this setting
6610740e543SYafang Shao		since its granularity is based on the hugepage size.
6620740e543SYafang Shao
663849ab826SEric Biggers
664849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rotational
665849ab826SEric BiggersDate:		January 2009
666849ab826SEric BiggersContact:	linux-block@vger.kernel.org
667849ab826SEric BiggersDescription:
668849ab826SEric Biggers		[RW] This file is used to stat if the device is of rotational
669849ab826SEric Biggers		type or non-rotational type.
670849ab826SEric Biggers
671849ab826SEric Biggers
672849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rq_affinity
673849ab826SEric BiggersDate:		September 2008
674849ab826SEric BiggersContact:	linux-block@vger.kernel.org
675849ab826SEric BiggersDescription:
676849ab826SEric Biggers		[RW] If this option is '1', the block layer will migrate request
677849ab826SEric Biggers		completions to the cpu "group" that originally submitted the
678849ab826SEric Biggers		request. For some workloads this provides a significant
679849ab826SEric Biggers		reduction in CPU cycles due to caching effects.
680849ab826SEric Biggers
681849ab826SEric Biggers		For storage configurations that need to maximize distribution of
682849ab826SEric Biggers		completion processing setting this option to '2' forces the
683849ab826SEric Biggers		completion to run on the requesting cpu (bypassing the "group"
684849ab826SEric Biggers		aggregation logic).
685849ab826SEric Biggers
686849ab826SEric Biggers
687849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/scheduler
688849ab826SEric BiggersDate:		October 2004
689849ab826SEric BiggersContact:	linux-block@vger.kernel.org
690849ab826SEric BiggersDescription:
691849ab826SEric Biggers		[RW] When read, this file will display the current and available
692849ab826SEric Biggers		IO schedulers for this block device. The currently active IO
693849ab826SEric Biggers		scheduler will be enclosed in [] brackets. Writing an IO
694849ab826SEric Biggers		scheduler name to this file will switch control of this block
695849ab826SEric Biggers		device to that new IO scheduler. Note that writing an IO
696849ab826SEric Biggers		scheduler name to this file will attempt to load that IO
697849ab826SEric Biggers		scheduler module, if it isn't already present in the system.
698849ab826SEric Biggers
699849ab826SEric Biggers
70011630104SEric BiggersWhat:		/sys/block/<disk>/queue/stable_writes
70111630104SEric BiggersDate:		September 2020
70211630104SEric BiggersContact:	linux-block@vger.kernel.org
70311630104SEric BiggersDescription:
70411630104SEric Biggers		[RW] This file will contain '1' if memory must not be modified
70511630104SEric Biggers		while it is being used in a write request to this device.  When
70611630104SEric Biggers		this is the case and the kernel is performing writeback of a
70711630104SEric Biggers		page, the kernel will wait for writeback to complete before
70811630104SEric Biggers		allowing the page to be modified again, rather than allowing
70911630104SEric Biggers		immediate modification as is normally the case.  This
71011630104SEric Biggers		restriction arises when the device accesses the memory multiple
71111630104SEric Biggers		times where the same data must be seen every time -- for
71211630104SEric Biggers		example, once to calculate a checksum and once to actually write
71311630104SEric Biggers		the data.  If no such restriction exists, this file will contain
71411630104SEric Biggers		'0'.  This file is writable for testing purposes.
71511630104SEric Biggers
7168bc2f7c6SEric BiggersWhat:		/sys/block/<disk>/queue/virt_boundary_mask
7178bc2f7c6SEric BiggersDate:		April 2021
7188bc2f7c6SEric BiggersContact:	linux-block@vger.kernel.org
7198bc2f7c6SEric BiggersDescription:
7208bc2f7c6SEric Biggers		[RO] This file shows the I/O segment memory alignment mask for
7218bc2f7c6SEric Biggers		the block device.  I/O requests to this device will be split
7228bc2f7c6SEric Biggers		between segments wherever either the memory address of the end
7238bc2f7c6SEric Biggers		of the previous segment or the memory address of the beginning
7248bc2f7c6SEric Biggers		of the current segment is not aligned to virt_boundary_mask + 1
7258bc2f7c6SEric Biggers		bytes.
7268bc2f7c6SEric Biggers
7278bc2f7c6SEric Biggers
728849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/wbt_lat_usec
729849ab826SEric BiggersDate:		November 2016
730849ab826SEric BiggersContact:	linux-block@vger.kernel.org
731849ab826SEric BiggersDescription:
732849ab826SEric Biggers		[RW] If the device is registered for writeback throttling, then
733849ab826SEric Biggers		this file shows the target minimum read latency. If this latency
734*0452f083STang Yizhou		is exceeded in a given window of time (see curr_win_nsec), then
735849ab826SEric Biggers		the writeback throttling will start scaling back writes. Writing
736849ab826SEric Biggers		a value of '0' to this file disables the feature. Writing a
737849ab826SEric Biggers		value of '-1' to this file resets the value to the default
738849ab826SEric Biggers		setting.
739849ab826SEric Biggers
740849ab826SEric Biggers
741849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/write_cache
742849ab826SEric BiggersDate:		April 2016
743849ab826SEric BiggersContact:	linux-block@vger.kernel.org
744849ab826SEric BiggersDescription:
745849ab826SEric Biggers		[RW] When read, this file will display whether the device has
746849ab826SEric Biggers		write back caching enabled or not. It will return "write back"
747849ab826SEric Biggers		for the former case, and "write through" for the latter. Writing
748849ab826SEric Biggers		to this file can change the kernels view of the device, but it
749849ab826SEric Biggers		doesn't alter the device state. This means that it might not be
750849ab826SEric Biggers		safe to toggle the setting from "write back" to "write through",
751849ab826SEric Biggers		since that will also eliminate cache flushes issued by the
752849ab826SEric Biggers		kernel.
75307c9093cSEric Biggers
75407c9093cSEric Biggers
75507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_same_max_bytes
75607c9093cSEric BiggersDate:		January 2012
75707c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
75807c9093cSEric BiggersDescription:
759849ab826SEric Biggers		[RO] Some devices support a write same operation in which a
76007c9093cSEric Biggers		single data block can be written to a range of several
761849ab826SEric Biggers		contiguous blocks on storage. This can be used to wipe areas on
762849ab826SEric Biggers		disk or to initialize drives in a RAID configuration.
763849ab826SEric Biggers		write_same_max_bytes indicates how many bytes can be written in
764849ab826SEric Biggers		a single write same command. If write_same_max_bytes is 0, write
765849ab826SEric Biggers		same is not supported by the device.
76607c9093cSEric Biggers
76707c9093cSEric Biggers
76807c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_zeroes_max_bytes
76907c9093cSEric BiggersDate:		November 2016
77007c9093cSEric BiggersContact:	Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
77107c9093cSEric BiggersDescription:
772849ab826SEric Biggers		[RO] Devices that support write zeroes operation in which a
773849ab826SEric Biggers		single request can be issued to zero out the range of contiguous
774849ab826SEric Biggers		blocks on storage without having any payload in the request.
775849ab826SEric Biggers		This can be used to optimize writing zeroes to the devices.
776849ab826SEric Biggers		write_zeroes_max_bytes indicates how many bytes can be written
777849ab826SEric Biggers		in a single write zeroes command. If write_zeroes_max_bytes is
778849ab826SEric Biggers		0, write zeroes is not supported by the device.
779849ab826SEric Biggers
780849ab826SEric Biggers
7810c40d7cbSZhang YiWhat:		/sys/block/<disk>/queue/write_zeroes_unmap_max_hw_bytes
7820c40d7cbSZhang YiDate:		January 2025
7830c40d7cbSZhang YiContact:	Zhang Yi <yi.zhang@huawei.com>
7840c40d7cbSZhang YiDescription:
7850c40d7cbSZhang Yi		[RO] This file indicates whether a device supports zeroing data
7860c40d7cbSZhang Yi		in a specified block range without incurring the cost of
7870c40d7cbSZhang Yi		physically writing zeroes to the media for each individual
7880c40d7cbSZhang Yi		block. If this parameter is set to write_zeroes_max_bytes, the
7890c40d7cbSZhang Yi		device implements a zeroing operation which opportunistically
7900c40d7cbSZhang Yi		avoids writing zeroes to media while still guaranteeing that
7910c40d7cbSZhang Yi		subsequent reads from the specified block range will return
7920c40d7cbSZhang Yi		zeroed data. This operation is a best-effort optimization, a
7930c40d7cbSZhang Yi		device may fall back to physically writing zeroes to the media
7940c40d7cbSZhang Yi		due to other factors such as misalignment or being asked to
7950c40d7cbSZhang Yi		clear a block range smaller than the device's internal
7960c40d7cbSZhang Yi		allocation unit. If this parameter is set to 0, the device may
7970c40d7cbSZhang Yi		have to write each logical block media during a zeroing
7980c40d7cbSZhang Yi		operation.
7990c40d7cbSZhang Yi
8000c40d7cbSZhang Yi
8010c40d7cbSZhang YiWhat:		/sys/block/<disk>/queue/write_zeroes_unmap_max_bytes
8020c40d7cbSZhang YiDate:		January 2025
8030c40d7cbSZhang YiContact:	Zhang Yi <yi.zhang@huawei.com>
8040c40d7cbSZhang YiDescription:
8050c40d7cbSZhang Yi		[RW] While write_zeroes_unmap_max_hw_bytes is the hardware limit
8060c40d7cbSZhang Yi		for the device, this setting is the software limit. Since the
8070c40d7cbSZhang Yi		unmap write zeroes operation is a best-effort optimization, some
8080c40d7cbSZhang Yi		devices may still physically writing zeroes to media. So the
8090c40d7cbSZhang Yi		speed of this operation is not guaranteed. Writing a value of
8100c40d7cbSZhang Yi		'0' to this file disables this operation. Otherwise, this
8110c40d7cbSZhang Yi		parameter should be equal to write_zeroes_unmap_max_hw_bytes.
8120c40d7cbSZhang Yi
8130c40d7cbSZhang Yi
814849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_append_max_bytes
815849ab826SEric BiggersDate:		May 2020
816849ab826SEric BiggersContact:	linux-block@vger.kernel.org
817849ab826SEric BiggersDescription:
818849ab826SEric Biggers		[RO] This is the maximum number of bytes that can be written to
819849ab826SEric Biggers		a sequential zone of a zoned block device using a zone append
820849ab826SEric Biggers		write operation (REQ_OP_ZONE_APPEND). This value is always 0 for
821849ab826SEric Biggers		regular block devices.
822849ab826SEric Biggers
823849ab826SEric Biggers
824849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_write_granularity
825849ab826SEric BiggersDate:		January 2021
826849ab826SEric BiggersContact:	linux-block@vger.kernel.org
827849ab826SEric BiggersDescription:
828849ab826SEric Biggers		[RO] This indicates the alignment constraint, in bytes, for
829849ab826SEric Biggers		write operations in sequential zones of zoned block devices
830849ab826SEric Biggers		(devices with a zoned attributed that reports "host-managed" or
831849ab826SEric Biggers		"host-aware"). This value is always 0 for regular block devices.
83207c9093cSEric Biggers
83307c9093cSEric Biggers
83407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/zoned
83507c9093cSEric BiggersDate:		September 2016
83607c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
83707c9093cSEric BiggersDescription:
838849ab826SEric Biggers		[RO] zoned indicates if the device is a zoned block device and
839849ab826SEric Biggers		the zone model of the device if it is indeed zoned.  The
840849ab826SEric Biggers		possible values indicated by zoned are "none" for regular block
841849ab826SEric Biggers		devices and "host-aware" or "host-managed" for zoned block
842849ab826SEric Biggers		devices. The characteristics of host-aware and host-managed
843849ab826SEric Biggers		zoned block devices are described in the ZBC (Zoned Block
844849ab826SEric Biggers		Commands) and ZAC (Zoned Device ATA Command Set) standards.
845849ab826SEric Biggers		These standards also define the "drive-managed" zone model.
846849ab826SEric Biggers		However, since drive-managed zoned block devices do not support
847849ab826SEric Biggers		zone commands, they will be treated as regular block devices and
848849ab826SEric Biggers		zoned will report "none".
84907c9093cSEric Biggers
85007c9093cSEric Biggers
851e3306221SSagi GrimbergWhat:		/sys/block/<disk>/hidden
852e3306221SSagi GrimbergDate:		March 2023
853e3306221SSagi GrimbergContact:	linux-block@vger.kernel.org
854e3306221SSagi GrimbergDescription:
855e3306221SSagi Grimberg		[RO] the block device is hidden. it doesn’t produce events, and
856e3306221SSagi Grimberg		can’t be opened from userspace or using blkdev_get*.
857e3306221SSagi Grimberg		Used for the underlying components of multipath devices.
858e3306221SSagi Grimberg
859e3306221SSagi Grimberg
860ae7a7a53SEric BiggersWhat:		/sys/block/<disk>/stat
861ae7a7a53SEric BiggersDate:		February 2008
862ae7a7a53SEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
863ae7a7a53SEric BiggersDescription:
864ae7a7a53SEric Biggers		The /sys/block/<disk>/stat files displays the I/O
865ae7a7a53SEric Biggers		statistics of disk <disk>. They contain 11 fields:
866ae7a7a53SEric Biggers
867ae7a7a53SEric Biggers		==  ==============================================
868ae7a7a53SEric Biggers		 1  reads completed successfully
869ae7a7a53SEric Biggers		 2  reads merged
870ae7a7a53SEric Biggers		 3  sectors read
871ae7a7a53SEric Biggers		 4  time spent reading (ms)
872ae7a7a53SEric Biggers		 5  writes completed
873ae7a7a53SEric Biggers		 6  writes merged
874ae7a7a53SEric Biggers		 7  sectors written
875ae7a7a53SEric Biggers		 8  time spent writing (ms)
876ae7a7a53SEric Biggers		 9  I/Os currently in progress
877ae7a7a53SEric Biggers		10  time spent doing I/Os (ms)
878ae7a7a53SEric Biggers		11  weighted time spent doing I/Os (ms)
879ae7a7a53SEric Biggers		12  discards completed
880ae7a7a53SEric Biggers		13  discards merged
881ae7a7a53SEric Biggers		14  sectors discarded
882ae7a7a53SEric Biggers		15  time spent discarding (ms)
883ae7a7a53SEric Biggers		16  flush requests completed
884ae7a7a53SEric Biggers		17  time spent flushing (ms)
885ae7a7a53SEric Biggers		==  ==============================================
886ae7a7a53SEric Biggers
887ae7a7a53SEric Biggers		For more details refer Documentation/admin-guide/iostats.rst
888