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
2407c9093cSEric Biggers
2507c9093cSEric BiggersWhat:		/sys/block/<disk>/diskseq
2607c9093cSEric BiggersDate:		February 2021
2707c9093cSEric BiggersContact:	Matteo Croce <mcroce@microsoft.com>
2807c9093cSEric BiggersDescription:
2907c9093cSEric Biggers		The /sys/block/<disk>/diskseq files reports the disk
3007c9093cSEric Biggers		sequence number, which is a monotonically increasing
3107c9093cSEric Biggers		number assigned to every drive.
3207c9093cSEric Biggers		Some devices, like the loop device, refresh such number
3307c9093cSEric Biggers		every time the backing file is changed.
3407c9093cSEric Biggers		The value type is 64 bit unsigned.
3507c9093cSEric Biggers
3607c9093cSEric Biggers
3707c9093cSEric BiggersWhat:		/sys/block/<disk>/inflight
3807c9093cSEric BiggersDate:		October 2009
3907c9093cSEric BiggersContact:	Jens Axboe <axboe@kernel.dk>, Nikanth Karthikesan <knikanth@suse.de>
4007c9093cSEric BiggersDescription:
4107c9093cSEric Biggers		Reports the number of I/O requests currently in progress
4207c9093cSEric Biggers		(pending / in flight) in a device driver. This can be less
4307c9093cSEric Biggers		than the number of requests queued in the block device queue.
4407c9093cSEric Biggers		The report contains 2 fields: one for read requests
4507c9093cSEric Biggers		and one for write requests.
4607c9093cSEric Biggers		The value type is unsigned int.
4707c9093cSEric Biggers		Cf. Documentation/block/stat.rst which contains a single value for
4807c9093cSEric Biggers		requests in flight.
49849ab826SEric Biggers		This is related to /sys/block/<disk>/queue/nr_requests
5007c9093cSEric Biggers		and for SCSI device also its queue_depth.
5107c9093cSEric Biggers
5207c9093cSEric Biggers
5307c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/device_is_integrity_capable
5407c9093cSEric BiggersDate:		July 2014
5507c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
5607c9093cSEric BiggersDescription:
5707c9093cSEric Biggers		Indicates whether a storage device is capable of storing
5807c9093cSEric Biggers		integrity metadata. Set if the device is T10 PI-capable.
5907c9093cSEric Biggers
6007c9093cSEric Biggers
6107c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/format
6207c9093cSEric BiggersDate:		June 2008
6307c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
6407c9093cSEric BiggersDescription:
6507c9093cSEric Biggers		Metadata format for integrity capable block device.
6607c9093cSEric Biggers		E.g. T10-DIF-TYPE1-CRC.
6707c9093cSEric Biggers
6807c9093cSEric Biggers
6907c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/protection_interval_bytes
7007c9093cSEric BiggersDate:		July 2015
7107c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
7207c9093cSEric BiggersDescription:
7307c9093cSEric Biggers		Describes the number of data bytes which are protected
7407c9093cSEric Biggers		by one integrity tuple. Typically the device's logical
7507c9093cSEric Biggers		block size.
7607c9093cSEric Biggers
7707c9093cSEric Biggers
7807c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/read_verify
7907c9093cSEric BiggersDate:		June 2008
8007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
8107c9093cSEric BiggersDescription:
8207c9093cSEric Biggers		Indicates whether the block layer should verify the
8307c9093cSEric Biggers		integrity of read requests serviced by devices that
8407c9093cSEric Biggers		support sending integrity metadata.
8507c9093cSEric Biggers
8607c9093cSEric Biggers
8707c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/tag_size
8807c9093cSEric BiggersDate:		June 2008
8907c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
9007c9093cSEric BiggersDescription:
9107c9093cSEric Biggers		Number of bytes of integrity tag space available per
9207c9093cSEric Biggers		512 bytes of data.
9307c9093cSEric Biggers
9407c9093cSEric Biggers
9507c9093cSEric BiggersWhat:		/sys/block/<disk>/integrity/write_generate
9607c9093cSEric BiggersDate:		June 2008
9707c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
9807c9093cSEric BiggersDescription:
9907c9093cSEric Biggers		Indicates whether the block layer should automatically
10007c9093cSEric Biggers		generate checksums for write requests bound for
10107c9093cSEric Biggers		devices that support receiving integrity metadata.
10207c9093cSEric Biggers
10307c9093cSEric Biggers
10407c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/alignment_offset
10507c9093cSEric BiggersDate:		April 2009
10607c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
10707c9093cSEric BiggersDescription:
10807c9093cSEric Biggers		Storage devices may report a physical block size that is
10907c9093cSEric Biggers		bigger than the logical block size (for instance a drive
11007c9093cSEric Biggers		with 4KB physical sectors exposing 512-byte logical
11107c9093cSEric Biggers		blocks to the operating system).  This parameter
11207c9093cSEric Biggers		indicates how many bytes the beginning of the partition
11307c9093cSEric Biggers		is offset from the disk's natural alignment.
11407c9093cSEric Biggers
11507c9093cSEric Biggers
11607c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/discard_alignment
11707c9093cSEric BiggersDate:		May 2011
11807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
11907c9093cSEric BiggersDescription:
12007c9093cSEric Biggers		Devices that support discard functionality may
12107c9093cSEric Biggers		internally allocate space in units that are bigger than
12207c9093cSEric Biggers		the exported logical block size. The discard_alignment
12307c9093cSEric Biggers		parameter indicates how many bytes the beginning of the
12407c9093cSEric Biggers		partition is offset from the internal allocation unit's
12507c9093cSEric Biggers		natural alignment.
12607c9093cSEric Biggers
12707c9093cSEric Biggers
12807c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/stat
12907c9093cSEric BiggersDate:		February 2008
13007c9093cSEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
13107c9093cSEric BiggersDescription:
13207c9093cSEric Biggers		The /sys/block/<disk>/<partition>/stat files display the
13307c9093cSEric Biggers		I/O statistics of partition <partition>. The format is the
13407c9093cSEric Biggers		same as the format of /sys/block/<disk>/stat.
13507c9093cSEric Biggers
13607c9093cSEric Biggers
137849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/add_random
138849ab826SEric BiggersDate:		June 2010
139849ab826SEric BiggersContact:	linux-block@vger.kernel.org
140849ab826SEric BiggersDescription:
141849ab826SEric Biggers		[RW] This file allows to turn off the disk entropy contribution.
142849ab826SEric Biggers		Default value of this file is '1'(on).
143849ab826SEric Biggers
144849ab826SEric Biggers
14507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/chunk_sectors
14607c9093cSEric BiggersDate:		September 2016
14707c9093cSEric BiggersContact:	Hannes Reinecke <hare@suse.com>
14807c9093cSEric BiggersDescription:
149849ab826SEric Biggers		[RO] chunk_sectors has different meaning depending on the type
15007c9093cSEric Biggers		of the disk. For a RAID device (dm-raid), chunk_sectors
151849ab826SEric Biggers		indicates the size in 512B sectors of the RAID volume stripe
152849ab826SEric Biggers		segment. For a zoned block device, either host-aware or
153849ab826SEric Biggers		host-managed, chunk_sectors indicates the size in 512B sectors
154849ab826SEric Biggers		of the zones of the device, with the eventual exception of the
155849ab826SEric Biggers		last zone of the device which may be smaller.
156849ab826SEric Biggers
157849ab826SEric Biggers
15820f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/
15920f01f16SEric BiggersDate:		February 2022
16020f01f16SEric BiggersContact:	linux-block@vger.kernel.org
16120f01f16SEric BiggersDescription:
16220f01f16SEric Biggers		The presence of this subdirectory of /sys/block/<disk>/queue/
16320f01f16SEric Biggers		indicates that the device supports inline encryption.  This
16420f01f16SEric Biggers		subdirectory contains files which describe the inline encryption
16520f01f16SEric Biggers		capabilities of the device.  For more information about inline
16620f01f16SEric Biggers		encryption, refer to Documentation/block/inline-encryption.rst.
16720f01f16SEric Biggers
16820f01f16SEric Biggers
16920f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/max_dun_bits
17020f01f16SEric BiggersDate:		February 2022
17120f01f16SEric BiggersContact:	linux-block@vger.kernel.org
17220f01f16SEric BiggersDescription:
17320f01f16SEric Biggers		[RO] This file shows the maximum length, in bits, of data unit
17420f01f16SEric Biggers		numbers accepted by the device in inline encryption requests.
17520f01f16SEric Biggers
17620f01f16SEric Biggers
17720f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/modes/<mode>
17820f01f16SEric BiggersDate:		February 2022
17920f01f16SEric BiggersContact:	linux-block@vger.kernel.org
18020f01f16SEric BiggersDescription:
18120f01f16SEric Biggers		[RO] For each crypto mode (i.e., encryption/decryption
18220f01f16SEric Biggers		algorithm) the device supports with inline encryption, a file
18320f01f16SEric Biggers		will exist at this location.  It will contain a hexadecimal
18420f01f16SEric Biggers		number that is a bitmask of the supported data unit sizes, in
18520f01f16SEric Biggers		bytes, for that crypto mode.
18620f01f16SEric Biggers
18720f01f16SEric Biggers		Currently, the crypto modes that may be supported are:
18820f01f16SEric Biggers
18920f01f16SEric Biggers		   * AES-256-XTS
19020f01f16SEric Biggers		   * AES-128-CBC-ESSIV
19120f01f16SEric Biggers		   * Adiantum
19220f01f16SEric Biggers
19320f01f16SEric Biggers		For example, if a device supports AES-256-XTS inline encryption
19420f01f16SEric Biggers		with data unit sizes of 512 and 4096 bytes, the file
19520f01f16SEric Biggers		/sys/block/<disk>/queue/crypto/modes/AES-256-XTS will exist and
19620f01f16SEric Biggers		will contain "0x1200".
19720f01f16SEric Biggers
19820f01f16SEric Biggers
19920f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/num_keyslots
20020f01f16SEric BiggersDate:		February 2022
20120f01f16SEric BiggersContact:	linux-block@vger.kernel.org
20220f01f16SEric BiggersDescription:
20320f01f16SEric Biggers		[RO] This file shows the number of keyslots the device has for
20420f01f16SEric Biggers		use with inline encryption.
20520f01f16SEric Biggers
20620f01f16SEric Biggers
207849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/dax
208849ab826SEric BiggersDate:		June 2016
209849ab826SEric BiggersContact:	linux-block@vger.kernel.org
210849ab826SEric BiggersDescription:
211849ab826SEric Biggers		[RO] This file indicates whether the device supports Direct
212849ab826SEric Biggers		Access (DAX), used by CPU-addressable storage to bypass the
213849ab826SEric Biggers		pagecache.  It shows '1' if true, '0' if not.
21407c9093cSEric Biggers
21507c9093cSEric Biggers
21607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_granularity
21707c9093cSEric BiggersDate:		May 2011
21807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
21907c9093cSEric BiggersDescription:
220849ab826SEric Biggers		[RO] Devices that support discard functionality may internally
221849ab826SEric Biggers		allocate space using units that are bigger than the logical
222849ab826SEric Biggers		block size. The discard_granularity parameter indicates the size
223849ab826SEric Biggers		of the internal allocation unit in bytes if reported by the
224849ab826SEric Biggers		device. Otherwise the discard_granularity will be set to match
225849ab826SEric Biggers		the device's physical block size. A discard_granularity of 0
226849ab826SEric Biggers		means that the device does not support discard functionality.
22707c9093cSEric Biggers
22807c9093cSEric Biggers
22907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_bytes
23007c9093cSEric BiggersDate:		May 2011
23107c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
23207c9093cSEric BiggersDescription:
233849ab826SEric Biggers		[RW] While discard_max_hw_bytes is the hardware limit for the
234849ab826SEric Biggers		device, this setting is the software limit. Some devices exhibit
235849ab826SEric Biggers		large latencies when large discards are issued, setting this
236849ab826SEric Biggers		value lower will make Linux issue smaller discards and
237849ab826SEric Biggers		potentially help reduce latencies induced by large discard
238849ab826SEric Biggers		operations.
239849ab826SEric Biggers
240849ab826SEric Biggers
241849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_hw_bytes
242849ab826SEric BiggersDate:		July 2015
243849ab826SEric BiggersContact:	linux-block@vger.kernel.org
244849ab826SEric BiggersDescription:
245849ab826SEric Biggers		[RO] Devices that support discard functionality may have
246849ab826SEric Biggers		internal limits on the number of bytes that can be trimmed or
247849ab826SEric Biggers		unmapped in a single operation.  The `discard_max_hw_bytes`
248849ab826SEric Biggers		parameter is set by the device driver to the maximum number of
249849ab826SEric Biggers		bytes that can be discarded in a single operation.  Discard
250849ab826SEric Biggers		requests issued to the device must not exceed this limit.  A
251849ab826SEric Biggers		`discard_max_hw_bytes` value of 0 means that the device does not
252849ab826SEric Biggers		support discard functionality.
25307c9093cSEric Biggers
25407c9093cSEric Biggers
25507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_zeroes_data
25607c9093cSEric BiggersDate:		May 2011
25707c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
25807c9093cSEric BiggersDescription:
259849ab826SEric Biggers		[RO] Will always return 0.  Don't rely on any specific behavior
26007c9093cSEric Biggers		for discards, and don't read this file.
26107c9093cSEric Biggers
26207c9093cSEric Biggers
2633850e13fSKeith BuschWhat:		/sys/block/<disk>/queue/dma_alignment
2643850e13fSKeith BuschDate:		May 2022
2653850e13fSKeith BuschContact:	linux-block@vger.kernel.org
2663850e13fSKeith BuschDescription:
2673850e13fSKeith Busch		Reports the alignment that user space addresses must have to be
2683850e13fSKeith Busch		used for raw block device access with O_DIRECT and other driver
2693850e13fSKeith Busch		specific passthrough mechanisms.
2703850e13fSKeith Busch
2713850e13fSKeith Busch
272849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/fua
273849ab826SEric BiggersDate:		May 2018
274849ab826SEric BiggersContact:	linux-block@vger.kernel.org
275849ab826SEric BiggersDescription:
276849ab826SEric Biggers		[RO] Whether or not the block driver supports the FUA flag for
277849ab826SEric Biggers		write requests.  FUA stands for Force Unit Access. If the FUA
278849ab826SEric Biggers		flag is set that means that write requests must bypass the
279849ab826SEric Biggers		volatile cache of the storage device.
280849ab826SEric Biggers
281849ab826SEric Biggers
282849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/hw_sector_size
283849ab826SEric BiggersDate:		January 2008
284849ab826SEric BiggersContact:	linux-block@vger.kernel.org
285849ab826SEric BiggersDescription:
286849ab826SEric Biggers		[RO] This is the hardware sector size of the device, in bytes.
287849ab826SEric Biggers
288849ab826SEric Biggers
289849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/independent_access_ranges/
290849ab826SEric BiggersDate:		October 2021
291849ab826SEric BiggersContact:	linux-block@vger.kernel.org
292849ab826SEric BiggersDescription:
293849ab826SEric Biggers		[RO] The presence of this sub-directory of the
294849ab826SEric Biggers		/sys/block/xxx/queue/ directory indicates that the device is
295849ab826SEric Biggers		capable of executing requests targeting different sector ranges
296849ab826SEric Biggers		in parallel. For instance, single LUN multi-actuator hard-disks
297849ab826SEric Biggers		will have an independent_access_ranges directory if the device
298*ebab9426SBjorn Helgaas		correctly advertises the sector ranges of its actuators.
299849ab826SEric Biggers
300849ab826SEric Biggers		The independent_access_ranges directory contains one directory
301849ab826SEric Biggers		per access range, with each range described using the sector
302849ab826SEric Biggers		(RO) attribute file to indicate the first sector of the range
303849ab826SEric Biggers		and the nr_sectors (RO) attribute file to indicate the total
304849ab826SEric Biggers		number of sectors in the range starting from the first sector of
305849ab826SEric Biggers		the range.  For example, a dual-actuator hard-disk will have the
306849ab826SEric Biggers		following independent_access_ranges entries.::
307849ab826SEric Biggers
308849ab826SEric Biggers			$ tree /sys/block/<disk>/queue/independent_access_ranges/
309849ab826SEric Biggers			/sys/block/<disk>/queue/independent_access_ranges/
310849ab826SEric Biggers			|-- 0
311849ab826SEric Biggers			|   |-- nr_sectors
312849ab826SEric Biggers			|   `-- sector
313849ab826SEric Biggers			`-- 1
314849ab826SEric Biggers			    |-- nr_sectors
315849ab826SEric Biggers			    `-- sector
316849ab826SEric Biggers
317849ab826SEric Biggers		The sector and nr_sectors attributes use 512B sector unit,
318849ab826SEric Biggers		regardless of the actual block size of the device. Independent
319849ab826SEric Biggers		access ranges do not overlap and include all sectors within the
320849ab826SEric Biggers		device capacity. The access ranges are numbered in increasing
321849ab826SEric Biggers		order of the range start sector, that is, the sector attribute
322849ab826SEric Biggers		of range 0 always has the value 0.
323849ab826SEric Biggers
324849ab826SEric Biggers
325849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll
326849ab826SEric BiggersDate:		November 2015
327849ab826SEric BiggersContact:	linux-block@vger.kernel.org
328849ab826SEric BiggersDescription:
329849ab826SEric Biggers		[RW] When read, this file shows whether polling is enabled (1)
330849ab826SEric Biggers		or disabled (0).  Writing '0' to this file will disable polling
331849ab826SEric Biggers		for this device.  Writing any non-zero value will enable this
332849ab826SEric Biggers		feature.
333849ab826SEric Biggers
334849ab826SEric Biggers
335849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll_delay
336849ab826SEric BiggersDate:		November 2016
337849ab826SEric BiggersContact:	linux-block@vger.kernel.org
338849ab826SEric BiggersDescription:
33954bdd67dSKeith Busch		[RW] This was used to control what kind of polling will be
34054bdd67dSKeith Busch		performed.  It is now fixed to -1, which is classic polling.
341849ab826SEric Biggers		In this mode, the CPU will repeatedly ask for completions
34254bdd67dSKeith Busch		without giving up any time.
34354bdd67dSKeith Busch		<deprecated>
344849ab826SEric Biggers
345849ab826SEric Biggers
34607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/io_timeout
34707c9093cSEric BiggersDate:		November 2018
34807c9093cSEric BiggersContact:	Weiping Zhang <zhangweiping@didiglobal.com>
34907c9093cSEric BiggersDescription:
350849ab826SEric Biggers		[RW] io_timeout is the request timeout in milliseconds. If a
351849ab826SEric Biggers		request does not complete in this time then the block driver
352849ab826SEric Biggers		timeout handler is invoked. That timeout handler can decide to
353849ab826SEric Biggers		retry the request, to fail it or to start a device recovery
354849ab826SEric Biggers		strategy.
355849ab826SEric Biggers
356849ab826SEric Biggers
357849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/iostats
358849ab826SEric BiggersDate:		January 2009
359849ab826SEric BiggersContact:	linux-block@vger.kernel.org
360849ab826SEric BiggersDescription:
361849ab826SEric Biggers		[RW] This file is used to control (on/off) the iostats
362849ab826SEric Biggers		accounting of the disk.
36307c9093cSEric Biggers
36407c9093cSEric Biggers
36507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/logical_block_size
36607c9093cSEric BiggersDate:		May 2009
36707c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
36807c9093cSEric BiggersDescription:
369849ab826SEric Biggers		[RO] This is the smallest unit the storage device can address.
370849ab826SEric Biggers		It is typically 512 bytes.
37107c9093cSEric Biggers
37207c9093cSEric Biggers
37307c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_active_zones
37407c9093cSEric BiggersDate:		July 2020
37507c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
37607c9093cSEric BiggersDescription:
377849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
37807c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
37907c9093cSEric Biggers		any of the zone states: EXPLICIT OPEN, IMPLICIT OPEN or CLOSED,
38007c9093cSEric Biggers		is limited by this value. If this value is 0, there is no limit.
38107c9093cSEric Biggers
382849ab826SEric Biggers		If the host attempts to exceed this limit, the driver should
383849ab826SEric Biggers		report this error with BLK_STS_ZONE_ACTIVE_RESOURCE, which user
384849ab826SEric Biggers		space may see as the EOVERFLOW errno.
385849ab826SEric Biggers
386849ab826SEric Biggers
387849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_discard_segments
388849ab826SEric BiggersDate:		February 2017
389849ab826SEric BiggersContact:	linux-block@vger.kernel.org
390849ab826SEric BiggersDescription:
391849ab826SEric Biggers		[RO] The maximum number of DMA scatter/gather entries in a
392849ab826SEric Biggers		discard request.
393849ab826SEric Biggers
394849ab826SEric Biggers
395849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_hw_sectors_kb
396849ab826SEric BiggersDate:		September 2004
397849ab826SEric BiggersContact:	linux-block@vger.kernel.org
398849ab826SEric BiggersDescription:
399849ab826SEric Biggers		[RO] This is the maximum number of kilobytes supported in a
400849ab826SEric Biggers		single data transfer.
401849ab826SEric Biggers
402849ab826SEric Biggers
403849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_integrity_segments
404849ab826SEric BiggersDate:		September 2010
405849ab826SEric BiggersContact:	linux-block@vger.kernel.org
406849ab826SEric BiggersDescription:
407849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
408849ab826SEric Biggers		with integrity data that will be submitted by the block layer
409849ab826SEric Biggers		core to the associated block driver.
410849ab826SEric Biggers
41107c9093cSEric Biggers
41207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_open_zones
41307c9093cSEric BiggersDate:		July 2020
41407c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
41507c9093cSEric BiggersDescription:
416849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
41707c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
418849ab826SEric Biggers		any of the zone states: EXPLICIT OPEN or IMPLICIT OPEN, is
419849ab826SEric Biggers		limited by this value. If this value is 0, there is no limit.
420849ab826SEric Biggers
421849ab826SEric Biggers
422849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_sectors_kb
423849ab826SEric BiggersDate:		September 2004
424849ab826SEric BiggersContact:	linux-block@vger.kernel.org
425849ab826SEric BiggersDescription:
426849ab826SEric Biggers		[RW] This is the maximum number of kilobytes that the block
427849ab826SEric Biggers		layer will allow for a filesystem request. Must be smaller than
428c9c77418SKeith Busch		or equal to the maximum size allowed by the hardware. Write 0
429c9c77418SKeith Busch		to use default kernel settings.
430849ab826SEric Biggers
431849ab826SEric Biggers
432849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segment_size
433849ab826SEric BiggersDate:		March 2010
434849ab826SEric BiggersContact:	linux-block@vger.kernel.org
435849ab826SEric BiggersDescription:
436849ab826SEric Biggers		[RO] Maximum size in bytes of a single element in a DMA
437849ab826SEric Biggers		scatter/gather list.
438849ab826SEric Biggers
439849ab826SEric Biggers
440849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segments
441849ab826SEric BiggersDate:		March 2010
442849ab826SEric BiggersContact:	linux-block@vger.kernel.org
443849ab826SEric BiggersDescription:
444849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
445849ab826SEric Biggers		that is submitted to the associated block driver.
44607c9093cSEric Biggers
44707c9093cSEric Biggers
44807c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/minimum_io_size
44907c9093cSEric BiggersDate:		April 2009
45007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
45107c9093cSEric BiggersDescription:
452849ab826SEric Biggers		[RO] Storage devices may report a granularity or preferred
453849ab826SEric Biggers		minimum I/O size which is the smallest request the device can
454849ab826SEric Biggers		perform without incurring a performance penalty.  For disk
455849ab826SEric Biggers		drives this is often the physical block size.  For RAID arrays
456849ab826SEric Biggers		it is often the stripe chunk size.  A properly aligned multiple
457849ab826SEric Biggers		of minimum_io_size is the preferred request size for workloads
458849ab826SEric Biggers		where a high number of I/O operations is desired.
45907c9093cSEric Biggers
46007c9093cSEric Biggers
46107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nomerges
46207c9093cSEric BiggersDate:		January 2010
4638b0551a7SEric BiggersContact:	linux-block@vger.kernel.org
46407c9093cSEric BiggersDescription:
465849ab826SEric Biggers		[RW] Standard I/O elevator operations include attempts to merge
466849ab826SEric Biggers		contiguous I/Os. For known random I/O loads these attempts will
467849ab826SEric Biggers		always fail and result in extra cycles being spent in the
468849ab826SEric Biggers		kernel. This allows one to turn off this behavior on one of two
469849ab826SEric Biggers		ways: When set to 1, complex merge checks are disabled, but the
470849ab826SEric Biggers		simple one-shot merges with the previous I/O request are
471849ab826SEric Biggers		enabled. When set to 2, all merge tries are disabled. The
472849ab826SEric Biggers		default value is 0 - which enables all types of merge tries.
473849ab826SEric Biggers
474849ab826SEric Biggers
475849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/nr_requests
476849ab826SEric BiggersDate:		July 2003
477849ab826SEric BiggersContact:	linux-block@vger.kernel.org
478849ab826SEric BiggersDescription:
479849ab826SEric Biggers		[RW] This controls how many requests may be allocated in the
480849ab826SEric Biggers		block layer for read or write requests. Note that the total
481849ab826SEric Biggers		allocated number may be twice this amount, since it applies only
482849ab826SEric Biggers		to reads or writes (not the accumulated sum).
483849ab826SEric Biggers
484849ab826SEric Biggers		To avoid priority inversion through request starvation, a
485849ab826SEric Biggers		request queue maintains a separate request pool per each cgroup
486849ab826SEric Biggers		when CONFIG_BLK_CGROUP is enabled, and this parameter applies to
487849ab826SEric Biggers		each such per-block-cgroup request pool.  IOW, if there are N
488849ab826SEric Biggers		block cgroups, each request queue may have up to N request
489849ab826SEric Biggers		pools, each independently regulated by nr_requests.
49007c9093cSEric Biggers
49107c9093cSEric Biggers
49207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nr_zones
49307c9093cSEric BiggersDate:		November 2018
49407c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
49507c9093cSEric BiggersDescription:
496849ab826SEric Biggers		[RO] nr_zones indicates the total number of zones of a zoned
497849ab826SEric Biggers		block device ("host-aware" or "host-managed" zone model). For
498849ab826SEric Biggers		regular block devices, the value is always 0.
49907c9093cSEric Biggers
50007c9093cSEric Biggers
50107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/optimal_io_size
50207c9093cSEric BiggersDate:		April 2009
50307c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
50407c9093cSEric BiggersDescription:
505849ab826SEric Biggers		[RO] Storage devices may report an optimal I/O size, which is
506849ab826SEric Biggers		the device's preferred unit for sustained I/O.  This is rarely
507849ab826SEric Biggers		reported for disk drives.  For RAID arrays it is usually the
508849ab826SEric Biggers		stripe width or the internal track size.  A properly aligned
509849ab826SEric Biggers		multiple of optimal_io_size is the preferred request size for
510849ab826SEric Biggers		workloads where sustained throughput is desired.  If no optimal
511849ab826SEric Biggers		I/O size is reported this file contains 0.
51207c9093cSEric Biggers
51307c9093cSEric Biggers
51407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/physical_block_size
51507c9093cSEric BiggersDate:		May 2009
51607c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
51707c9093cSEric BiggersDescription:
518849ab826SEric Biggers		[RO] This is the smallest unit a physical storage device can
519849ab826SEric Biggers		write atomically.  It is usually the same as the logical block
520849ab826SEric Biggers		size but may be bigger.  One example is SATA drives with 4KB
521849ab826SEric Biggers		sectors that expose a 512-byte logical block size to the
522849ab826SEric Biggers		operating system.  For stacked block devices the
523849ab826SEric Biggers		physical_block_size variable contains the maximum
524849ab826SEric Biggers		physical_block_size of the component devices.
525849ab826SEric Biggers
526849ab826SEric Biggers
527849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/read_ahead_kb
528849ab826SEric BiggersDate:		May 2004
529849ab826SEric BiggersContact:	linux-block@vger.kernel.org
530849ab826SEric BiggersDescription:
531849ab826SEric Biggers		[RW] Maximum number of kilobytes to read-ahead for filesystems
532849ab826SEric Biggers		on this block device.
533849ab826SEric Biggers
534849ab826SEric Biggers
535849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rotational
536849ab826SEric BiggersDate:		January 2009
537849ab826SEric BiggersContact:	linux-block@vger.kernel.org
538849ab826SEric BiggersDescription:
539849ab826SEric Biggers		[RW] This file is used to stat if the device is of rotational
540849ab826SEric Biggers		type or non-rotational type.
541849ab826SEric Biggers
542849ab826SEric Biggers
543849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rq_affinity
544849ab826SEric BiggersDate:		September 2008
545849ab826SEric BiggersContact:	linux-block@vger.kernel.org
546849ab826SEric BiggersDescription:
547849ab826SEric Biggers		[RW] If this option is '1', the block layer will migrate request
548849ab826SEric Biggers		completions to the cpu "group" that originally submitted the
549849ab826SEric Biggers		request. For some workloads this provides a significant
550849ab826SEric Biggers		reduction in CPU cycles due to caching effects.
551849ab826SEric Biggers
552849ab826SEric Biggers		For storage configurations that need to maximize distribution of
553849ab826SEric Biggers		completion processing setting this option to '2' forces the
554849ab826SEric Biggers		completion to run on the requesting cpu (bypassing the "group"
555849ab826SEric Biggers		aggregation logic).
556849ab826SEric Biggers
557849ab826SEric Biggers
558849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/scheduler
559849ab826SEric BiggersDate:		October 2004
560849ab826SEric BiggersContact:	linux-block@vger.kernel.org
561849ab826SEric BiggersDescription:
562849ab826SEric Biggers		[RW] When read, this file will display the current and available
563849ab826SEric Biggers		IO schedulers for this block device. The currently active IO
564849ab826SEric Biggers		scheduler will be enclosed in [] brackets. Writing an IO
565849ab826SEric Biggers		scheduler name to this file will switch control of this block
566849ab826SEric Biggers		device to that new IO scheduler. Note that writing an IO
567849ab826SEric Biggers		scheduler name to this file will attempt to load that IO
568849ab826SEric Biggers		scheduler module, if it isn't already present in the system.
569849ab826SEric Biggers
570849ab826SEric Biggers
57111630104SEric BiggersWhat:		/sys/block/<disk>/queue/stable_writes
57211630104SEric BiggersDate:		September 2020
57311630104SEric BiggersContact:	linux-block@vger.kernel.org
57411630104SEric BiggersDescription:
57511630104SEric Biggers		[RW] This file will contain '1' if memory must not be modified
57611630104SEric Biggers		while it is being used in a write request to this device.  When
57711630104SEric Biggers		this is the case and the kernel is performing writeback of a
57811630104SEric Biggers		page, the kernel will wait for writeback to complete before
57911630104SEric Biggers		allowing the page to be modified again, rather than allowing
58011630104SEric Biggers		immediate modification as is normally the case.  This
58111630104SEric Biggers		restriction arises when the device accesses the memory multiple
58211630104SEric Biggers		times where the same data must be seen every time -- for
58311630104SEric Biggers		example, once to calculate a checksum and once to actually write
58411630104SEric Biggers		the data.  If no such restriction exists, this file will contain
58511630104SEric Biggers		'0'.  This file is writable for testing purposes.
58611630104SEric Biggers
58711630104SEric Biggers
588849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/throttle_sample_time
589849ab826SEric BiggersDate:		March 2017
590849ab826SEric BiggersContact:	linux-block@vger.kernel.org
591849ab826SEric BiggersDescription:
592849ab826SEric Biggers		[RW] This is the time window that blk-throttle samples data, in
593849ab826SEric Biggers		millisecond.  blk-throttle makes decision based on the
594849ab826SEric Biggers		samplings. Lower time means cgroups have more smooth throughput,
595849ab826SEric Biggers		but higher CPU overhead. This exists only when
596849ab826SEric Biggers		CONFIG_BLK_DEV_THROTTLING_LOW is enabled.
597849ab826SEric Biggers
598849ab826SEric Biggers
5998bc2f7c6SEric BiggersWhat:		/sys/block/<disk>/queue/virt_boundary_mask
6008bc2f7c6SEric BiggersDate:		April 2021
6018bc2f7c6SEric BiggersContact:	linux-block@vger.kernel.org
6028bc2f7c6SEric BiggersDescription:
6038bc2f7c6SEric Biggers		[RO] This file shows the I/O segment memory alignment mask for
6048bc2f7c6SEric Biggers		the block device.  I/O requests to this device will be split
6058bc2f7c6SEric Biggers		between segments wherever either the memory address of the end
6068bc2f7c6SEric Biggers		of the previous segment or the memory address of the beginning
6078bc2f7c6SEric Biggers		of the current segment is not aligned to virt_boundary_mask + 1
6088bc2f7c6SEric Biggers		bytes.
6098bc2f7c6SEric Biggers
6108bc2f7c6SEric Biggers
611849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/wbt_lat_usec
612849ab826SEric BiggersDate:		November 2016
613849ab826SEric BiggersContact:	linux-block@vger.kernel.org
614849ab826SEric BiggersDescription:
615849ab826SEric Biggers		[RW] If the device is registered for writeback throttling, then
616849ab826SEric Biggers		this file shows the target minimum read latency. If this latency
617849ab826SEric Biggers		is exceeded in a given window of time (see wb_window_usec), then
618849ab826SEric Biggers		the writeback throttling will start scaling back writes. Writing
619849ab826SEric Biggers		a value of '0' to this file disables the feature. Writing a
620849ab826SEric Biggers		value of '-1' to this file resets the value to the default
621849ab826SEric Biggers		setting.
622849ab826SEric Biggers
623849ab826SEric Biggers
624849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/write_cache
625849ab826SEric BiggersDate:		April 2016
626849ab826SEric BiggersContact:	linux-block@vger.kernel.org
627849ab826SEric BiggersDescription:
628849ab826SEric Biggers		[RW] When read, this file will display whether the device has
629849ab826SEric Biggers		write back caching enabled or not. It will return "write back"
630849ab826SEric Biggers		for the former case, and "write through" for the latter. Writing
631849ab826SEric Biggers		to this file can change the kernels view of the device, but it
632849ab826SEric Biggers		doesn't alter the device state. This means that it might not be
633849ab826SEric Biggers		safe to toggle the setting from "write back" to "write through",
634849ab826SEric Biggers		since that will also eliminate cache flushes issued by the
635849ab826SEric Biggers		kernel.
63607c9093cSEric Biggers
63707c9093cSEric Biggers
63807c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_same_max_bytes
63907c9093cSEric BiggersDate:		January 2012
64007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
64107c9093cSEric BiggersDescription:
642849ab826SEric Biggers		[RO] Some devices support a write same operation in which a
64307c9093cSEric Biggers		single data block can be written to a range of several
644849ab826SEric Biggers		contiguous blocks on storage. This can be used to wipe areas on
645849ab826SEric Biggers		disk or to initialize drives in a RAID configuration.
646849ab826SEric Biggers		write_same_max_bytes indicates how many bytes can be written in
647849ab826SEric Biggers		a single write same command. If write_same_max_bytes is 0, write
648849ab826SEric Biggers		same is not supported by the device.
64907c9093cSEric Biggers
65007c9093cSEric Biggers
65107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_zeroes_max_bytes
65207c9093cSEric BiggersDate:		November 2016
65307c9093cSEric BiggersContact:	Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
65407c9093cSEric BiggersDescription:
655849ab826SEric Biggers		[RO] Devices that support write zeroes operation in which a
656849ab826SEric Biggers		single request can be issued to zero out the range of contiguous
657849ab826SEric Biggers		blocks on storage without having any payload in the request.
658849ab826SEric Biggers		This can be used to optimize writing zeroes to the devices.
659849ab826SEric Biggers		write_zeroes_max_bytes indicates how many bytes can be written
660849ab826SEric Biggers		in a single write zeroes command. If write_zeroes_max_bytes is
661849ab826SEric Biggers		0, write zeroes is not supported by the device.
662849ab826SEric Biggers
663849ab826SEric Biggers
664849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_append_max_bytes
665849ab826SEric BiggersDate:		May 2020
666849ab826SEric BiggersContact:	linux-block@vger.kernel.org
667849ab826SEric BiggersDescription:
668849ab826SEric Biggers		[RO] This is the maximum number of bytes that can be written to
669849ab826SEric Biggers		a sequential zone of a zoned block device using a zone append
670849ab826SEric Biggers		write operation (REQ_OP_ZONE_APPEND). This value is always 0 for
671849ab826SEric Biggers		regular block devices.
672849ab826SEric Biggers
673849ab826SEric Biggers
674849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_write_granularity
675849ab826SEric BiggersDate:		January 2021
676849ab826SEric BiggersContact:	linux-block@vger.kernel.org
677849ab826SEric BiggersDescription:
678849ab826SEric Biggers		[RO] This indicates the alignment constraint, in bytes, for
679849ab826SEric Biggers		write operations in sequential zones of zoned block devices
680849ab826SEric Biggers		(devices with a zoned attributed that reports "host-managed" or
681849ab826SEric Biggers		"host-aware"). This value is always 0 for regular block devices.
68207c9093cSEric Biggers
68307c9093cSEric Biggers
68407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/zoned
68507c9093cSEric BiggersDate:		September 2016
68607c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
68707c9093cSEric BiggersDescription:
688849ab826SEric Biggers		[RO] zoned indicates if the device is a zoned block device and
689849ab826SEric Biggers		the zone model of the device if it is indeed zoned.  The
690849ab826SEric Biggers		possible values indicated by zoned are "none" for regular block
691849ab826SEric Biggers		devices and "host-aware" or "host-managed" for zoned block
692849ab826SEric Biggers		devices. The characteristics of host-aware and host-managed
693849ab826SEric Biggers		zoned block devices are described in the ZBC (Zoned Block
694849ab826SEric Biggers		Commands) and ZAC (Zoned Device ATA Command Set) standards.
695849ab826SEric Biggers		These standards also define the "drive-managed" zone model.
696849ab826SEric Biggers		However, since drive-managed zoned block devices do not support
697849ab826SEric Biggers		zone commands, they will be treated as regular block devices and
698849ab826SEric Biggers		zoned will report "none".
69907c9093cSEric Biggers
70007c9093cSEric Biggers
701e3306221SSagi GrimbergWhat:		/sys/block/<disk>/hidden
702e3306221SSagi GrimbergDate:		March 2023
703e3306221SSagi GrimbergContact:	linux-block@vger.kernel.org
704e3306221SSagi GrimbergDescription:
705e3306221SSagi Grimberg		[RO] the block device is hidden. it doesn’t produce events, and
706e3306221SSagi Grimberg		can’t be opened from userspace or using blkdev_get*.
707e3306221SSagi Grimberg		Used for the underlying components of multipath devices.
708e3306221SSagi Grimberg
709e3306221SSagi Grimberg
710ae7a7a53SEric BiggersWhat:		/sys/block/<disk>/stat
711ae7a7a53SEric BiggersDate:		February 2008
712ae7a7a53SEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
713ae7a7a53SEric BiggersDescription:
714ae7a7a53SEric Biggers		The /sys/block/<disk>/stat files displays the I/O
715ae7a7a53SEric Biggers		statistics of disk <disk>. They contain 11 fields:
716ae7a7a53SEric Biggers
717ae7a7a53SEric Biggers		==  ==============================================
718ae7a7a53SEric Biggers		 1  reads completed successfully
719ae7a7a53SEric Biggers		 2  reads merged
720ae7a7a53SEric Biggers		 3  sectors read
721ae7a7a53SEric Biggers		 4  time spent reading (ms)
722ae7a7a53SEric Biggers		 5  writes completed
723ae7a7a53SEric Biggers		 6  writes merged
724ae7a7a53SEric Biggers		 7  sectors written
725ae7a7a53SEric Biggers		 8  time spent writing (ms)
726ae7a7a53SEric Biggers		 9  I/Os currently in progress
727ae7a7a53SEric Biggers		10  time spent doing I/Os (ms)
728ae7a7a53SEric Biggers		11  weighted time spent doing I/Os (ms)
729ae7a7a53SEric Biggers		12  discards completed
730ae7a7a53SEric Biggers		13  discards merged
731ae7a7a53SEric Biggers		14  sectors discarded
732ae7a7a53SEric Biggers		15  time spent discarding (ms)
733ae7a7a53SEric Biggers		16  flush requests completed
734ae7a7a53SEric Biggers		17  time spent flushing (ms)
735ae7a7a53SEric Biggers		==  ==============================================
736ae7a7a53SEric Biggers
737ae7a7a53SEric Biggers		For more details refer Documentation/admin-guide/iostats.rst
738