UBI: R/O block driver on top of UBI volumes
authorEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Tue, 25 Feb 2014 16:25:22 +0000 (13:25 -0300)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Fri, 28 Feb 2014 14:29:48 +0000 (16:29 +0200)
commit9d54c8a33eec78289b1b3f6e10874719c27ce0a7
treeba34d64d9dcc1b923f0556da5678ab854b4c529d
parent5547fec74a566e1f5e00a937b9a367f7c6a94a8b
UBI: R/O block driver on top of UBI volumes

This commit introduces read-only block device emulation on top of UBI volumes.

Given UBI takes care of wear leveling and bad block management it's possible
to add a thin layer to enable block device access to UBI volumes.
This allows to use a block-oriented filesystem on a flash device.

The UBI block devices are meant to be used in conjunction with any
regular, block-oriented file system (e.g. ext4), although it's primarily
targeted at read-only file systems, such as squashfs.

Block devices are created upon user request through new ioctls:
UBI_IOCVOLATTBLK to attach and UBI_IOCVOLDETBLK to detach.
Also, a new UBI module parameter is added 'ubi.block'. This parameter is
needed in order to attach a block device on boot-up time, allowing to
mount the rootfs on a ubiblock device.
For instance, you could have these kernel parameters:

  ubi.mtd=5 ubi.block=0,0 root=/dev/ubiblock0_0

Or, if you compile ubi as a module:

  $ modprobe ubi mtd=/dev/mtd5 block=/dev/ubi0_0

Artem: amend commentaries and massage the patch a little bit.

Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
drivers/mtd/ubi/Kconfig
drivers/mtd/ubi/Makefile
drivers/mtd/ubi/block.c [new file with mode: 0644]
drivers/mtd/ubi/build.c
drivers/mtd/ubi/cdev.c
drivers/mtd/ubi/ubi.h
include/uapi/mtd/ubi-user.h