~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/block/null_blk.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. SPDX-License-Identifier: GPL-2.0
  2 
  3 ========================
  4 Null block device driver
  5 ========================
  6 
  7 Overview
  8 ========
  9 
 10 The null block device (``/dev/nullb*``) is used for benchmarking the various
 11 block-layer implementations. It emulates a block device of X gigabytes in size.
 12 It does not execute any read/write operation, just mark them as complete in
 13 the request queue. The following instances are possible:
 14 
 15   Multi-queue block-layer
 16 
 17     - Request-based.
 18     - Configurable submission queues per device.
 19 
 20   No block-layer (Known as bio-based)
 21 
 22     - Bio-based. IO requests are submitted directly to the device driver.
 23     - Directly accepts bio data structure and returns them.
 24 
 25 All of them have a completion queue for each core in the system.
 26 
 27 Module parameters
 28 =================
 29 
 30 queue_mode=[0-2]: Default: 2-Multi-queue
 31   Selects which block-layer the module should instantiate with.
 32 
 33   =  ============
 34   0  Bio-based
 35   1  Single-queue (deprecated)
 36   2  Multi-queue
 37   =  ============
 38 
 39 home_node=[0--nr_nodes]: Default: NUMA_NO_NODE
 40   Selects what CPU node the data structures are allocated from.
 41 
 42 gb=[Size in GB]: Default: 250GB
 43   The size of the device reported to the system.
 44 
 45 bs=[Block size (in bytes)]: Default: 512 bytes
 46   The block size reported to the system.
 47 
 48 nr_devices=[Number of devices]: Default: 1
 49   Number of block devices instantiated. They are instantiated as /dev/nullb0,
 50   etc.
 51 
 52 irqmode=[0-2]: Default: 1-Soft-irq
 53   The completion mode used for completing IOs to the block-layer.
 54 
 55   =  ===========================================================================
 56   0  None.
 57   1  Soft-irq. Uses IPI to complete IOs across CPU nodes. Simulates the overhead
 58      when IOs are issued from another CPU node than the home the device is
 59      connected to.
 60   2  Timer: Waits a specific period (completion_nsec) for each IO before
 61      completion.
 62   =  ===========================================================================
 63 
 64 completion_nsec=[ns]: Default: 10,000ns
 65   Combined with irqmode=2 (timer). The time each completion event must wait.
 66 
 67 submit_queues=[1..nr_cpus]: Default: 1
 68   The number of submission queues attached to the device driver. If unset, it
 69   defaults to 1. For multi-queue, it is ignored when use_per_node_hctx module
 70   parameter is 1.
 71 
 72 hw_queue_depth=[0..qdepth]: Default: 64
 73   The hardware queue depth of the device.
 74 
 75 memory_backed=[0/1]: Default: 0
 76   Whether or not to use a memory buffer to respond to IO requests
 77 
 78   =  =============================================
 79   0  Transfer no data in response to IO requests
 80   1  Use a memory buffer to respond to IO requests
 81   =  =============================================
 82 
 83 discard=[0/1]: Default: 0
 84   Support discard operations (requires memory-backed null_blk device).
 85 
 86   =  =====================================
 87   0  Do not support discard operations
 88   1  Enable support for discard operations
 89   =  =====================================
 90 
 91 cache_size=[Size in MB]: Default: 0
 92   Cache size in MB for memory-backed device.
 93 
 94 mbps=[Maximum bandwidth in MB/s]: Default: 0 (no limit)
 95   Bandwidth limit for device performance.
 96 
 97 Multi-queue specific parameters
 98 -------------------------------
 99 
100 use_per_node_hctx=[0/1]: Default: 0
101   Number of hardware context queues.
102 
103   =  =====================================================================
104   0  The number of submit queues are set to the value of the submit_queues
105      parameter.
106   1  The multi-queue block layer is instantiated with a hardware dispatch
107      queue for each CPU node in the system.
108   =  =====================================================================
109 
110 no_sched=[0/1]: Default: 0
111   Enable/disable the io scheduler.
112 
113   =  ======================================
114   0  nullb* use default blk-mq io scheduler
115   1  nullb* doesn't use io scheduler
116   =  ======================================
117 
118 blocking=[0/1]: Default: 0
119   Blocking behavior of the request queue.
120 
121   =  ===============================================================
122   0  Register as a non-blocking blk-mq driver device.
123   1  Register as a blocking blk-mq driver device, null_blk will set
124      the BLK_MQ_F_BLOCKING flag, indicating that it sometimes/always
125      needs to block in its ->queue_rq() function.
126   =  ===============================================================
127 
128 shared_tags=[0/1]: Default: 0
129   Sharing tags between devices.
130 
131   =  ================================================================
132   0  Tag set is not shared.
133   1  Tag set shared between devices for blk-mq. Only makes sense with
134      nr_devices > 1, otherwise there's no tag set to share.
135   =  ================================================================
136 
137 zoned=[0/1]: Default: 0
138   Device is a random-access or a zoned block device.
139 
140   =  ======================================================================
141   0  Block device is exposed as a random-access block device.
142   1  Block device is exposed as a host-managed zoned block device. Requires
143      CONFIG_BLK_DEV_ZONED.
144   =  ======================================================================
145 
146 zone_size=[MB]: Default: 256
147   Per zone size when exposed as a zoned block device. Must be a power of two.
148 
149 zone_nr_conv=[nr_conv]: Default: 0
150   The number of conventional zones to create when block device is zoned.  If
151   zone_nr_conv >= nr_zones, it will be reduced to nr_zones - 1.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php