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
158849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/dax
159849ab826SEric BiggersDate:		June 2016
160849ab826SEric BiggersContact:	linux-block@vger.kernel.org
161849ab826SEric BiggersDescription:
162849ab826SEric Biggers		[RO] This file indicates whether the device supports Direct
163849ab826SEric Biggers		Access (DAX), used by CPU-addressable storage to bypass the
164849ab826SEric Biggers		pagecache.  It shows '1' if true, '0' if not.
16507c9093cSEric Biggers
16607c9093cSEric Biggers
16707c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_granularity
16807c9093cSEric BiggersDate:		May 2011
16907c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
17007c9093cSEric BiggersDescription:
171849ab826SEric Biggers		[RO] Devices that support discard functionality may internally
172849ab826SEric Biggers		allocate space using units that are bigger than the logical
173849ab826SEric Biggers		block size. The discard_granularity parameter indicates the size
174849ab826SEric Biggers		of the internal allocation unit in bytes if reported by the
175849ab826SEric Biggers		device. Otherwise the discard_granularity will be set to match
176849ab826SEric Biggers		the device's physical block size. A discard_granularity of 0
177849ab826SEric Biggers		means that the device does not support discard functionality.
17807c9093cSEric Biggers
17907c9093cSEric Biggers
18007c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_bytes
18107c9093cSEric BiggersDate:		May 2011
18207c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
18307c9093cSEric BiggersDescription:
184849ab826SEric Biggers		[RW] While discard_max_hw_bytes is the hardware limit for the
185849ab826SEric Biggers		device, this setting is the software limit. Some devices exhibit
186849ab826SEric Biggers		large latencies when large discards are issued, setting this
187849ab826SEric Biggers		value lower will make Linux issue smaller discards and
188849ab826SEric Biggers		potentially help reduce latencies induced by large discard
189849ab826SEric Biggers		operations.
190849ab826SEric Biggers
191849ab826SEric Biggers
192849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/discard_max_hw_bytes
193849ab826SEric BiggersDate:		July 2015
194849ab826SEric BiggersContact:	linux-block@vger.kernel.org
195849ab826SEric BiggersDescription:
196849ab826SEric Biggers		[RO] Devices that support discard functionality may have
197849ab826SEric Biggers		internal limits on the number of bytes that can be trimmed or
198849ab826SEric Biggers		unmapped in a single operation.  The `discard_max_hw_bytes`
199849ab826SEric Biggers		parameter is set by the device driver to the maximum number of
200849ab826SEric Biggers		bytes that can be discarded in a single operation.  Discard
201849ab826SEric Biggers		requests issued to the device must not exceed this limit.  A
202849ab826SEric Biggers		`discard_max_hw_bytes` value of 0 means that the device does not
203849ab826SEric Biggers		support discard functionality.
20407c9093cSEric Biggers
20507c9093cSEric Biggers
20607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/discard_zeroes_data
20707c9093cSEric BiggersDate:		May 2011
20807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
20907c9093cSEric BiggersDescription:
210849ab826SEric Biggers		[RO] Will always return 0.  Don't rely on any specific behavior
21107c9093cSEric Biggers		for discards, and don't read this file.
21207c9093cSEric Biggers
21307c9093cSEric Biggers
214849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/fua
215849ab826SEric BiggersDate:		May 2018
216849ab826SEric BiggersContact:	linux-block@vger.kernel.org
217849ab826SEric BiggersDescription:
218849ab826SEric Biggers		[RO] Whether or not the block driver supports the FUA flag for
219849ab826SEric Biggers		write requests.  FUA stands for Force Unit Access. If the FUA
220849ab826SEric Biggers		flag is set that means that write requests must bypass the
221849ab826SEric Biggers		volatile cache of the storage device.
222849ab826SEric Biggers
223849ab826SEric Biggers
224849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/hw_sector_size
225849ab826SEric BiggersDate:		January 2008
226849ab826SEric BiggersContact:	linux-block@vger.kernel.org
227849ab826SEric BiggersDescription:
228849ab826SEric Biggers		[RO] This is the hardware sector size of the device, in bytes.
229849ab826SEric Biggers
230849ab826SEric Biggers
231849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/independent_access_ranges/
232849ab826SEric BiggersDate:		October 2021
233849ab826SEric BiggersContact:	linux-block@vger.kernel.org
234849ab826SEric BiggersDescription:
235849ab826SEric Biggers		[RO] The presence of this sub-directory of the
236849ab826SEric Biggers		/sys/block/xxx/queue/ directory indicates that the device is
237849ab826SEric Biggers		capable of executing requests targeting different sector ranges
238849ab826SEric Biggers		in parallel. For instance, single LUN multi-actuator hard-disks
239849ab826SEric Biggers		will have an independent_access_ranges directory if the device
240849ab826SEric Biggers		correctly advertizes the sector ranges of its actuators.
241849ab826SEric Biggers
242849ab826SEric Biggers		The independent_access_ranges directory contains one directory
243849ab826SEric Biggers		per access range, with each range described using the sector
244849ab826SEric Biggers		(RO) attribute file to indicate the first sector of the range
245849ab826SEric Biggers		and the nr_sectors (RO) attribute file to indicate the total
246849ab826SEric Biggers		number of sectors in the range starting from the first sector of
247849ab826SEric Biggers		the range.  For example, a dual-actuator hard-disk will have the
248849ab826SEric Biggers		following independent_access_ranges entries.::
249849ab826SEric Biggers
250849ab826SEric Biggers			$ tree /sys/block/<disk>/queue/independent_access_ranges/
251849ab826SEric Biggers			/sys/block/<disk>/queue/independent_access_ranges/
252849ab826SEric Biggers			|-- 0
253849ab826SEric Biggers			|   |-- nr_sectors
254849ab826SEric Biggers			|   `-- sector
255849ab826SEric Biggers			`-- 1
256849ab826SEric Biggers			    |-- nr_sectors
257849ab826SEric Biggers			    `-- sector
258849ab826SEric Biggers
259849ab826SEric Biggers		The sector and nr_sectors attributes use 512B sector unit,
260849ab826SEric Biggers		regardless of the actual block size of the device. Independent
261849ab826SEric Biggers		access ranges do not overlap and include all sectors within the
262849ab826SEric Biggers		device capacity. The access ranges are numbered in increasing
263849ab826SEric Biggers		order of the range start sector, that is, the sector attribute
264849ab826SEric Biggers		of range 0 always has the value 0.
265849ab826SEric Biggers
266849ab826SEric Biggers
267849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll
268849ab826SEric BiggersDate:		November 2015
269849ab826SEric BiggersContact:	linux-block@vger.kernel.org
270849ab826SEric BiggersDescription:
271849ab826SEric Biggers		[RW] When read, this file shows whether polling is enabled (1)
272849ab826SEric Biggers		or disabled (0).  Writing '0' to this file will disable polling
273849ab826SEric Biggers		for this device.  Writing any non-zero value will enable this
274849ab826SEric Biggers		feature.
275849ab826SEric Biggers
276849ab826SEric Biggers
277849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/io_poll_delay
278849ab826SEric BiggersDate:		November 2016
279849ab826SEric BiggersContact:	linux-block@vger.kernel.org
280849ab826SEric BiggersDescription:
281849ab826SEric Biggers		[RW] If polling is enabled, this controls what kind of polling
282849ab826SEric Biggers		will be performed. It defaults to -1, which is classic polling.
283849ab826SEric Biggers		In this mode, the CPU will repeatedly ask for completions
284849ab826SEric Biggers		without giving up any time.  If set to 0, a hybrid polling mode
285849ab826SEric Biggers		is used, where the kernel will attempt to make an educated guess
286849ab826SEric Biggers		at when the IO will complete. Based on this guess, the kernel
287849ab826SEric Biggers		will put the process issuing IO to sleep for an amount of time,
288849ab826SEric Biggers		before entering a classic poll loop. This mode might be a little
289849ab826SEric Biggers		slower than pure classic polling, but it will be more efficient.
290849ab826SEric Biggers		If set to a value larger than 0, the kernel will put the process
291849ab826SEric Biggers		issuing IO to sleep for this amount of microseconds before
292849ab826SEric Biggers		entering classic polling.
293849ab826SEric Biggers
294849ab826SEric Biggers
29507c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/io_timeout
29607c9093cSEric BiggersDate:		November 2018
29707c9093cSEric BiggersContact:	Weiping Zhang <zhangweiping@didiglobal.com>
29807c9093cSEric BiggersDescription:
299849ab826SEric Biggers		[RW] io_timeout is the request timeout in milliseconds. If a
300849ab826SEric Biggers		request does not complete in this time then the block driver
301849ab826SEric Biggers		timeout handler is invoked. That timeout handler can decide to
302849ab826SEric Biggers		retry the request, to fail it or to start a device recovery
303849ab826SEric Biggers		strategy.
304849ab826SEric Biggers
305849ab826SEric Biggers
306849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/iostats
307849ab826SEric BiggersDate:		January 2009
308849ab826SEric BiggersContact:	linux-block@vger.kernel.org
309849ab826SEric BiggersDescription:
310849ab826SEric Biggers		[RW] This file is used to control (on/off) the iostats
311849ab826SEric Biggers		accounting of the disk.
31207c9093cSEric Biggers
31307c9093cSEric Biggers
31407c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/logical_block_size
31507c9093cSEric BiggersDate:		May 2009
31607c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
31707c9093cSEric BiggersDescription:
318849ab826SEric Biggers		[RO] This is the smallest unit the storage device can address.
319849ab826SEric Biggers		It is typically 512 bytes.
32007c9093cSEric Biggers
32107c9093cSEric Biggers
32207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_active_zones
32307c9093cSEric BiggersDate:		July 2020
32407c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
32507c9093cSEric BiggersDescription:
326849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
32707c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
32807c9093cSEric Biggers		any of the zone states: EXPLICIT OPEN, IMPLICIT OPEN or CLOSED,
32907c9093cSEric Biggers		is limited by this value. If this value is 0, there is no limit.
33007c9093cSEric Biggers
331849ab826SEric Biggers		If the host attempts to exceed this limit, the driver should
332849ab826SEric Biggers		report this error with BLK_STS_ZONE_ACTIVE_RESOURCE, which user
333849ab826SEric Biggers		space may see as the EOVERFLOW errno.
334849ab826SEric Biggers
335849ab826SEric Biggers
336849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_discard_segments
337849ab826SEric BiggersDate:		February 2017
338849ab826SEric BiggersContact:	linux-block@vger.kernel.org
339849ab826SEric BiggersDescription:
340849ab826SEric Biggers		[RO] The maximum number of DMA scatter/gather entries in a
341849ab826SEric Biggers		discard request.
342849ab826SEric Biggers
343849ab826SEric Biggers
344849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_hw_sectors_kb
345849ab826SEric BiggersDate:		September 2004
346849ab826SEric BiggersContact:	linux-block@vger.kernel.org
347849ab826SEric BiggersDescription:
348849ab826SEric Biggers		[RO] This is the maximum number of kilobytes supported in a
349849ab826SEric Biggers		single data transfer.
350849ab826SEric Biggers
351849ab826SEric Biggers
352849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_integrity_segments
353849ab826SEric BiggersDate:		September 2010
354849ab826SEric BiggersContact:	linux-block@vger.kernel.org
355849ab826SEric BiggersDescription:
356849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
357849ab826SEric Biggers		with integrity data that will be submitted by the block layer
358849ab826SEric Biggers		core to the associated block driver.
359849ab826SEric Biggers
36007c9093cSEric Biggers
36107c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/max_open_zones
36207c9093cSEric BiggersDate:		July 2020
36307c9093cSEric BiggersContact:	Niklas Cassel <niklas.cassel@wdc.com>
36407c9093cSEric BiggersDescription:
365849ab826SEric Biggers		[RO] For zoned block devices (zoned attribute indicating
36607c9093cSEric Biggers		"host-managed" or "host-aware"), the sum of zones belonging to
367849ab826SEric Biggers		any of the zone states: EXPLICIT OPEN or IMPLICIT OPEN, is
368849ab826SEric Biggers		limited by this value. If this value is 0, there is no limit.
369849ab826SEric Biggers
370849ab826SEric Biggers
371849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_sectors_kb
372849ab826SEric BiggersDate:		September 2004
373849ab826SEric BiggersContact:	linux-block@vger.kernel.org
374849ab826SEric BiggersDescription:
375849ab826SEric Biggers		[RW] This is the maximum number of kilobytes that the block
376849ab826SEric Biggers		layer will allow for a filesystem request. Must be smaller than
377849ab826SEric Biggers		or equal to the maximum size allowed by the hardware.
378849ab826SEric Biggers
379849ab826SEric Biggers
380849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segment_size
381849ab826SEric BiggersDate:		March 2010
382849ab826SEric BiggersContact:	linux-block@vger.kernel.org
383849ab826SEric BiggersDescription:
384849ab826SEric Biggers		[RO] Maximum size in bytes of a single element in a DMA
385849ab826SEric Biggers		scatter/gather list.
386849ab826SEric Biggers
387849ab826SEric Biggers
388849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/max_segments
389849ab826SEric BiggersDate:		March 2010
390849ab826SEric BiggersContact:	linux-block@vger.kernel.org
391849ab826SEric BiggersDescription:
392849ab826SEric Biggers		[RO] Maximum number of elements in a DMA scatter/gather list
393849ab826SEric Biggers		that is submitted to the associated block driver.
39407c9093cSEric Biggers
39507c9093cSEric Biggers
39607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/minimum_io_size
39707c9093cSEric BiggersDate:		April 2009
39807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
39907c9093cSEric BiggersDescription:
400849ab826SEric Biggers		[RO] Storage devices may report a granularity or preferred
401849ab826SEric Biggers		minimum I/O size which is the smallest request the device can
402849ab826SEric Biggers		perform without incurring a performance penalty.  For disk
403849ab826SEric Biggers		drives this is often the physical block size.  For RAID arrays
404849ab826SEric Biggers		it is often the stripe chunk size.  A properly aligned multiple
405849ab826SEric Biggers		of minimum_io_size is the preferred request size for workloads
406849ab826SEric Biggers		where a high number of I/O operations is desired.
40707c9093cSEric Biggers
40807c9093cSEric Biggers
40907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nomerges
41007c9093cSEric BiggersDate:		January 2010
4118b0551a7SEric BiggersContact:	linux-block@vger.kernel.org
41207c9093cSEric BiggersDescription:
413849ab826SEric Biggers		[RW] Standard I/O elevator operations include attempts to merge
414849ab826SEric Biggers		contiguous I/Os. For known random I/O loads these attempts will
415849ab826SEric Biggers		always fail and result in extra cycles being spent in the
416849ab826SEric Biggers		kernel. This allows one to turn off this behavior on one of two
417849ab826SEric Biggers		ways: When set to 1, complex merge checks are disabled, but the
418849ab826SEric Biggers		simple one-shot merges with the previous I/O request are
419849ab826SEric Biggers		enabled. When set to 2, all merge tries are disabled. The
420849ab826SEric Biggers		default value is 0 - which enables all types of merge tries.
421849ab826SEric Biggers
422849ab826SEric Biggers
423849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/nr_requests
424849ab826SEric BiggersDate:		July 2003
425849ab826SEric BiggersContact:	linux-block@vger.kernel.org
426849ab826SEric BiggersDescription:
427849ab826SEric Biggers		[RW] This controls how many requests may be allocated in the
428849ab826SEric Biggers		block layer for read or write requests. Note that the total
429849ab826SEric Biggers		allocated number may be twice this amount, since it applies only
430849ab826SEric Biggers		to reads or writes (not the accumulated sum).
431849ab826SEric Biggers
432849ab826SEric Biggers		To avoid priority inversion through request starvation, a
433849ab826SEric Biggers		request queue maintains a separate request pool per each cgroup
434849ab826SEric Biggers		when CONFIG_BLK_CGROUP is enabled, and this parameter applies to
435849ab826SEric Biggers		each such per-block-cgroup request pool.  IOW, if there are N
436849ab826SEric Biggers		block cgroups, each request queue may have up to N request
437849ab826SEric Biggers		pools, each independently regulated by nr_requests.
43807c9093cSEric Biggers
43907c9093cSEric Biggers
44007c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/nr_zones
44107c9093cSEric BiggersDate:		November 2018
44207c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
44307c9093cSEric BiggersDescription:
444849ab826SEric Biggers		[RO] nr_zones indicates the total number of zones of a zoned
445849ab826SEric Biggers		block device ("host-aware" or "host-managed" zone model). For
446849ab826SEric Biggers		regular block devices, the value is always 0.
44707c9093cSEric Biggers
44807c9093cSEric Biggers
44907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/optimal_io_size
45007c9093cSEric BiggersDate:		April 2009
45107c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
45207c9093cSEric BiggersDescription:
453849ab826SEric Biggers		[RO] Storage devices may report an optimal I/O size, which is
454849ab826SEric Biggers		the device's preferred unit for sustained I/O.  This is rarely
455849ab826SEric Biggers		reported for disk drives.  For RAID arrays it is usually the
456849ab826SEric Biggers		stripe width or the internal track size.  A properly aligned
457849ab826SEric Biggers		multiple of optimal_io_size is the preferred request size for
458849ab826SEric Biggers		workloads where sustained throughput is desired.  If no optimal
459849ab826SEric Biggers		I/O size is reported this file contains 0.
46007c9093cSEric Biggers
46107c9093cSEric Biggers
46207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/physical_block_size
46307c9093cSEric BiggersDate:		May 2009
46407c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
46507c9093cSEric BiggersDescription:
466849ab826SEric Biggers		[RO] This is the smallest unit a physical storage device can
467849ab826SEric Biggers		write atomically.  It is usually the same as the logical block
468849ab826SEric Biggers		size but may be bigger.  One example is SATA drives with 4KB
469849ab826SEric Biggers		sectors that expose a 512-byte logical block size to the
470849ab826SEric Biggers		operating system.  For stacked block devices the
471849ab826SEric Biggers		physical_block_size variable contains the maximum
472849ab826SEric Biggers		physical_block_size of the component devices.
473849ab826SEric Biggers
474849ab826SEric Biggers
475849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/read_ahead_kb
476849ab826SEric BiggersDate:		May 2004
477849ab826SEric BiggersContact:	linux-block@vger.kernel.org
478849ab826SEric BiggersDescription:
479849ab826SEric Biggers		[RW] Maximum number of kilobytes to read-ahead for filesystems
480849ab826SEric Biggers		on this block device.
481849ab826SEric Biggers
482849ab826SEric Biggers
483849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rotational
484849ab826SEric BiggersDate:		January 2009
485849ab826SEric BiggersContact:	linux-block@vger.kernel.org
486849ab826SEric BiggersDescription:
487849ab826SEric Biggers		[RW] This file is used to stat if the device is of rotational
488849ab826SEric Biggers		type or non-rotational type.
489849ab826SEric Biggers
490849ab826SEric Biggers
491849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/rq_affinity
492849ab826SEric BiggersDate:		September 2008
493849ab826SEric BiggersContact:	linux-block@vger.kernel.org
494849ab826SEric BiggersDescription:
495849ab826SEric Biggers		[RW] If this option is '1', the block layer will migrate request
496849ab826SEric Biggers		completions to the cpu "group" that originally submitted the
497849ab826SEric Biggers		request. For some workloads this provides a significant
498849ab826SEric Biggers		reduction in CPU cycles due to caching effects.
499849ab826SEric Biggers
500849ab826SEric Biggers		For storage configurations that need to maximize distribution of
501849ab826SEric Biggers		completion processing setting this option to '2' forces the
502849ab826SEric Biggers		completion to run on the requesting cpu (bypassing the "group"
503849ab826SEric Biggers		aggregation logic).
504849ab826SEric Biggers
505849ab826SEric Biggers
506849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/scheduler
507849ab826SEric BiggersDate:		October 2004
508849ab826SEric BiggersContact:	linux-block@vger.kernel.org
509849ab826SEric BiggersDescription:
510849ab826SEric Biggers		[RW] When read, this file will display the current and available
511849ab826SEric Biggers		IO schedulers for this block device. The currently active IO
512849ab826SEric Biggers		scheduler will be enclosed in [] brackets. Writing an IO
513849ab826SEric Biggers		scheduler name to this file will switch control of this block
514849ab826SEric Biggers		device to that new IO scheduler. Note that writing an IO
515849ab826SEric Biggers		scheduler name to this file will attempt to load that IO
516849ab826SEric Biggers		scheduler module, if it isn't already present in the system.
517849ab826SEric Biggers
518849ab826SEric Biggers
51911630104SEric BiggersWhat:		/sys/block/<disk>/queue/stable_writes
52011630104SEric BiggersDate:		September 2020
52111630104SEric BiggersContact:	linux-block@vger.kernel.org
52211630104SEric BiggersDescription:
52311630104SEric Biggers		[RW] This file will contain '1' if memory must not be modified
52411630104SEric Biggers		while it is being used in a write request to this device.  When
52511630104SEric Biggers		this is the case and the kernel is performing writeback of a
52611630104SEric Biggers		page, the kernel will wait for writeback to complete before
52711630104SEric Biggers		allowing the page to be modified again, rather than allowing
52811630104SEric Biggers		immediate modification as is normally the case.  This
52911630104SEric Biggers		restriction arises when the device accesses the memory multiple
53011630104SEric Biggers		times where the same data must be seen every time -- for
53111630104SEric Biggers		example, once to calculate a checksum and once to actually write
53211630104SEric Biggers		the data.  If no such restriction exists, this file will contain
53311630104SEric Biggers		'0'.  This file is writable for testing purposes.
53411630104SEric Biggers
53511630104SEric Biggers
536849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/throttle_sample_time
537849ab826SEric BiggersDate:		March 2017
538849ab826SEric BiggersContact:	linux-block@vger.kernel.org
539849ab826SEric BiggersDescription:
540849ab826SEric Biggers		[RW] This is the time window that blk-throttle samples data, in
541849ab826SEric Biggers		millisecond.  blk-throttle makes decision based on the
542849ab826SEric Biggers		samplings. Lower time means cgroups have more smooth throughput,
543849ab826SEric Biggers		but higher CPU overhead. This exists only when
544849ab826SEric Biggers		CONFIG_BLK_DEV_THROTTLING_LOW is enabled.
545849ab826SEric Biggers
546849ab826SEric Biggers
547*8bc2f7c6SEric BiggersWhat:		/sys/block/<disk>/queue/virt_boundary_mask
548*8bc2f7c6SEric BiggersDate:		April 2021
549*8bc2f7c6SEric BiggersContact:	linux-block@vger.kernel.org
550*8bc2f7c6SEric BiggersDescription:
551*8bc2f7c6SEric Biggers		[RO] This file shows the I/O segment memory alignment mask for
552*8bc2f7c6SEric Biggers		the block device.  I/O requests to this device will be split
553*8bc2f7c6SEric Biggers		between segments wherever either the memory address of the end
554*8bc2f7c6SEric Biggers		of the previous segment or the memory address of the beginning
555*8bc2f7c6SEric Biggers		of the current segment is not aligned to virt_boundary_mask + 1
556*8bc2f7c6SEric Biggers		bytes.
557*8bc2f7c6SEric Biggers
558*8bc2f7c6SEric Biggers
559849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/wbt_lat_usec
560849ab826SEric BiggersDate:		November 2016
561849ab826SEric BiggersContact:	linux-block@vger.kernel.org
562849ab826SEric BiggersDescription:
563849ab826SEric Biggers		[RW] If the device is registered for writeback throttling, then
564849ab826SEric Biggers		this file shows the target minimum read latency. If this latency
565849ab826SEric Biggers		is exceeded in a given window of time (see wb_window_usec), then
566849ab826SEric Biggers		the writeback throttling will start scaling back writes. Writing
567849ab826SEric Biggers		a value of '0' to this file disables the feature. Writing a
568849ab826SEric Biggers		value of '-1' to this file resets the value to the default
569849ab826SEric Biggers		setting.
570849ab826SEric Biggers
571849ab826SEric Biggers
572849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/write_cache
573849ab826SEric BiggersDate:		April 2016
574849ab826SEric BiggersContact:	linux-block@vger.kernel.org
575849ab826SEric BiggersDescription:
576849ab826SEric Biggers		[RW] When read, this file will display whether the device has
577849ab826SEric Biggers		write back caching enabled or not. It will return "write back"
578849ab826SEric Biggers		for the former case, and "write through" for the latter. Writing
579849ab826SEric Biggers		to this file can change the kernels view of the device, but it
580849ab826SEric Biggers		doesn't alter the device state. This means that it might not be
581849ab826SEric Biggers		safe to toggle the setting from "write back" to "write through",
582849ab826SEric Biggers		since that will also eliminate cache flushes issued by the
583849ab826SEric Biggers		kernel.
58407c9093cSEric Biggers
58507c9093cSEric Biggers
58607c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_same_max_bytes
58707c9093cSEric BiggersDate:		January 2012
58807c9093cSEric BiggersContact:	Martin K. Petersen <martin.petersen@oracle.com>
58907c9093cSEric BiggersDescription:
590849ab826SEric Biggers		[RO] Some devices support a write same operation in which a
59107c9093cSEric Biggers		single data block can be written to a range of several
592849ab826SEric Biggers		contiguous blocks on storage. This can be used to wipe areas on
593849ab826SEric Biggers		disk or to initialize drives in a RAID configuration.
594849ab826SEric Biggers		write_same_max_bytes indicates how many bytes can be written in
595849ab826SEric Biggers		a single write same command. If write_same_max_bytes is 0, write
596849ab826SEric Biggers		same is not supported by the device.
59707c9093cSEric Biggers
59807c9093cSEric Biggers
59907c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/write_zeroes_max_bytes
60007c9093cSEric BiggersDate:		November 2016
60107c9093cSEric BiggersContact:	Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
60207c9093cSEric BiggersDescription:
603849ab826SEric Biggers		[RO] Devices that support write zeroes operation in which a
604849ab826SEric Biggers		single request can be issued to zero out the range of contiguous
605849ab826SEric Biggers		blocks on storage without having any payload in the request.
606849ab826SEric Biggers		This can be used to optimize writing zeroes to the devices.
607849ab826SEric Biggers		write_zeroes_max_bytes indicates how many bytes can be written
608849ab826SEric Biggers		in a single write zeroes command. If write_zeroes_max_bytes is
609849ab826SEric Biggers		0, write zeroes is not supported by the device.
610849ab826SEric Biggers
611849ab826SEric Biggers
612849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_append_max_bytes
613849ab826SEric BiggersDate:		May 2020
614849ab826SEric BiggersContact:	linux-block@vger.kernel.org
615849ab826SEric BiggersDescription:
616849ab826SEric Biggers		[RO] This is the maximum number of bytes that can be written to
617849ab826SEric Biggers		a sequential zone of a zoned block device using a zone append
618849ab826SEric Biggers		write operation (REQ_OP_ZONE_APPEND). This value is always 0 for
619849ab826SEric Biggers		regular block devices.
620849ab826SEric Biggers
621849ab826SEric Biggers
622849ab826SEric BiggersWhat:		/sys/block/<disk>/queue/zone_write_granularity
623849ab826SEric BiggersDate:		January 2021
624849ab826SEric BiggersContact:	linux-block@vger.kernel.org
625849ab826SEric BiggersDescription:
626849ab826SEric Biggers		[RO] This indicates the alignment constraint, in bytes, for
627849ab826SEric Biggers		write operations in sequential zones of zoned block devices
628849ab826SEric Biggers		(devices with a zoned attributed that reports "host-managed" or
629849ab826SEric Biggers		"host-aware"). This value is always 0 for regular block devices.
63007c9093cSEric Biggers
63107c9093cSEric Biggers
63207c9093cSEric BiggersWhat:		/sys/block/<disk>/queue/zoned
63307c9093cSEric BiggersDate:		September 2016
63407c9093cSEric BiggersContact:	Damien Le Moal <damien.lemoal@wdc.com>
63507c9093cSEric BiggersDescription:
636849ab826SEric Biggers		[RO] zoned indicates if the device is a zoned block device and
637849ab826SEric Biggers		the zone model of the device if it is indeed zoned.  The
638849ab826SEric Biggers		possible values indicated by zoned are "none" for regular block
639849ab826SEric Biggers		devices and "host-aware" or "host-managed" for zoned block
640849ab826SEric Biggers		devices. The characteristics of host-aware and host-managed
641849ab826SEric Biggers		zoned block devices are described in the ZBC (Zoned Block
642849ab826SEric Biggers		Commands) and ZAC (Zoned Device ATA Command Set) standards.
643849ab826SEric Biggers		These standards also define the "drive-managed" zone model.
644849ab826SEric Biggers		However, since drive-managed zoned block devices do not support
645849ab826SEric Biggers		zone commands, they will be treated as regular block devices and
646849ab826SEric Biggers		zoned will report "none".
64707c9093cSEric Biggers
64807c9093cSEric Biggers
649ae7a7a53SEric BiggersWhat:		/sys/block/<disk>/stat
650ae7a7a53SEric BiggersDate:		February 2008
651ae7a7a53SEric BiggersContact:	Jerome Marchand <jmarchan@redhat.com>
652ae7a7a53SEric BiggersDescription:
653ae7a7a53SEric Biggers		The /sys/block/<disk>/stat files displays the I/O
654ae7a7a53SEric Biggers		statistics of disk <disk>. They contain 11 fields:
655ae7a7a53SEric Biggers
656ae7a7a53SEric Biggers		==  ==============================================
657ae7a7a53SEric Biggers		 1  reads completed successfully
658ae7a7a53SEric Biggers		 2  reads merged
659ae7a7a53SEric Biggers		 3  sectors read
660ae7a7a53SEric Biggers		 4  time spent reading (ms)
661ae7a7a53SEric Biggers		 5  writes completed
662ae7a7a53SEric Biggers		 6  writes merged
663ae7a7a53SEric Biggers		 7  sectors written
664ae7a7a53SEric Biggers		 8  time spent writing (ms)
665ae7a7a53SEric Biggers		 9  I/Os currently in progress
666ae7a7a53SEric Biggers		10  time spent doing I/Os (ms)
667ae7a7a53SEric Biggers		11  weighted time spent doing I/Os (ms)
668ae7a7a53SEric Biggers		12  discards completed
669ae7a7a53SEric Biggers		13  discards merged
670ae7a7a53SEric Biggers		14  sectors discarded
671ae7a7a53SEric Biggers		15  time spent discarding (ms)
672ae7a7a53SEric Biggers		16  flush requests completed
673ae7a7a53SEric Biggers		17  time spent flushing (ms)
674ae7a7a53SEric Biggers		==  ==============================================
675ae7a7a53SEric Biggers
676ae7a7a53SEric Biggers		For more details refer Documentation/admin-guide/iostats.rst
677