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
1043ffef551SChristoph HellwigWhat:		/sys/block/<disk>/partscan
1053ffef551SChristoph HellwigDate:		May 2024
1063ffef551SChristoph HellwigContact:	Christoph Hellwig <hch@lst.de>
1073ffef551SChristoph HellwigDescription:
1083ffef551SChristoph Hellwig		The /sys/block/<disk>/partscan files reports if partition
1093ffef551SChristoph Hellwig		scanning is enabled for the disk.  It returns "1" if partition
1103ffef551SChristoph Hellwig		scanning is enabled, or "0" if not.  The value type is a 32-bit
1113ffef551SChristoph Hellwig		unsigned integer, but only "0" and "1" are valid values.
1123ffef551SChristoph Hellwig
1133ffef551SChristoph Hellwig
11407c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/alignment_offset
11507c9093cSEric BiggersDate:		April 2009
11607c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
11707c9093cSEric BiggersDescription:
11807c9093cSEric Biggers		Storage devices may report a physical block size that is
11907c9093cSEric Biggers		bigger than the logical block size (for instance a drive
12007c9093cSEric Biggers		with 4KB physical sectors exposing 512-byte logical
12107c9093cSEric Biggers		blocks to the operating system).  This parameter
12207c9093cSEric Biggers		indicates how many bytes the beginning of the partition
12307c9093cSEric Biggers		is offset from the disk's natural alignment.
12407c9093cSEric Biggers
12507c9093cSEric Biggers
12607c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/discard_alignment
12707c9093cSEric BiggersDate:		May 2011
12807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
12907c9093cSEric BiggersDescription:
13007c9093cSEric Biggers		Devices that support discard functionality may
13107c9093cSEric Biggers		internally allocate space in units that are bigger than
13207c9093cSEric Biggers		the exported logical block size. The discard_alignment
13307c9093cSEric Biggers		parameter indicates how many bytes the beginning of the
13407c9093cSEric Biggers		partition is offset from the internal allocation unit's
13507c9093cSEric Biggers		natural alignment.
13607c9093cSEric Biggers
13707c9093cSEric Biggers
13807c9093cSEric BiggersWhat:		/sys/block/<disk>/<partition>/stat
13907c9093cSEric BiggersDate:		February 2008
14007c9093cSEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
14107c9093cSEric BiggersDescription:
14207c9093cSEric Biggers		The /sys/block/<disk>/<partition>/stat files display the
14307c9093cSEric Biggers		I/O statistics of partition <partition>. The format is the
14407c9093cSEric Biggers		same as the format of /sys/block/<disk>/stat.
14507c9093cSEric Biggers
14607c9093cSEric Biggers
147849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/add_random
148849ab826SEric BiggersDate:		June 2010
149849ab826SEric BiggersContact:	linux-block@vger.kernel.org
150849ab826SEric BiggersDescription:
151849ab826SEric Biggers		[RW] This file allows to turn off the disk entropy contribution.
152849ab826SEric Biggers		Default value of this file is '1'(on).
153849ab826SEric Biggers
154849ab826SEric Biggers
15507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/chunk_sectors
15607c9093cSEric BiggersDate:		September 2016
15707c9093cSEric BiggersContact:	Hannes Reinecke <hare@suse.com>
15807c9093cSEric BiggersDescription:
159849ab826SEric Biggers		[RO] chunk_sectors has different meaning depending on the type
16007c9093cSEric Biggers		of the disk. For a RAID device (dm-raid), chunk_sectors
161849ab826SEric Biggers		indicates the size in 512B sectors of the RAID volume stripe
162849ab826SEric Biggers		segment. For a zoned block device, either host-aware or
163849ab826SEric Biggers		host-managed, chunk_sectors indicates the size in 512B sectors
164849ab826SEric Biggers		of the zones of the device, with the eventual exception of the
165849ab826SEric Biggers		last zone of the device which may be smaller.
166849ab826SEric Biggers
167849ab826SEric Biggers
16820f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/
16920f01f16SEric BiggersDate:		February 2022
17020f01f16SEric BiggersContact:	linux-block@vger.kernel.org
17120f01f16SEric BiggersDescription:
17220f01f16SEric Biggers		The presence of this subdirectory of /sys/block/<disk>/queue/
17320f01f16SEric Biggers		indicates that the device supports inline encryption.  This
17420f01f16SEric Biggers		subdirectory contains files which describe the inline encryption
17520f01f16SEric Biggers		capabilities of the device.  For more information about inline
17620f01f16SEric Biggers		encryption, refer to Documentation/block/inline-encryption.rst.
17720f01f16SEric Biggers
17820f01f16SEric Biggers
17920f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/max_dun_bits
18020f01f16SEric BiggersDate:		February 2022
18120f01f16SEric BiggersContact:	linux-block@vger.kernel.org
18220f01f16SEric BiggersDescription:
18320f01f16SEric Biggers		[RO] This file shows the maximum length, in bits, of data unit
18420f01f16SEric Biggers		numbers accepted by the device in inline encryption requests.
18520f01f16SEric Biggers
18620f01f16SEric Biggers
18720f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/modes/<mode>
18820f01f16SEric BiggersDate:		February 2022
18920f01f16SEric BiggersContact:	linux-block@vger.kernel.org
19020f01f16SEric BiggersDescription:
19120f01f16SEric Biggers		[RO] For each crypto mode (i.e., encryption/decryption
19220f01f16SEric Biggers		algorithm) the device supports with inline encryption, a file
19320f01f16SEric Biggers		will exist at this location.  It will contain a hexadecimal
19420f01f16SEric Biggers		number that is a bitmask of the supported data unit sizes, in
19520f01f16SEric Biggers		bytes, for that crypto mode.
19620f01f16SEric Biggers
19720f01f16SEric Biggers		Currently, the crypto modes that may be supported are:
19820f01f16SEric Biggers
19920f01f16SEric Biggers		   * AES-256-XTS
20020f01f16SEric Biggers		   * AES-128-CBC-ESSIV
20120f01f16SEric Biggers		   * Adiantum
20220f01f16SEric Biggers
20320f01f16SEric Biggers		For example, if a device supports AES-256-XTS inline encryption
20420f01f16SEric Biggers		with data unit sizes of 512 and 4096 bytes, the file
20520f01f16SEric Biggers		/sys/block/<disk>/queue/crypto/modes/AES-256-XTS will exist and
20620f01f16SEric Biggers		will contain "0x1200".
20720f01f16SEric Biggers
20820f01f16SEric Biggers
20920f01f16SEric BiggersWhat:		/sys/block/<disk>/queue/crypto/num_keyslots
21020f01f16SEric BiggersDate:		February 2022
21120f01f16SEric BiggersContact:	linux-block@vger.kernel.org
21220f01f16SEric BiggersDescription:
21320f01f16SEric Biggers		[RO] This file shows the number of keyslots the device has for
21420f01f16SEric Biggers		use with inline encryption.
21520f01f16SEric Biggers
21620f01f16SEric Biggers
217849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/dax
218849ab826SEric BiggersDate:		June 2016
219849ab826SEric BiggersContact:	linux-block@vger.kernel.org
220849ab826SEric BiggersDescription:
221849ab826SEric Biggers		[RO] This file indicates whether the device supports Direct
222849ab826SEric Biggers		Access (DAX), used by CPU-addressable storage to bypass the
223849ab826SEric Biggers		pagecache.  It shows '1' if true, '0' if not.
22407c9093cSEric Biggers
22507c9093cSEric Biggers
22607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_granularity
22707c9093cSEric BiggersDate:		May 2011
22807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
22907c9093cSEric BiggersDescription:
230849ab826SEric Biggers		[RO] Devices that support discard functionality may internally
231849ab826SEric Biggers		allocate space using units that are bigger than the logical
232849ab826SEric Biggers		block size. The discard_granularity parameter indicates the size
233849ab826SEric Biggers		of the internal allocation unit in bytes if reported by the
234849ab826SEric Biggers		device. Otherwise the discard_granularity will be set to match
235849ab826SEric Biggers		the device's physical block size. A discard_granularity of 0
236849ab826SEric Biggers		means that the device does not support discard functionality.
23707c9093cSEric Biggers
23807c9093cSEric Biggers
23907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_bytes
24007c9093cSEric BiggersDate:		May 2011
24107c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
24207c9093cSEric BiggersDescription:
243849ab826SEric Biggers		[RW] While discard_max_hw_bytes is the hardware limit for the
244849ab826SEric Biggers		device, this setting is the software limit. Some devices exhibit
245849ab826SEric Biggers		large latencies when large discards are issued, setting this
246849ab826SEric Biggers		value lower will make Linux issue smaller discards and
247849ab826SEric Biggers		potentially help reduce latencies induced by large discard
248849ab826SEric Biggers		operations.
249849ab826SEric Biggers
250849ab826SEric Biggers
251849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_hw_bytes
252849ab826SEric BiggersDate:		July 2015
253849ab826SEric BiggersContact:	linux-block@vger.kernel.org
254849ab826SEric BiggersDescription:
255849ab826SEric Biggers		[RO] Devices that support discard functionality may have
256849ab826SEric Biggers		internal limits on the number of bytes that can be trimmed or
257849ab826SEric Biggers		unmapped in a single operation.  The `discard_max_hw_bytes`
258849ab826SEric Biggers		parameter is set by the device driver to the maximum number of
259849ab826SEric Biggers		bytes that can be discarded in a single operation.  Discard
260849ab826SEric Biggers		requests issued to the device must not exceed this limit.  A
261849ab826SEric Biggers		`discard_max_hw_bytes` value of 0 means that the device does not
262849ab826SEric Biggers		support discard functionality.
26307c9093cSEric Biggers
26407c9093cSEric Biggers
26507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_zeroes_data
26607c9093cSEric BiggersDate:		May 2011
26707c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
26807c9093cSEric BiggersDescription:
269849ab826SEric Biggers		[RO] Will always return 0.  Don't rely on any specific behavior
27007c9093cSEric Biggers		for discards, and don't read this file.
27107c9093cSEric Biggers
27207c9093cSEric Biggers
2733850e13fSKeith BuschWhat:		/sys/block/<disk>/queue/dma_alignment
2743850e13fSKeith BuschDate:		May 2022
2753850e13fSKeith BuschContact:	linux-block@vger.kernel.org
2763850e13fSKeith BuschDescription:
2773850e13fSKeith Busch		Reports the alignment that user space addresses must have to be
2783850e13fSKeith Busch		used for raw block device access with O_DIRECT and other driver
2793850e13fSKeith Busch		specific passthrough mechanisms.
2803850e13fSKeith Busch
2813850e13fSKeith Busch
282849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/fua
283849ab826SEric BiggersDate:		May 2018
284849ab826SEric BiggersContact:	linux-block@vger.kernel.org
285849ab826SEric BiggersDescription:
286849ab826SEric Biggers		[RO] Whether or not the block driver supports the FUA flag for
287849ab826SEric Biggers		write requests.  FUA stands for Force Unit Access. If the FUA
288849ab826SEric Biggers		flag is set that means that write requests must bypass the
289849ab826SEric Biggers		volatile cache of the storage device.
290849ab826SEric Biggers
291849ab826SEric Biggers
292849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/hw_sector_size
293849ab826SEric BiggersDate:		January 2008
294849ab826SEric BiggersContact:	linux-block@vger.kernel.org
295849ab826SEric BiggersDescription:
296849ab826SEric Biggers		[RO] This is the hardware sector size of the device, in bytes.
297849ab826SEric Biggers
298849ab826SEric Biggers
299849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/independent_access_ranges/
300849ab826SEric BiggersDate:		October 2021
301849ab826SEric BiggersContact:	linux-block@vger.kernel.org
302849ab826SEric BiggersDescription:
303849ab826SEric Biggers		[RO] The presence of this sub-directory of the
304849ab826SEric Biggers		/sys/block/xxx/queue/ directory indicates that the device is
305849ab826SEric Biggers		capable of executing requests targeting different sector ranges
306849ab826SEric Biggers		in parallel. For instance, single LUN multi-actuator hard-disks
307849ab826SEric Biggers		will have an independent_access_ranges directory if the device
308ebab9426SBjorn Helgaas		correctly advertises the sector ranges of its actuators.
309849ab826SEric Biggers
310849ab826SEric Biggers		The independent_access_ranges directory contains one directory
311849ab826SEric Biggers		per access range, with each range described using the sector
312849ab826SEric Biggers		(RO) attribute file to indicate the first sector of the range
313849ab826SEric Biggers		and the nr_sectors (RO) attribute file to indicate the total
314849ab826SEric Biggers		number of sectors in the range starting from the first sector of
315849ab826SEric Biggers		the range.  For example, a dual-actuator hard-disk will have the
316849ab826SEric Biggers		following independent_access_ranges entries.::
317849ab826SEric Biggers
318849ab826SEric Biggers			$ tree /sys/block/<disk>/queue/independent_access_ranges/
319849ab826SEric Biggers			/sys/block/<disk>/queue/independent_access_ranges/
320849ab826SEric Biggers			|-- 0
321849ab826SEric Biggers			|   |-- nr_sectors
322849ab826SEric Biggers			|   `-- sector
323849ab826SEric Biggers			`-- 1
324849ab826SEric Biggers			    |-- nr_sectors
325849ab826SEric Biggers			    `-- sector
326849ab826SEric Biggers
327849ab826SEric Biggers		The sector and nr_sectors attributes use 512B sector unit,
328849ab826SEric Biggers		regardless of the actual block size of the device. Independent
329849ab826SEric Biggers		access ranges do not overlap and include all sectors within the
330849ab826SEric Biggers		device capacity. The access ranges are numbered in increasing
331849ab826SEric Biggers		order of the range start sector, that is, the sector attribute
332849ab826SEric Biggers		of range 0 always has the value 0.
333849ab826SEric Biggers
334849ab826SEric Biggers
335849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll
336849ab826SEric BiggersDate:		November 2015
337849ab826SEric BiggersContact:	linux-block@vger.kernel.org
338849ab826SEric BiggersDescription:
339849ab826SEric Biggers		[RW] When read, this file shows whether polling is enabled (1)
340849ab826SEric Biggers		or disabled (0).  Writing '0' to this file will disable polling
341849ab826SEric Biggers		for this device.  Writing any non-zero value will enable this
342849ab826SEric Biggers		feature.
343849ab826SEric Biggers
344849ab826SEric Biggers
345849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll_delay
346849ab826SEric BiggersDate:		November 2016
347849ab826SEric BiggersContact:	linux-block@vger.kernel.org
348849ab826SEric BiggersDescription:
34954bdd67dSKeith Busch		[RW] This was used to control what kind of polling will be
35054bdd67dSKeith Busch		performed.  It is now fixed to -1, which is classic polling.
351849ab826SEric Biggers		In this mode, the CPU will repeatedly ask for completions
35254bdd67dSKeith Busch		without giving up any time.
35354bdd67dSKeith Busch		<deprecated>
354849ab826SEric Biggers
355849ab826SEric Biggers
35607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/io_timeout
35707c9093cSEric BiggersDate:		November 2018
35807c9093cSEric BiggersContact:	Weiping Zhang <zhangweiping@didiglobal.com>
35907c9093cSEric BiggersDescription:
360849ab826SEric Biggers		[RW] io_timeout is the request timeout in milliseconds. If a
361849ab826SEric Biggers		request does not complete in this time then the block driver
362849ab826SEric Biggers		timeout handler is invoked. That timeout handler can decide to
363849ab826SEric Biggers		retry the request, to fail it or to start a device recovery
364849ab826SEric Biggers		strategy.
365849ab826SEric Biggers
366849ab826SEric Biggers
367849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/iostats
368849ab826SEric BiggersDate:		January 2009
369849ab826SEric BiggersContact:	linux-block@vger.kernel.org
370849ab826SEric BiggersDescription:
371849ab826SEric Biggers		[RW] This file is used to control (on/off) the iostats
372849ab826SEric Biggers		accounting of the disk.
37307c9093cSEric Biggers
37407c9093cSEric Biggers
37507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/logical_block_size
37607c9093cSEric BiggersDate:		May 2009
37707c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
37807c9093cSEric BiggersDescription:
379849ab826SEric Biggers		[RO] This is the smallest unit the storage device can address.
380849ab826SEric Biggers		It is typically 512 bytes.
38107c9093cSEric Biggers
38207c9093cSEric Biggers
38307c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_active_zones
38407c9093cSEric BiggersDate:		July 2020
38507c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
38607c9093cSEric BiggersDescription:
387849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
38807c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
38907c9093cSEric Biggers		any of the zone states: EXPLICIT OPEN, IMPLICIT OPEN or CLOSED,
39007c9093cSEric Biggers		is limited by this value. If this value is 0, there is no limit.
39107c9093cSEric Biggers
392849ab826SEric Biggers		If the host attempts to exceed this limit, the driver should
393849ab826SEric Biggers		report this error with BLK_STS_ZONE_ACTIVE_RESOURCE, which user
394849ab826SEric Biggers		space may see as the EOVERFLOW errno.
395849ab826SEric Biggers
396849ab826SEric Biggers
397849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_discard_segments
398849ab826SEric BiggersDate:		February 2017
399849ab826SEric BiggersContact:	linux-block@vger.kernel.org
400849ab826SEric BiggersDescription:
401849ab826SEric Biggers		[RO] The maximum number of DMA scatter/gather entries in a
402849ab826SEric Biggers		discard request.
403849ab826SEric Biggers
404849ab826SEric Biggers
405849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_hw_sectors_kb
406849ab826SEric BiggersDate:		September 2004
407849ab826SEric BiggersContact:	linux-block@vger.kernel.org
408849ab826SEric BiggersDescription:
409849ab826SEric Biggers		[RO] This is the maximum number of kilobytes supported in a
410849ab826SEric Biggers		single data transfer.
411849ab826SEric Biggers
412849ab826SEric Biggers
413849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_integrity_segments
414849ab826SEric BiggersDate:		September 2010
415849ab826SEric BiggersContact:	linux-block@vger.kernel.org
416849ab826SEric BiggersDescription:
417849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
418849ab826SEric Biggers		with integrity data that will be submitted by the block layer
419849ab826SEric Biggers		core to the associated block driver.
420849ab826SEric Biggers
42107c9093cSEric Biggers
42207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_open_zones
42307c9093cSEric BiggersDate:		July 2020
42407c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
42507c9093cSEric BiggersDescription:
426849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
42707c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
428849ab826SEric Biggers		any of the zone states: EXPLICIT OPEN or IMPLICIT OPEN, is
429849ab826SEric Biggers		limited by this value. If this value is 0, there is no limit.
430849ab826SEric Biggers
431849ab826SEric Biggers
432849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_sectors_kb
433849ab826SEric BiggersDate:		September 2004
434849ab826SEric BiggersContact:	linux-block@vger.kernel.org
435849ab826SEric BiggersDescription:
436849ab826SEric Biggers		[RW] This is the maximum number of kilobytes that the block
437849ab826SEric Biggers		layer will allow for a filesystem request. Must be smaller than
438c9c77418SKeith Busch		or equal to the maximum size allowed by the hardware. Write 0
439c9c77418SKeith Busch		to use default kernel settings.
440849ab826SEric Biggers
441849ab826SEric Biggers
442849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segment_size
443849ab826SEric BiggersDate:		March 2010
444849ab826SEric BiggersContact:	linux-block@vger.kernel.org
445849ab826SEric BiggersDescription:
446849ab826SEric Biggers		[RO] Maximum size in bytes of a single element in a DMA
447849ab826SEric Biggers		scatter/gather list.
448849ab826SEric Biggers
449849ab826SEric Biggers
450849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segments
451849ab826SEric BiggersDate:		March 2010
452849ab826SEric BiggersContact:	linux-block@vger.kernel.org
453849ab826SEric BiggersDescription:
454849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
455849ab826SEric Biggers		that is submitted to the associated block driver.
45607c9093cSEric Biggers
45707c9093cSEric Biggers
45807c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/minimum_io_size
45907c9093cSEric BiggersDate:		April 2009
46007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
46107c9093cSEric BiggersDescription:
462849ab826SEric Biggers		[RO] Storage devices may report a granularity or preferred
463849ab826SEric Biggers		minimum I/O size which is the smallest request the device can
464849ab826SEric Biggers		perform without incurring a performance penalty.  For disk
465849ab826SEric Biggers		drives this is often the physical block size.  For RAID arrays
466849ab826SEric Biggers		it is often the stripe chunk size.  A properly aligned multiple
467849ab826SEric Biggers		of minimum_io_size is the preferred request size for workloads
468849ab826SEric Biggers		where a high number of I/O operations is desired.
46907c9093cSEric Biggers
47007c9093cSEric Biggers
47107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nomerges
47207c9093cSEric BiggersDate:		January 2010
4738b0551a7SEric BiggersContact:	linux-block@vger.kernel.org
47407c9093cSEric BiggersDescription:
475849ab826SEric Biggers		[RW] Standard I/O elevator operations include attempts to merge
476849ab826SEric Biggers		contiguous I/Os. For known random I/O loads these attempts will
477849ab826SEric Biggers		always fail and result in extra cycles being spent in the
478849ab826SEric Biggers		kernel. This allows one to turn off this behavior on one of two
479849ab826SEric Biggers		ways: When set to 1, complex merge checks are disabled, but the
480849ab826SEric Biggers		simple one-shot merges with the previous I/O request are
481849ab826SEric Biggers		enabled. When set to 2, all merge tries are disabled. The
482849ab826SEric Biggers		default value is 0 - which enables all types of merge tries.
483849ab826SEric Biggers
484849ab826SEric Biggers
485849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/nr_requests
486849ab826SEric BiggersDate:		July 2003
487849ab826SEric BiggersContact:	linux-block@vger.kernel.org
488849ab826SEric BiggersDescription:
489849ab826SEric Biggers		[RW] This controls how many requests may be allocated in the
490849ab826SEric Biggers		block layer for read or write requests. Note that the total
491849ab826SEric Biggers		allocated number may be twice this amount, since it applies only
492849ab826SEric Biggers		to reads or writes (not the accumulated sum).
493849ab826SEric Biggers
494849ab826SEric Biggers		To avoid priority inversion through request starvation, a
495849ab826SEric Biggers		request queue maintains a separate request pool per each cgroup
496849ab826SEric Biggers		when CONFIG_BLK_CGROUP is enabled, and this parameter applies to
497849ab826SEric Biggers		each such per-block-cgroup request pool.  IOW, if there are N
498849ab826SEric Biggers		block cgroups, each request queue may have up to N request
499849ab826SEric Biggers		pools, each independently regulated by nr_requests.
50007c9093cSEric Biggers
50107c9093cSEric Biggers
50207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nr_zones
50307c9093cSEric BiggersDate:		November 2018
50407c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
50507c9093cSEric BiggersDescription:
506849ab826SEric Biggers		[RO] nr_zones indicates the total number of zones of a zoned
507849ab826SEric Biggers		block device ("host-aware" or "host-managed" zone model). For
508849ab826SEric Biggers		regular block devices, the value is always 0.
50907c9093cSEric Biggers
51007c9093cSEric Biggers
51107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/optimal_io_size
51207c9093cSEric BiggersDate:		April 2009
51307c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
51407c9093cSEric BiggersDescription:
515849ab826SEric Biggers		[RO] Storage devices may report an optimal I/O size, which is
516849ab826SEric Biggers		the device's preferred unit for sustained I/O.  This is rarely
517849ab826SEric Biggers		reported for disk drives.  For RAID arrays it is usually the
518849ab826SEric Biggers		stripe width or the internal track size.  A properly aligned
519849ab826SEric Biggers		multiple of optimal_io_size is the preferred request size for
520849ab826SEric Biggers		workloads where sustained throughput is desired.  If no optimal
521849ab826SEric Biggers		I/O size is reported this file contains 0.
52207c9093cSEric Biggers
52307c9093cSEric Biggers
52407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/physical_block_size
52507c9093cSEric BiggersDate:		May 2009
52607c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
52707c9093cSEric BiggersDescription:
528849ab826SEric Biggers		[RO] This is the smallest unit a physical storage device can
529849ab826SEric Biggers		write atomically.  It is usually the same as the logical block
530849ab826SEric Biggers		size but may be bigger.  One example is SATA drives with 4KB
531849ab826SEric Biggers		sectors that expose a 512-byte logical block size to the
532849ab826SEric Biggers		operating system.  For stacked block devices the
533849ab826SEric Biggers		physical_block_size variable contains the maximum
534849ab826SEric Biggers		physical_block_size of the component devices.
535849ab826SEric Biggers
536849ab826SEric Biggers
537849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/read_ahead_kb
538849ab826SEric BiggersDate:		May 2004
539849ab826SEric BiggersContact:	linux-block@vger.kernel.org
540849ab826SEric BiggersDescription:
541849ab826SEric Biggers		[RW] Maximum number of kilobytes to read-ahead for filesystems
542849ab826SEric Biggers		on this block device.
543849ab826SEric Biggers
544849ab826SEric Biggers
545849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rotational
546849ab826SEric BiggersDate:		January 2009
547849ab826SEric BiggersContact:	linux-block@vger.kernel.org
548849ab826SEric BiggersDescription:
549849ab826SEric Biggers		[RW] This file is used to stat if the device is of rotational
550849ab826SEric Biggers		type or non-rotational type.
551849ab826SEric Biggers
552849ab826SEric Biggers
553849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rq_affinity
554849ab826SEric BiggersDate:		September 2008
555849ab826SEric BiggersContact:	linux-block@vger.kernel.org
556849ab826SEric BiggersDescription:
557849ab826SEric Biggers		[RW] If this option is '1', the block layer will migrate request
558849ab826SEric Biggers		completions to the cpu "group" that originally submitted the
559849ab826SEric Biggers		request. For some workloads this provides a significant
560849ab826SEric Biggers		reduction in CPU cycles due to caching effects.
561849ab826SEric Biggers
562849ab826SEric Biggers		For storage configurations that need to maximize distribution of
563849ab826SEric Biggers		completion processing setting this option to '2' forces the
564849ab826SEric Biggers		completion to run on the requesting cpu (bypassing the "group"
565849ab826SEric Biggers		aggregation logic).
566849ab826SEric Biggers
567849ab826SEric Biggers
568849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/scheduler
569849ab826SEric BiggersDate:		October 2004
570849ab826SEric BiggersContact:	linux-block@vger.kernel.org
571849ab826SEric BiggersDescription:
572849ab826SEric Biggers		[RW] When read, this file will display the current and available
573849ab826SEric Biggers		IO schedulers for this block device. The currently active IO
574849ab826SEric Biggers		scheduler will be enclosed in [] brackets. Writing an IO
575849ab826SEric Biggers		scheduler name to this file will switch control of this block
576849ab826SEric Biggers		device to that new IO scheduler. Note that writing an IO
577849ab826SEric Biggers		scheduler name to this file will attempt to load that IO
578849ab826SEric Biggers		scheduler module, if it isn't already present in the system.
579849ab826SEric Biggers
580849ab826SEric Biggers
58111630104SEric BiggersWhat:		/sys/block/<disk>/queue/stable_writes
58211630104SEric BiggersDate:		September 2020
58311630104SEric BiggersContact:	linux-block@vger.kernel.org
58411630104SEric BiggersDescription:
58511630104SEric Biggers		[RW] This file will contain '1' if memory must not be modified
58611630104SEric Biggers		while it is being used in a write request to this device.  When
58711630104SEric Biggers		this is the case and the kernel is performing writeback of a
58811630104SEric Biggers		page, the kernel will wait for writeback to complete before
58911630104SEric Biggers		allowing the page to be modified again, rather than allowing
59011630104SEric Biggers		immediate modification as is normally the case.  This
59111630104SEric Biggers		restriction arises when the device accesses the memory multiple
59211630104SEric Biggers		times where the same data must be seen every time -- for
59311630104SEric Biggers		example, once to calculate a checksum and once to actually write
59411630104SEric Biggers		the data.  If no such restriction exists, this file will contain
59511630104SEric Biggers		'0'.  This file is writable for testing purposes.
59611630104SEric Biggers
59711630104SEric Biggers
598849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/throttle_sample_time
599849ab826SEric BiggersDate:		March 2017
600849ab826SEric BiggersContact:	linux-block@vger.kernel.org
601849ab826SEric BiggersDescription:
602849ab826SEric Biggers		[RW] This is the time window that blk-throttle samples data, in
603849ab826SEric Biggers		millisecond.  blk-throttle makes decision based on the
604849ab826SEric Biggers		samplings. Lower time means cgroups have more smooth throughput,
605849ab826SEric Biggers		but higher CPU overhead. This exists only when
606849ab826SEric Biggers		CONFIG_BLK_DEV_THROTTLING_LOW is enabled.
607849ab826SEric Biggers
608849ab826SEric Biggers
6098bc2f7c6SEric BiggersWhat:		/sys/block/<disk>/queue/virt_boundary_mask
6108bc2f7c6SEric BiggersDate:		April 2021
6118bc2f7c6SEric BiggersContact:	linux-block@vger.kernel.org
6128bc2f7c6SEric BiggersDescription:
6138bc2f7c6SEric Biggers		[RO] This file shows the I/O segment memory alignment mask for
6148bc2f7c6SEric Biggers		the block device.  I/O requests to this device will be split
6158bc2f7c6SEric Biggers		between segments wherever either the memory address of the end
6168bc2f7c6SEric Biggers		of the previous segment or the memory address of the beginning
6178bc2f7c6SEric Biggers		of the current segment is not aligned to virt_boundary_mask + 1
6188bc2f7c6SEric Biggers		bytes.
6198bc2f7c6SEric Biggers
6208bc2f7c6SEric Biggers
621849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/wbt_lat_usec
622849ab826SEric BiggersDate:		November 2016
623849ab826SEric BiggersContact:	linux-block@vger.kernel.org
624849ab826SEric BiggersDescription:
625849ab826SEric Biggers		[RW] If the device is registered for writeback throttling, then
626849ab826SEric Biggers		this file shows the target minimum read latency. If this latency
627849ab826SEric Biggers		is exceeded in a given window of time (see wb_window_usec), then
628849ab826SEric Biggers		the writeback throttling will start scaling back writes. Writing
629849ab826SEric Biggers		a value of '0' to this file disables the feature. Writing a
630849ab826SEric Biggers		value of '-1' to this file resets the value to the default
631849ab826SEric Biggers		setting.
632849ab826SEric Biggers
633849ab826SEric Biggers
634849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/write_cache
635849ab826SEric BiggersDate:		April 2016
636849ab826SEric BiggersContact:	linux-block@vger.kernel.org
637849ab826SEric BiggersDescription:
638849ab826SEric Biggers		[RW] When read, this file will display whether the device has
639849ab826SEric Biggers		write back caching enabled or not. It will return "write back"
640849ab826SEric Biggers		for the former case, and "write through" for the latter. Writing
641849ab826SEric Biggers		to this file can change the kernels view of the device, but it
642849ab826SEric Biggers		doesn't alter the device state. This means that it might not be
643849ab826SEric Biggers		safe to toggle the setting from "write back" to "write through",
644849ab826SEric Biggers		since that will also eliminate cache flushes issued by the
645849ab826SEric Biggers		kernel.
64607c9093cSEric Biggers
64707c9093cSEric Biggers
64807c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_same_max_bytes
64907c9093cSEric BiggersDate:		January 2012
65007c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
65107c9093cSEric BiggersDescription:
652849ab826SEric Biggers		[RO] Some devices support a write same operation in which a
65307c9093cSEric Biggers		single data block can be written to a range of several
654849ab826SEric Biggers		contiguous blocks on storage. This can be used to wipe areas on
655849ab826SEric Biggers		disk or to initialize drives in a RAID configuration.
656849ab826SEric Biggers		write_same_max_bytes indicates how many bytes can be written in
657849ab826SEric Biggers		a single write same command. If write_same_max_bytes is 0, write
658849ab826SEric Biggers		same is not supported by the device.
65907c9093cSEric Biggers
66007c9093cSEric Biggers
66107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_zeroes_max_bytes
66207c9093cSEric BiggersDate:		November 2016
66307c9093cSEric BiggersContact:	Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
66407c9093cSEric BiggersDescription:
665849ab826SEric Biggers		[RO] Devices that support write zeroes operation in which a
666849ab826SEric Biggers		single request can be issued to zero out the range of contiguous
667849ab826SEric Biggers		blocks on storage without having any payload in the request.
668849ab826SEric Biggers		This can be used to optimize writing zeroes to the devices.
669849ab826SEric Biggers		write_zeroes_max_bytes indicates how many bytes can be written
670849ab826SEric Biggers		in a single write zeroes command. If write_zeroes_max_bytes is
671849ab826SEric Biggers		0, write zeroes is not supported by the device.
672849ab826SEric Biggers
673849ab826SEric Biggers
674849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_append_max_bytes
675849ab826SEric BiggersDate:		May 2020
676849ab826SEric BiggersContact:	linux-block@vger.kernel.org
677849ab826SEric BiggersDescription:
678849ab826SEric Biggers		[RO] This is the maximum number of bytes that can be written to
679849ab826SEric Biggers		a sequential zone of a zoned block device using a zone append
680849ab826SEric Biggers		write operation (REQ_OP_ZONE_APPEND). This value is always 0 for
681849ab826SEric Biggers		regular block devices.
682849ab826SEric Biggers
683849ab826SEric Biggers
684849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_write_granularity
685849ab826SEric BiggersDate:		January 2021
686849ab826SEric BiggersContact:	linux-block@vger.kernel.org
687849ab826SEric BiggersDescription:
688849ab826SEric Biggers		[RO] This indicates the alignment constraint, in bytes, for
689849ab826SEric Biggers		write operations in sequential zones of zoned block devices
690849ab826SEric Biggers		(devices with a zoned attributed that reports "host-managed" or
691849ab826SEric Biggers		"host-aware"). This value is always 0 for regular block devices.
69207c9093cSEric Biggers
69307c9093cSEric Biggers
69407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/zoned
69507c9093cSEric BiggersDate:		September 2016
69607c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
69707c9093cSEric BiggersDescription:
698849ab826SEric Biggers		[RO] zoned indicates if the device is a zoned block device and
699849ab826SEric Biggers		the zone model of the device if it is indeed zoned.  The
700849ab826SEric Biggers		possible values indicated by zoned are "none" for regular block
701849ab826SEric Biggers		devices and "host-aware" or "host-managed" for zoned block
702849ab826SEric Biggers		devices. The characteristics of host-aware and host-managed
703849ab826SEric Biggers		zoned block devices are described in the ZBC (Zoned Block
704849ab826SEric Biggers		Commands) and ZAC (Zoned Device ATA Command Set) standards.
705849ab826SEric Biggers		These standards also define the "drive-managed" zone model.
706849ab826SEric Biggers		However, since drive-managed zoned block devices do not support
707849ab826SEric Biggers		zone commands, they will be treated as regular block devices and
708849ab826SEric Biggers		zoned will report "none".
70907c9093cSEric Biggers
71007c9093cSEric Biggers
711e3306221SSagi GrimbergWhat:		/sys/block/<disk>/hidden
712e3306221SSagi GrimbergDate:		March 2023
713e3306221SSagi GrimbergContact:	linux-block@vger.kernel.org
714e3306221SSagi GrimbergDescription:
715e3306221SSagi Grimberg		[RO] the block device is hidden. it doesn’t produce events, and
716e3306221SSagi Grimberg		can’t be opened from userspace or using blkdev_get*.
717e3306221SSagi Grimberg		Used for the underlying components of multipath devices.
718e3306221SSagi Grimberg
719e3306221SSagi Grimberg
720ae7a7a53SEric BiggersWhat:		/sys/block/<disk>/stat
721ae7a7a53SEric BiggersDate:		February 2008
722ae7a7a53SEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
723ae7a7a53SEric BiggersDescription:
724ae7a7a53SEric Biggers		The /sys/block/<disk>/stat files displays the I/O
725ae7a7a53SEric Biggers		statistics of disk <disk>. They contain 11 fields:
726ae7a7a53SEric Biggers
727ae7a7a53SEric Biggers		==  ==============================================
728ae7a7a53SEric Biggers		 1  reads completed successfully
729ae7a7a53SEric Biggers		 2  reads merged
730ae7a7a53SEric Biggers		 3  sectors read
731ae7a7a53SEric Biggers		 4  time spent reading (ms)
732ae7a7a53SEric Biggers		 5  writes completed
733ae7a7a53SEric Biggers		 6  writes merged
734ae7a7a53SEric Biggers		 7  sectors written
735ae7a7a53SEric Biggers		 8  time spent writing (ms)
736ae7a7a53SEric Biggers		 9  I/Os currently in progress
737ae7a7a53SEric Biggers		10  time spent doing I/Os (ms)
738ae7a7a53SEric Biggers		11  weighted time spent doing I/Os (ms)
739ae7a7a53SEric Biggers		12  discards completed
740ae7a7a53SEric Biggers		13  discards merged
741ae7a7a53SEric Biggers		14  sectors discarded
742ae7a7a53SEric Biggers		15  time spent discarding (ms)
743ae7a7a53SEric Biggers		16  flush requests completed
744ae7a7a53SEric Biggers		17  time spent flushing (ms)
745ae7a7a53SEric Biggers		==  ==============================================
746ae7a7a53SEric Biggers
747ae7a7a53SEric Biggers		For more details refer Documentation/admin-guide/iostats.rst
748