162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Block device driver configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cimenuconfig BLK_DEV
762306a36Sopenharmony_ci	bool "Block devices"
862306a36Sopenharmony_ci	depends on BLOCK
962306a36Sopenharmony_ci	default y
1062306a36Sopenharmony_ci	help
1162306a36Sopenharmony_ci	  Say Y here to get to see options for various different block device
1262306a36Sopenharmony_ci	  drivers. This option alone does not add any kernel code.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci	  If you say N, all options in this submenu will be skipped and disabled;
1562306a36Sopenharmony_ci	  only do this if you know what you are doing.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciif BLK_DEV
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cisource "drivers/block/null_blk/Kconfig"
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciconfig BLK_DEV_FD
2262306a36Sopenharmony_ci	tristate "Normal floppy disk support"
2362306a36Sopenharmony_ci	depends on ARCH_MAY_HAVE_PC_FDC
2462306a36Sopenharmony_ci	help
2562306a36Sopenharmony_ci	  If you want to use the floppy disk drive(s) of your PC under Linux,
2662306a36Sopenharmony_ci	  say Y. Information about this driver, especially important for IBM
2762306a36Sopenharmony_ci	  Thinkpad users, is contained in
2862306a36Sopenharmony_ci	  <file:Documentation/admin-guide/blockdev/floppy.rst>.
2962306a36Sopenharmony_ci	  That file also contains the location of the Floppy driver FAQ as
3062306a36Sopenharmony_ci	  well as location of the fdutils package used to configure additional
3162306a36Sopenharmony_ci	  parameters of the driver at run time.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the
3462306a36Sopenharmony_ci	  module will be called floppy.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciconfig BLK_DEV_FD_RAWCMD
3762306a36Sopenharmony_ci	bool "Support for raw floppy disk commands (DEPRECATED)"
3862306a36Sopenharmony_ci	depends on BLK_DEV_FD
3962306a36Sopenharmony_ci	help
4062306a36Sopenharmony_ci	  If you want to use actual physical floppies and expect to do
4162306a36Sopenharmony_ci	  special low-level hardware accesses to them (access and use
4262306a36Sopenharmony_ci	  non-standard formats, for example), then enable this.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	  Note that the code enabled by this option is rarely used and
4562306a36Sopenharmony_ci	  might be unstable or insecure, and distros should not enable it.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	  Note: FDRAWCMD is deprecated and will be removed from the kernel
4862306a36Sopenharmony_ci	  in the near future.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	  If unsure, say N.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciconfig AMIGA_FLOPPY
5362306a36Sopenharmony_ci	tristate "Amiga floppy support"
5462306a36Sopenharmony_ci	depends on AMIGA
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ciconfig ATARI_FLOPPY
5762306a36Sopenharmony_ci	tristate "Atari floppy support"
5862306a36Sopenharmony_ci	depends on ATARI
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciconfig MAC_FLOPPY
6162306a36Sopenharmony_ci	tristate "Support for PowerMac floppy"
6262306a36Sopenharmony_ci	depends on PPC_PMAC && !PPC_PMAC64
6362306a36Sopenharmony_ci	help
6462306a36Sopenharmony_ci	  If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple)
6562306a36Sopenharmony_ci	  floppy controller, say Y here. Most commonly found in PowerMacs.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciconfig BLK_DEV_SWIM
6862306a36Sopenharmony_ci	tristate "Support for SWIM Macintosh floppy"
6962306a36Sopenharmony_ci	depends on M68K && MAC && !HIGHMEM
7062306a36Sopenharmony_ci	help
7162306a36Sopenharmony_ci	  You should select this option if you want floppy support
7262306a36Sopenharmony_ci	  and you don't have a II, IIfx, Q900, Q950 or AV series.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciconfig AMIGA_Z2RAM
7562306a36Sopenharmony_ci	tristate "Amiga Zorro II ramdisk support"
7662306a36Sopenharmony_ci	depends on ZORRO
7762306a36Sopenharmony_ci	help
7862306a36Sopenharmony_ci	  This enables support for using Chip RAM and Zorro II RAM as a
7962306a36Sopenharmony_ci	  ramdisk or as a swap partition. Say Y if you want to include this
8062306a36Sopenharmony_ci	  driver in the kernel.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the
8362306a36Sopenharmony_ci	  module will be called z2ram.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciconfig N64CART
8662306a36Sopenharmony_ci	bool "N64 cart support"
8762306a36Sopenharmony_ci	depends on MACH_NINTENDO64
8862306a36Sopenharmony_ci	help
8962306a36Sopenharmony_ci	  Support for the N64 cart.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciconfig CDROM
9262306a36Sopenharmony_ci	tristate
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ciconfig GDROM
9562306a36Sopenharmony_ci	tristate "SEGA Dreamcast GD-ROM drive"
9662306a36Sopenharmony_ci	depends on SH_DREAMCAST
9762306a36Sopenharmony_ci	select CDROM
9862306a36Sopenharmony_ci	help
9962306a36Sopenharmony_ci	  A standard SEGA Dreamcast comes with a modified CD ROM drive called a
10062306a36Sopenharmony_ci	  "GD-ROM" by SEGA to signify it is capable of reading special disks
10162306a36Sopenharmony_ci	  with up to 1 GB of data. This drive will also read standard CD ROM
10262306a36Sopenharmony_ci	  disks. Select this option to access any disks in your GD ROM drive.
10362306a36Sopenharmony_ci	  Most users will want to say "Y" here.
10462306a36Sopenharmony_ci	  You can also build this as a module which will be called gdrom.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_cisource "drivers/block/mtip32xx/Kconfig"
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_cisource "drivers/block/zram/Kconfig"
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ciconfig BLK_DEV_UBD
11162306a36Sopenharmony_ci	bool "Virtual block device"
11262306a36Sopenharmony_ci	depends on UML
11362306a36Sopenharmony_ci	help
11462306a36Sopenharmony_ci          The User-Mode Linux port includes a driver called UBD which will let
11562306a36Sopenharmony_ci          you access arbitrary files on the host computer as block devices.
11662306a36Sopenharmony_ci          Unless you know that you do not need such virtual block devices say
11762306a36Sopenharmony_ci          Y here.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciconfig BLK_DEV_UBD_SYNC
12062306a36Sopenharmony_ci	bool "Always do synchronous disk IO for UBD"
12162306a36Sopenharmony_ci	depends on BLK_DEV_UBD
12262306a36Sopenharmony_ci	help
12362306a36Sopenharmony_ci	  Writes to the virtual block device are not immediately written to the
12462306a36Sopenharmony_ci	  host's disk; this may cause problems if, for example, the User-Mode
12562306a36Sopenharmony_ci	  Linux 'Virtual Machine' uses a journalling filesystem and the host
12662306a36Sopenharmony_ci	  computer crashes.
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci          Synchronous operation (i.e. always writing data to the host's disk
12962306a36Sopenharmony_ci          immediately) is configurable on a per-UBD basis by using a special
13062306a36Sopenharmony_ci          kernel command line option.  Alternatively, you can say Y here to
13162306a36Sopenharmony_ci          turn on synchronous operation by default for all block devices.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci          If you're running a journalling file system (like reiserfs, for
13462306a36Sopenharmony_ci          example) in your virtual machine, you will want to say Y here.  If
13562306a36Sopenharmony_ci          you care for the safety of the data in your virtual machine, Y is a
13662306a36Sopenharmony_ci          wise choice too.  In all other cases (for example, if you're just
13762306a36Sopenharmony_ci          playing around with User-Mode Linux) you can choose N.
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ciconfig BLK_DEV_COW_COMMON
14062306a36Sopenharmony_ci	bool
14162306a36Sopenharmony_ci	default BLK_DEV_UBD
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ciconfig BLK_DEV_LOOP
14462306a36Sopenharmony_ci	tristate "Loopback device support"
14562306a36Sopenharmony_ci	help
14662306a36Sopenharmony_ci	  Saying Y here will allow you to use a regular file as a block
14762306a36Sopenharmony_ci	  device; you can then create a file system on that block device and
14862306a36Sopenharmony_ci	  mount it just as you would mount other block devices such as hard
14962306a36Sopenharmony_ci	  drive partitions, CD-ROM drives or floppy drives. The loop devices
15062306a36Sopenharmony_ci	  are block special device files with major number 7 and typically
15162306a36Sopenharmony_ci	  called /dev/loop0, /dev/loop1 etc.
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci	  This is useful if you want to check an ISO 9660 file system before
15462306a36Sopenharmony_ci	  burning the CD, or if you want to use floppy images without first
15562306a36Sopenharmony_ci	  writing them to floppy. Furthermore, some Linux distributions avoid
15662306a36Sopenharmony_ci	  the need for a dedicated Linux partition by keeping their complete
15762306a36Sopenharmony_ci	  root file system inside a DOS FAT file using this loop device
15862306a36Sopenharmony_ci	  driver.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci	  To use the loop device, you need the losetup utility, found in the
16162306a36Sopenharmony_ci	  util-linux package, see
16262306a36Sopenharmony_ci	  <https://www.kernel.org/pub/linux/utils/util-linux/>.
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ci	  The loop device driver can also be used to "hide" a file system in
16562306a36Sopenharmony_ci	  a disk partition, floppy, or regular file, either using encryption
16662306a36Sopenharmony_ci	  (scrambling the data) or steganography (hiding the data in the low
16762306a36Sopenharmony_ci	  bits of, say, a sound file). This is also safe if the file resides
16862306a36Sopenharmony_ci	  on a remote file server.
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	  Note that this loop device has nothing to do with the loopback
17162306a36Sopenharmony_ci	  device used for network connections from the machine to itself.
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the
17462306a36Sopenharmony_ci	  module will be called loop.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci	  Most users will answer N here.
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ciconfig BLK_DEV_LOOP_MIN_COUNT
17962306a36Sopenharmony_ci	int "Number of loop devices to pre-create at init time"
18062306a36Sopenharmony_ci	depends on BLK_DEV_LOOP
18162306a36Sopenharmony_ci	default 8
18262306a36Sopenharmony_ci	help
18362306a36Sopenharmony_ci	  Static number of loop devices to be unconditionally pre-created
18462306a36Sopenharmony_ci	  at init time.
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci	  This default value can be overwritten on the kernel command
18762306a36Sopenharmony_ci	  line or with module-parameter loop.max_loop.
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci	  The historic default is 8. If a late 2011 version of losetup(8)
19062306a36Sopenharmony_ci	  is used, it can be set to 0, since needed loop devices can be
19162306a36Sopenharmony_ci	  dynamically allocated with the /dev/loop-control interface.
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_cisource "drivers/block/drbd/Kconfig"
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ciconfig BLK_DEV_NBD
19662306a36Sopenharmony_ci	tristate "Network block device support"
19762306a36Sopenharmony_ci	depends on NET
19862306a36Sopenharmony_ci	help
19962306a36Sopenharmony_ci	  Saying Y here will allow your computer to be a client for network
20062306a36Sopenharmony_ci	  block devices, i.e. it will be able to use block devices exported by
20162306a36Sopenharmony_ci	  servers (mount file systems on them etc.). Communication between
20262306a36Sopenharmony_ci	  client and server works over TCP/IP networking, but to the client
20362306a36Sopenharmony_ci	  program this is hidden: it looks like a regular local file access to
20462306a36Sopenharmony_ci	  a block device special file such as /dev/nd0.
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci	  Network block devices also allows you to run a block-device in
20762306a36Sopenharmony_ci	  userland (making server and client physically the same computer,
20862306a36Sopenharmony_ci	  communicating using the loopback network device).
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	  Read <file:Documentation/admin-guide/blockdev/nbd.rst> for more information,
21162306a36Sopenharmony_ci	  especially about where to find the server code, which runs in user
21262306a36Sopenharmony_ci	  space and does not need special kernel support.
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci	  Note that this has nothing to do with the network file systems NFS
21562306a36Sopenharmony_ci	  or Coda; you can say N here even if you intend to use NFS or Coda.
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the
21862306a36Sopenharmony_ci	  module will be called nbd.
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci	  If unsure, say N.
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ciconfig BLK_DEV_RAM
22362306a36Sopenharmony_ci	tristate "RAM block device support"
22462306a36Sopenharmony_ci	help
22562306a36Sopenharmony_ci	  Saying Y here will allow you to use a portion of your RAM memory as
22662306a36Sopenharmony_ci	  a block device, so that you can make file systems on it, read and
22762306a36Sopenharmony_ci	  write to it and do all the other things that you can do with normal
22862306a36Sopenharmony_ci	  block devices (such as hard drives). It is usually used to load and
22962306a36Sopenharmony_ci	  store a copy of a minimal root file system off of a floppy into RAM
23062306a36Sopenharmony_ci	  during the initial install of Linux.
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci	  Note that the kernel command line option "ramdisk=XX" is now obsolete.
23362306a36Sopenharmony_ci	  For details, read <file:Documentation/admin-guide/blockdev/ramdisk.rst>.
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the
23662306a36Sopenharmony_ci	  module will be called brd. An alias "rd" has been defined
23762306a36Sopenharmony_ci	  for historical reasons.
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci	  Most normal users won't need the RAM disk functionality, and can
24062306a36Sopenharmony_ci	  thus say N here.
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ciconfig BLK_DEV_RAM_COUNT
24362306a36Sopenharmony_ci	int "Default number of RAM disks"
24462306a36Sopenharmony_ci	default "16"
24562306a36Sopenharmony_ci	depends on BLK_DEV_RAM
24662306a36Sopenharmony_ci	help
24762306a36Sopenharmony_ci	  The default value is 16 RAM disks. Change this if you know what you
24862306a36Sopenharmony_ci	  are doing. If you boot from a filesystem that needs to be extracted
24962306a36Sopenharmony_ci	  in memory, you will need at least one RAM disk (e.g. root on cramfs).
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ciconfig BLK_DEV_RAM_SIZE
25262306a36Sopenharmony_ci	int "Default RAM disk size (kbytes)"
25362306a36Sopenharmony_ci	depends on BLK_DEV_RAM
25462306a36Sopenharmony_ci	default "4096"
25562306a36Sopenharmony_ci	help
25662306a36Sopenharmony_ci	  The default value is 4096 kilobytes. Only change this if you know
25762306a36Sopenharmony_ci	  what you are doing.
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ciconfig CDROM_PKTCDVD
26062306a36Sopenharmony_ci	tristate "Packet writing on CD/DVD media (DEPRECATED)"
26162306a36Sopenharmony_ci	depends on !UML
26262306a36Sopenharmony_ci	depends on SCSI
26362306a36Sopenharmony_ci	select CDROM
26462306a36Sopenharmony_ci	help
26562306a36Sopenharmony_ci	  Note: This driver is deprecated and will be removed from the
26662306a36Sopenharmony_ci	  kernel in the near future!
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	  If you have a CDROM/DVD drive that supports packet writing, say
26962306a36Sopenharmony_ci	  Y to include support. It should work with any MMC/Mt Fuji
27062306a36Sopenharmony_ci	  compliant ATAPI or SCSI drive, which is just about any newer
27162306a36Sopenharmony_ci	  DVD/CD writer.
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci	  Currently only writing to CD-RW, DVD-RW, DVD+RW and DVDRAM discs
27462306a36Sopenharmony_ci	  is possible.
27562306a36Sopenharmony_ci	  DVD-RW disks must be in restricted overwrite mode.
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci	  See the file <file:Documentation/cdrom/packet-writing.rst>
27862306a36Sopenharmony_ci	  for further information on the use of this driver.
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the
28162306a36Sopenharmony_ci	  module will be called pktcdvd.
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ciconfig CDROM_PKTCDVD_BUFFERS
28462306a36Sopenharmony_ci	int "Free buffers for data gathering"
28562306a36Sopenharmony_ci	depends on CDROM_PKTCDVD
28662306a36Sopenharmony_ci	default "8"
28762306a36Sopenharmony_ci	help
28862306a36Sopenharmony_ci	  This controls the maximum number of active concurrent packets. More
28962306a36Sopenharmony_ci	  concurrent packets can increase write performance, but also require
29062306a36Sopenharmony_ci	  more memory. Each concurrent packet will require approximately 64Kb
29162306a36Sopenharmony_ci	  of non-swappable kernel memory, memory which will be allocated when
29262306a36Sopenharmony_ci	  a disc is opened for writing.
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciconfig CDROM_PKTCDVD_WCACHE
29562306a36Sopenharmony_ci	bool "Enable write caching"
29662306a36Sopenharmony_ci	depends on CDROM_PKTCDVD
29762306a36Sopenharmony_ci	help
29862306a36Sopenharmony_ci	  If enabled, write caching will be set for the CD-R/W device. For now
29962306a36Sopenharmony_ci	  this option is dangerous unless the CD-RW media is known good, as we
30062306a36Sopenharmony_ci	  don't do deferred write error handling yet.
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ciconfig ATA_OVER_ETH
30362306a36Sopenharmony_ci	tristate "ATA over Ethernet support"
30462306a36Sopenharmony_ci	depends on NET
30562306a36Sopenharmony_ci	help
30662306a36Sopenharmony_ci	This driver provides Support for ATA over Ethernet block
30762306a36Sopenharmony_ci	devices like the Coraid EtherDrive (R) Storage Blade.
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ciconfig SUNVDC
31062306a36Sopenharmony_ci	tristate "Sun Virtual Disk Client support"
31162306a36Sopenharmony_ci	depends on SUN_LDOMS
31262306a36Sopenharmony_ci	help
31362306a36Sopenharmony_ci	  Support for virtual disk devices as a client under Sun
31462306a36Sopenharmony_ci	  Logical Domains.
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_cisource "drivers/s390/block/Kconfig"
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ciconfig XEN_BLKDEV_FRONTEND
31962306a36Sopenharmony_ci	tristate "Xen virtual block device support"
32062306a36Sopenharmony_ci	depends on XEN
32162306a36Sopenharmony_ci	default y
32262306a36Sopenharmony_ci	select XEN_XENBUS_FRONTEND
32362306a36Sopenharmony_ci	help
32462306a36Sopenharmony_ci	  This driver implements the front-end of the Xen virtual
32562306a36Sopenharmony_ci	  block device driver.  It communicates with a back-end driver
32662306a36Sopenharmony_ci	  in another domain which drives the actual block device.
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ciconfig XEN_BLKDEV_BACKEND
32962306a36Sopenharmony_ci	tristate "Xen block-device backend driver"
33062306a36Sopenharmony_ci	depends on XEN_BACKEND
33162306a36Sopenharmony_ci	help
33262306a36Sopenharmony_ci	  The block-device backend driver allows the kernel to export its
33362306a36Sopenharmony_ci	  block devices to other guests via a high-performance shared-memory
33462306a36Sopenharmony_ci	  interface.
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ci	  The corresponding Linux frontend driver is enabled by the
33762306a36Sopenharmony_ci	  CONFIG_XEN_BLKDEV_FRONTEND configuration option.
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci	  The backend driver attaches itself to a any block device specified
34062306a36Sopenharmony_ci	  in the XenBus configuration. There are no limits to what the block
34162306a36Sopenharmony_ci	  device as long as it has a major and minor.
34262306a36Sopenharmony_ci
34362306a36Sopenharmony_ci	  If you are compiling a kernel to run in a Xen block backend driver
34462306a36Sopenharmony_ci	  domain (often this is domain 0) you should say Y here. To
34562306a36Sopenharmony_ci	  compile this driver as a module, chose M here: the module
34662306a36Sopenharmony_ci	  will be called xen-blkback.
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ciconfig VIRTIO_BLK
35062306a36Sopenharmony_ci	tristate "Virtio block driver"
35162306a36Sopenharmony_ci	depends on VIRTIO
35262306a36Sopenharmony_ci	select SG_POOL
35362306a36Sopenharmony_ci	help
35462306a36Sopenharmony_ci	  This is the virtual block driver for virtio.  It can be used with
35562306a36Sopenharmony_ci          QEMU based VMMs (like KVM or Xen).  Say Y or M.
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ciconfig BLK_DEV_RBD
35862306a36Sopenharmony_ci	tristate "Rados block device (RBD)"
35962306a36Sopenharmony_ci	depends on INET && BLOCK
36062306a36Sopenharmony_ci	select CEPH_LIB
36162306a36Sopenharmony_ci	select LIBCRC32C
36262306a36Sopenharmony_ci	select CRYPTO_AES
36362306a36Sopenharmony_ci	select CRYPTO
36462306a36Sopenharmony_ci	help
36562306a36Sopenharmony_ci	  Say Y here if you want include the Rados block device, which stripes
36662306a36Sopenharmony_ci	  a block device over objects stored in the Ceph distributed object
36762306a36Sopenharmony_ci	  store.
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_ci	  More information at http://ceph.newdream.net/.
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci	  If unsure, say N.
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ciconfig BLK_DEV_UBLK
37462306a36Sopenharmony_ci	tristate "Userspace block driver (Experimental)"
37562306a36Sopenharmony_ci	select IO_URING
37662306a36Sopenharmony_ci	help
37762306a36Sopenharmony_ci	  io_uring based userspace block driver. Together with ublk server, ublk
37862306a36Sopenharmony_ci	  has been working well, but interface with userspace or command data
37962306a36Sopenharmony_ci	  definition isn't finalized yet, and might change according to future
38062306a36Sopenharmony_ci	  requirement, so mark is as experimental now.
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci	  Say Y if you want to get better performance because task_work_add()
38362306a36Sopenharmony_ci	  can be used in IO path for replacing io_uring cmd, which will become
38462306a36Sopenharmony_ci	  shared between IO tasks and ubq daemon, meantime task_work_add() can
38562306a36Sopenharmony_ci	  can handle batch more effectively, but task_work_add() isn't exported
38662306a36Sopenharmony_ci	  for module, so ublk has to be built to kernel.
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ciconfig BLKDEV_UBLK_LEGACY_OPCODES
38962306a36Sopenharmony_ci	bool "Support legacy command opcode"
39062306a36Sopenharmony_ci	depends on BLK_DEV_UBLK
39162306a36Sopenharmony_ci	default y
39262306a36Sopenharmony_ci	help
39362306a36Sopenharmony_ci	  ublk driver started to take plain command encoding, which turns out
39462306a36Sopenharmony_ci	  one bad way. The traditional ioctl command opcode encodes more
39562306a36Sopenharmony_ci	  info and basically defines each code uniquely, so opcode conflict
39662306a36Sopenharmony_ci	  is avoided, and driver can handle wrong command easily, meantime it
39762306a36Sopenharmony_ci	  may help security subsystem to audit io_uring command.
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ci	  Say Y if your application still uses legacy command opcode.
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ci	  Say N if you don't want to support legacy command opcode. It is
40262306a36Sopenharmony_ci	  suggested to enable N if your application(ublk server) switches to
40362306a36Sopenharmony_ci	  ioctl command encoding.
40462306a36Sopenharmony_ci
40562306a36Sopenharmony_cisource "drivers/block/rnbd/Kconfig"
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ciendif # BLK_DEV
408