104c56957SAndré Almeida.. SPDX-License-Identifier: GPL-2.0 204c56957SAndré Almeida 3898bd37aSMauro Carvalho Chehab======================== 4898bd37aSMauro Carvalho ChehabNull block device driver 5898bd37aSMauro Carvalho Chehab======================== 6898bd37aSMauro Carvalho Chehab 704c56957SAndré AlmeidaOverview 804c56957SAndré Almeida======== 9898bd37aSMauro Carvalho Chehab 1004c56957SAndré AlmeidaThe null block device (``/dev/nullb*``) is used for benchmarking the various 11898bd37aSMauro Carvalho Chehabblock-layer implementations. It emulates a block device of X gigabytes in size. 1204c56957SAndré AlmeidaIt does not execute any read/write operation, just mark them as complete in 1304c56957SAndré Almeidathe request queue. The following instances are possible: 14898bd37aSMauro Carvalho Chehab 15898bd37aSMauro Carvalho Chehab Multi-queue block-layer 16898bd37aSMauro Carvalho Chehab 17898bd37aSMauro Carvalho Chehab - Request-based. 18898bd37aSMauro Carvalho Chehab - Configurable submission queues per device. 19898bd37aSMauro Carvalho Chehab 20898bd37aSMauro Carvalho Chehab No block-layer (Known as bio-based) 21898bd37aSMauro Carvalho Chehab 22898bd37aSMauro Carvalho Chehab - Bio-based. IO requests are submitted directly to the device driver. 23898bd37aSMauro Carvalho Chehab - Directly accepts bio data structure and returns them. 24898bd37aSMauro Carvalho Chehab 25898bd37aSMauro Carvalho ChehabAll of them have a completion queue for each core in the system. 26898bd37aSMauro Carvalho Chehab 2704c56957SAndré AlmeidaModule parameters 2804c56957SAndré Almeida================= 29898bd37aSMauro Carvalho Chehab 30898bd37aSMauro Carvalho Chehabqueue_mode=[0-2]: Default: 2-Multi-queue 31898bd37aSMauro Carvalho Chehab Selects which block-layer the module should instantiate with. 32898bd37aSMauro Carvalho Chehab 33898bd37aSMauro Carvalho Chehab = ============ 34898bd37aSMauro Carvalho Chehab 0 Bio-based 3504c56957SAndré Almeida 1 Single-queue (deprecated) 36898bd37aSMauro Carvalho Chehab 2 Multi-queue 37898bd37aSMauro Carvalho Chehab = ============ 38898bd37aSMauro Carvalho Chehab 39898bd37aSMauro Carvalho Chehabhome_node=[0--nr_nodes]: Default: NUMA_NO_NODE 40898bd37aSMauro Carvalho Chehab Selects what CPU node the data structures are allocated from. 41898bd37aSMauro Carvalho Chehab 42898bd37aSMauro Carvalho Chehabgb=[Size in GB]: Default: 250GB 43898bd37aSMauro Carvalho Chehab The size of the device reported to the system. 44898bd37aSMauro Carvalho Chehab 45898bd37aSMauro Carvalho Chehabbs=[Block size (in bytes)]: Default: 512 bytes 46898bd37aSMauro Carvalho Chehab The block size reported to the system. 47898bd37aSMauro Carvalho Chehab 48898bd37aSMauro Carvalho Chehabnr_devices=[Number of devices]: Default: 1 49898bd37aSMauro Carvalho Chehab Number of block devices instantiated. They are instantiated as /dev/nullb0, 50898bd37aSMauro Carvalho Chehab etc. 51898bd37aSMauro Carvalho Chehab 52898bd37aSMauro Carvalho Chehabirqmode=[0-2]: Default: 1-Soft-irq 53898bd37aSMauro Carvalho Chehab The completion mode used for completing IOs to the block-layer. 54898bd37aSMauro Carvalho Chehab 55898bd37aSMauro Carvalho Chehab = =========================================================================== 56898bd37aSMauro Carvalho Chehab 0 None. 57898bd37aSMauro Carvalho Chehab 1 Soft-irq. Uses IPI to complete IOs across CPU nodes. Simulates the overhead 58898bd37aSMauro Carvalho Chehab when IOs are issued from another CPU node than the home the device is 59898bd37aSMauro Carvalho Chehab connected to. 60898bd37aSMauro Carvalho Chehab 2 Timer: Waits a specific period (completion_nsec) for each IO before 61898bd37aSMauro Carvalho Chehab completion. 62898bd37aSMauro Carvalho Chehab = =========================================================================== 63898bd37aSMauro Carvalho Chehab 64898bd37aSMauro Carvalho Chehabcompletion_nsec=[ns]: Default: 10,000ns 65898bd37aSMauro Carvalho Chehab Combined with irqmode=2 (timer). The time each completion event must wait. 66898bd37aSMauro Carvalho Chehab 6704c56957SAndré Almeidasubmit_queues=[1..nr_cpus]: Default: 1 68898bd37aSMauro Carvalho Chehab The number of submission queues attached to the device driver. If unset, it 69898bd37aSMauro Carvalho Chehab defaults to 1. For multi-queue, it is ignored when use_per_node_hctx module 70898bd37aSMauro Carvalho Chehab parameter is 1. 71898bd37aSMauro Carvalho Chehab 72898bd37aSMauro Carvalho Chehabhw_queue_depth=[0..qdepth]: Default: 64 73898bd37aSMauro Carvalho Chehab The hardware queue depth of the device. 74898bd37aSMauro Carvalho Chehab 75*058efe00SVincent Fumemory_backed=[0/1]: Default: 0 76*058efe00SVincent Fu Whether or not to use a memory buffer to respond to IO requests 77*058efe00SVincent Fu 78*058efe00SVincent Fu = ============================================= 79*058efe00SVincent Fu 0 Transfer no data in response to IO requests 80*058efe00SVincent Fu 1 Use a memory buffer to respond to IO requests 81*058efe00SVincent Fu = ============================================= 82*058efe00SVincent Fu 83*058efe00SVincent Fudiscard=[0/1]: Default: 0 84*058efe00SVincent Fu Support discard operations (requires memory-backed null_blk device). 85*058efe00SVincent Fu 86*058efe00SVincent Fu = ===================================== 87*058efe00SVincent Fu 0 Do not support discard operations 88*058efe00SVincent Fu 1 Enable support for discard operations 89*058efe00SVincent Fu = ===================================== 90*058efe00SVincent Fu 91*058efe00SVincent Fucache_size=[Size in MB]: Default: 0 92*058efe00SVincent Fu Cache size in MB for memory-backed device. 93*058efe00SVincent Fu 94*058efe00SVincent Fumbps=[Maximum bandwidth in MB/s]: Default: 0 (no limit) 95*058efe00SVincent Fu Bandwidth limit for device performance. 96*058efe00SVincent Fu 9704c56957SAndré AlmeidaMulti-queue specific parameters 9804c56957SAndré Almeida------------------------------- 99898bd37aSMauro Carvalho Chehab 100898bd37aSMauro Carvalho Chehabuse_per_node_hctx=[0/1]: Default: 0 10104c56957SAndré Almeida Number of hardware context queues. 102898bd37aSMauro Carvalho Chehab 103898bd37aSMauro Carvalho Chehab = ===================================================================== 104898bd37aSMauro Carvalho Chehab 0 The number of submit queues are set to the value of the submit_queues 105898bd37aSMauro Carvalho Chehab parameter. 106898bd37aSMauro Carvalho Chehab 1 The multi-queue block layer is instantiated with a hardware dispatch 107898bd37aSMauro Carvalho Chehab queue for each CPU node in the system. 108898bd37aSMauro Carvalho Chehab = ===================================================================== 109898bd37aSMauro Carvalho Chehab 110898bd37aSMauro Carvalho Chehabno_sched=[0/1]: Default: 0 11104c56957SAndré Almeida Enable/disable the io scheduler. 112898bd37aSMauro Carvalho Chehab 113898bd37aSMauro Carvalho Chehab = ====================================== 114898bd37aSMauro Carvalho Chehab 0 nullb* use default blk-mq io scheduler 115898bd37aSMauro Carvalho Chehab 1 nullb* doesn't use io scheduler 116898bd37aSMauro Carvalho Chehab = ====================================== 117898bd37aSMauro Carvalho Chehab 118898bd37aSMauro Carvalho Chehabblocking=[0/1]: Default: 0 11904c56957SAndré Almeida Blocking behavior of the request queue. 120898bd37aSMauro Carvalho Chehab 121898bd37aSMauro Carvalho Chehab = =============================================================== 122898bd37aSMauro Carvalho Chehab 0 Register as a non-blocking blk-mq driver device. 123898bd37aSMauro Carvalho Chehab 1 Register as a blocking blk-mq driver device, null_blk will set 124898bd37aSMauro Carvalho Chehab the BLK_MQ_F_BLOCKING flag, indicating that it sometimes/always 125898bd37aSMauro Carvalho Chehab needs to block in its ->queue_rq() function. 126898bd37aSMauro Carvalho Chehab = =============================================================== 127898bd37aSMauro Carvalho Chehab 128898bd37aSMauro Carvalho Chehabshared_tags=[0/1]: Default: 0 12904c56957SAndré Almeida Sharing tags between devices. 130898bd37aSMauro Carvalho Chehab 131898bd37aSMauro Carvalho Chehab = ================================================================ 132898bd37aSMauro Carvalho Chehab 0 Tag set is not shared. 133898bd37aSMauro Carvalho Chehab 1 Tag set shared between devices for blk-mq. Only makes sense with 134898bd37aSMauro Carvalho Chehab nr_devices > 1, otherwise there's no tag set to share. 135898bd37aSMauro Carvalho Chehab = ================================================================ 136898bd37aSMauro Carvalho Chehab 137898bd37aSMauro Carvalho Chehabzoned=[0/1]: Default: 0 13804c56957SAndré Almeida Device is a random-access or a zoned block device. 139898bd37aSMauro Carvalho Chehab 140898bd37aSMauro Carvalho Chehab = ====================================================================== 141898bd37aSMauro Carvalho Chehab 0 Block device is exposed as a random-access block device. 142898bd37aSMauro Carvalho Chehab 1 Block device is exposed as a host-managed zoned block device. Requires 143898bd37aSMauro Carvalho Chehab CONFIG_BLK_DEV_ZONED. 144898bd37aSMauro Carvalho Chehab = ====================================================================== 145898bd37aSMauro Carvalho Chehab 146898bd37aSMauro Carvalho Chehabzone_size=[MB]: Default: 256 147898bd37aSMauro Carvalho Chehab Per zone size when exposed as a zoned block device. Must be a power of two. 148898bd37aSMauro Carvalho Chehab 149898bd37aSMauro Carvalho Chehabzone_nr_conv=[nr_conv]: Default: 0 150898bd37aSMauro Carvalho Chehab The number of conventional zones to create when block device is zoned. If 151898bd37aSMauro Carvalho Chehab zone_nr_conv >= nr_zones, it will be reduced to nr_zones - 1. 152