0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # Block device driver configuration
0004 #
0005
0006 menuconfig BLK_DEV
0007 bool "Block devices"
0008 depends on BLOCK
0009 default y
0010 help
0011 Say Y here to get to see options for various different block device
0012 drivers. This option alone does not add any kernel code.
0013
0014 If you say N, all options in this submenu will be skipped and disabled;
0015 only do this if you know what you are doing.
0016
0017 if BLK_DEV
0018
0019 source "drivers/block/null_blk/Kconfig"
0020
0021 config BLK_DEV_FD
0022 tristate "Normal floppy disk support"
0023 depends on ARCH_MAY_HAVE_PC_FDC
0024 help
0025 If you want to use the floppy disk drive(s) of your PC under Linux,
0026 say Y. Information about this driver, especially important for IBM
0027 Thinkpad users, is contained in
0028 <file:Documentation/admin-guide/blockdev/floppy.rst>.
0029 That file also contains the location of the Floppy driver FAQ as
0030 well as location of the fdutils package used to configure additional
0031 parameters of the driver at run time.
0032
0033 To compile this driver as a module, choose M here: the
0034 module will be called floppy.
0035
0036 config BLK_DEV_FD_RAWCMD
0037 bool "Support for raw floppy disk commands (DEPRECATED)"
0038 depends on BLK_DEV_FD
0039 help
0040 If you want to use actual physical floppies and expect to do
0041 special low-level hardware accesses to them (access and use
0042 non-standard formats, for example), then enable this.
0043
0044 Note that the code enabled by this option is rarely used and
0045 might be unstable or insecure, and distros should not enable it.
0046
0047 Note: FDRAWCMD is deprecated and will be removed from the kernel
0048 in the near future.
0049
0050 If unsure, say N.
0051
0052 config AMIGA_FLOPPY
0053 tristate "Amiga floppy support"
0054 depends on AMIGA
0055
0056 config ATARI_FLOPPY
0057 tristate "Atari floppy support"
0058 depends on ATARI
0059
0060 config MAC_FLOPPY
0061 tristate "Support for PowerMac floppy"
0062 depends on PPC_PMAC && !PPC_PMAC64
0063 help
0064 If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple)
0065 floppy controller, say Y here. Most commonly found in PowerMacs.
0066
0067 config BLK_DEV_SWIM
0068 tristate "Support for SWIM Macintosh floppy"
0069 depends on M68K && MAC && !HIGHMEM
0070 help
0071 You should select this option if you want floppy support
0072 and you don't have a II, IIfx, Q900, Q950 or AV series.
0073
0074 config AMIGA_Z2RAM
0075 tristate "Amiga Zorro II ramdisk support"
0076 depends on ZORRO
0077 help
0078 This enables support for using Chip RAM and Zorro II RAM as a
0079 ramdisk or as a swap partition. Say Y if you want to include this
0080 driver in the kernel.
0081
0082 To compile this driver as a module, choose M here: the
0083 module will be called z2ram.
0084
0085 config N64CART
0086 bool "N64 cart support"
0087 depends on MACH_NINTENDO64
0088 help
0089 Support for the N64 cart.
0090
0091 config CDROM
0092 tristate
0093
0094 config GDROM
0095 tristate "SEGA Dreamcast GD-ROM drive"
0096 depends on SH_DREAMCAST
0097 select CDROM
0098 help
0099 A standard SEGA Dreamcast comes with a modified CD ROM drive called a
0100 "GD-ROM" by SEGA to signify it is capable of reading special disks
0101 with up to 1 GB of data. This drive will also read standard CD ROM
0102 disks. Select this option to access any disks in your GD ROM drive.
0103 Most users will want to say "Y" here.
0104 You can also build this as a module which will be called gdrom.
0105
0106 config PARIDE
0107 tristate "Parallel port IDE device support"
0108 depends on PARPORT_PC
0109 help
0110 There are many external CD-ROM and disk devices that connect through
0111 your computer's parallel port. Most of them are actually IDE devices
0112 using a parallel port IDE adapter. This option enables the PARIDE
0113 subsystem which contains drivers for many of these external drives.
0114 Read <file:Documentation/admin-guide/blockdev/paride.rst> for more information.
0115
0116 If you have said Y to the "Parallel-port support" configuration
0117 option, you may share a single port between your printer and other
0118 parallel port devices. Answer Y to build PARIDE support into your
0119 kernel, or M if you would like to build it as a loadable module. If
0120 your parallel port support is in a loadable module, you must build
0121 PARIDE as a module. If you built PARIDE support into your kernel,
0122 you may still build the individual protocol modules and high-level
0123 drivers as loadable modules. If you build this support as a module,
0124 it will be called paride.
0125
0126 To use the PARIDE support, you must say Y or M here and also to at
0127 least one high-level driver (e.g. "Parallel port IDE disks",
0128 "Parallel port ATAPI CD-ROMs", "Parallel port ATAPI disks" etc.) and
0129 to at least one protocol driver (e.g. "ATEN EH-100 protocol",
0130 "MicroSolutions backpack protocol", "DataStor Commuter protocol"
0131 etc.).
0132
0133 source "drivers/block/paride/Kconfig"
0134
0135 source "drivers/block/mtip32xx/Kconfig"
0136
0137 source "drivers/block/zram/Kconfig"
0138
0139 config BLK_DEV_UBD
0140 bool "Virtual block device"
0141 depends on UML
0142 help
0143 The User-Mode Linux port includes a driver called UBD which will let
0144 you access arbitrary files on the host computer as block devices.
0145 Unless you know that you do not need such virtual block devices say
0146 Y here.
0147
0148 config BLK_DEV_UBD_SYNC
0149 bool "Always do synchronous disk IO for UBD"
0150 depends on BLK_DEV_UBD
0151 help
0152 Writes to the virtual block device are not immediately written to the
0153 host's disk; this may cause problems if, for example, the User-Mode
0154 Linux 'Virtual Machine' uses a journalling filesystem and the host
0155 computer crashes.
0156
0157 Synchronous operation (i.e. always writing data to the host's disk
0158 immediately) is configurable on a per-UBD basis by using a special
0159 kernel command line option. Alternatively, you can say Y here to
0160 turn on synchronous operation by default for all block devices.
0161
0162 If you're running a journalling file system (like reiserfs, for
0163 example) in your virtual machine, you will want to say Y here. If
0164 you care for the safety of the data in your virtual machine, Y is a
0165 wise choice too. In all other cases (for example, if you're just
0166 playing around with User-Mode Linux) you can choose N.
0167
0168 config BLK_DEV_COW_COMMON
0169 bool
0170 default BLK_DEV_UBD
0171
0172 config BLK_DEV_LOOP
0173 tristate "Loopback device support"
0174 help
0175 Saying Y here will allow you to use a regular file as a block
0176 device; you can then create a file system on that block device and
0177 mount it just as you would mount other block devices such as hard
0178 drive partitions, CD-ROM drives or floppy drives. The loop devices
0179 are block special device files with major number 7 and typically
0180 called /dev/loop0, /dev/loop1 etc.
0181
0182 This is useful if you want to check an ISO 9660 file system before
0183 burning the CD, or if you want to use floppy images without first
0184 writing them to floppy. Furthermore, some Linux distributions avoid
0185 the need for a dedicated Linux partition by keeping their complete
0186 root file system inside a DOS FAT file using this loop device
0187 driver.
0188
0189 To use the loop device, you need the losetup utility, found in the
0190 util-linux package, see
0191 <https://www.kernel.org/pub/linux/utils/util-linux/>.
0192
0193 The loop device driver can also be used to "hide" a file system in
0194 a disk partition, floppy, or regular file, either using encryption
0195 (scrambling the data) or steganography (hiding the data in the low
0196 bits of, say, a sound file). This is also safe if the file resides
0197 on a remote file server.
0198
0199 Note that this loop device has nothing to do with the loopback
0200 device used for network connections from the machine to itself.
0201
0202 To compile this driver as a module, choose M here: the
0203 module will be called loop.
0204
0205 Most users will answer N here.
0206
0207 config BLK_DEV_LOOP_MIN_COUNT
0208 int "Number of loop devices to pre-create at init time"
0209 depends on BLK_DEV_LOOP
0210 default 8
0211 help
0212 Static number of loop devices to be unconditionally pre-created
0213 at init time.
0214
0215 This default value can be overwritten on the kernel command
0216 line or with module-parameter loop.max_loop.
0217
0218 The historic default is 8. If a late 2011 version of losetup(8)
0219 is used, it can be set to 0, since needed loop devices can be
0220 dynamically allocated with the /dev/loop-control interface.
0221
0222 source "drivers/block/drbd/Kconfig"
0223
0224 config BLK_DEV_NBD
0225 tristate "Network block device support"
0226 depends on NET
0227 help
0228 Saying Y here will allow your computer to be a client for network
0229 block devices, i.e. it will be able to use block devices exported by
0230 servers (mount file systems on them etc.). Communication between
0231 client and server works over TCP/IP networking, but to the client
0232 program this is hidden: it looks like a regular local file access to
0233 a block device special file such as /dev/nd0.
0234
0235 Network block devices also allows you to run a block-device in
0236 userland (making server and client physically the same computer,
0237 communicating using the loopback network device).
0238
0239 Read <file:Documentation/admin-guide/blockdev/nbd.rst> for more information,
0240 especially about where to find the server code, which runs in user
0241 space and does not need special kernel support.
0242
0243 Note that this has nothing to do with the network file systems NFS
0244 or Coda; you can say N here even if you intend to use NFS or Coda.
0245
0246 To compile this driver as a module, choose M here: the
0247 module will be called nbd.
0248
0249 If unsure, say N.
0250
0251 config BLK_DEV_RAM
0252 tristate "RAM block device support"
0253 help
0254 Saying Y here will allow you to use a portion of your RAM memory as
0255 a block device, so that you can make file systems on it, read and
0256 write to it and do all the other things that you can do with normal
0257 block devices (such as hard drives). It is usually used to load and
0258 store a copy of a minimal root file system off of a floppy into RAM
0259 during the initial install of Linux.
0260
0261 Note that the kernel command line option "ramdisk=XX" is now obsolete.
0262 For details, read <file:Documentation/admin-guide/blockdev/ramdisk.rst>.
0263
0264 To compile this driver as a module, choose M here: the
0265 module will be called brd. An alias "rd" has been defined
0266 for historical reasons.
0267
0268 Most normal users won't need the RAM disk functionality, and can
0269 thus say N here.
0270
0271 config BLK_DEV_RAM_COUNT
0272 int "Default number of RAM disks"
0273 default "16"
0274 depends on BLK_DEV_RAM
0275 help
0276 The default value is 16 RAM disks. Change this if you know what you
0277 are doing. If you boot from a filesystem that needs to be extracted
0278 in memory, you will need at least one RAM disk (e.g. root on cramfs).
0279
0280 config BLK_DEV_RAM_SIZE
0281 int "Default RAM disk size (kbytes)"
0282 depends on BLK_DEV_RAM
0283 default "4096"
0284 help
0285 The default value is 4096 kilobytes. Only change this if you know
0286 what you are doing.
0287
0288 config CDROM_PKTCDVD
0289 tristate "Packet writing on CD/DVD media (DEPRECATED)"
0290 depends on !UML
0291 depends on SCSI
0292 select CDROM
0293 help
0294 Note: This driver is deprecated and will be removed from the
0295 kernel in the near future!
0296
0297 If you have a CDROM/DVD drive that supports packet writing, say
0298 Y to include support. It should work with any MMC/Mt Fuji
0299 compliant ATAPI or SCSI drive, which is just about any newer
0300 DVD/CD writer.
0301
0302 Currently only writing to CD-RW, DVD-RW, DVD+RW and DVDRAM discs
0303 is possible.
0304 DVD-RW disks must be in restricted overwrite mode.
0305
0306 See the file <file:Documentation/cdrom/packet-writing.rst>
0307 for further information on the use of this driver.
0308
0309 To compile this driver as a module, choose M here: the
0310 module will be called pktcdvd.
0311
0312 config CDROM_PKTCDVD_BUFFERS
0313 int "Free buffers for data gathering"
0314 depends on CDROM_PKTCDVD
0315 default "8"
0316 help
0317 This controls the maximum number of active concurrent packets. More
0318 concurrent packets can increase write performance, but also require
0319 more memory. Each concurrent packet will require approximately 64Kb
0320 of non-swappable kernel memory, memory which will be allocated when
0321 a disc is opened for writing.
0322
0323 config CDROM_PKTCDVD_WCACHE
0324 bool "Enable write caching"
0325 depends on CDROM_PKTCDVD
0326 help
0327 If enabled, write caching will be set for the CD-R/W device. For now
0328 this option is dangerous unless the CD-RW media is known good, as we
0329 don't do deferred write error handling yet.
0330
0331 config ATA_OVER_ETH
0332 tristate "ATA over Ethernet support"
0333 depends on NET
0334 help
0335 This driver provides Support for ATA over Ethernet block
0336 devices like the Coraid EtherDrive (R) Storage Blade.
0337
0338 config SUNVDC
0339 tristate "Sun Virtual Disk Client support"
0340 depends on SUN_LDOMS
0341 help
0342 Support for virtual disk devices as a client under Sun
0343 Logical Domains.
0344
0345 source "drivers/s390/block/Kconfig"
0346
0347 config XEN_BLKDEV_FRONTEND
0348 tristate "Xen virtual block device support"
0349 depends on XEN
0350 default y
0351 select XEN_XENBUS_FRONTEND
0352 help
0353 This driver implements the front-end of the Xen virtual
0354 block device driver. It communicates with a back-end driver
0355 in another domain which drives the actual block device.
0356
0357 config XEN_BLKDEV_BACKEND
0358 tristate "Xen block-device backend driver"
0359 depends on XEN_BACKEND
0360 help
0361 The block-device backend driver allows the kernel to export its
0362 block devices to other guests via a high-performance shared-memory
0363 interface.
0364
0365 The corresponding Linux frontend driver is enabled by the
0366 CONFIG_XEN_BLKDEV_FRONTEND configuration option.
0367
0368 The backend driver attaches itself to a any block device specified
0369 in the XenBus configuration. There are no limits to what the block
0370 device as long as it has a major and minor.
0371
0372 If you are compiling a kernel to run in a Xen block backend driver
0373 domain (often this is domain 0) you should say Y here. To
0374 compile this driver as a module, chose M here: the module
0375 will be called xen-blkback.
0376
0377
0378 config VIRTIO_BLK
0379 tristate "Virtio block driver"
0380 depends on VIRTIO
0381 select SG_POOL
0382 help
0383 This is the virtual block driver for virtio. It can be used with
0384 QEMU based VMMs (like KVM or Xen). Say Y or M.
0385
0386 config BLK_DEV_RBD
0387 tristate "Rados block device (RBD)"
0388 depends on INET && BLOCK
0389 select CEPH_LIB
0390 select LIBCRC32C
0391 select CRYPTO_AES
0392 select CRYPTO
0393 help
0394 Say Y here if you want include the Rados block device, which stripes
0395 a block device over objects stored in the Ceph distributed object
0396 store.
0397
0398 More information at http://ceph.newdream.net/.
0399
0400 If unsure, say N.
0401
0402 config BLK_DEV_UBLK
0403 tristate "Userspace block driver (Experimental)"
0404 select IO_URING
0405 help
0406 io_uring based userspace block driver. Together with ublk server, ublk
0407 has been working well, but interface with userspace or command data
0408 definition isn't finalized yet, and might change according to future
0409 requirement, so mark is as experimental now.
0410
0411 source "drivers/block/rnbd/Kconfig"
0412
0413 endif # BLK_DEV