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