mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 06:52:34 -04:00
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>
This commit is contained in:
committed by
Artem Bityutskiy
parent
5547fec74a
commit
9d54c8a33e
@@ -561,6 +561,26 @@ static long vol_cdev_ioctl(struct file *file, unsigned int cmd,
|
||||
break;
|
||||
}
|
||||
|
||||
/* Attach a block device to an UBI volume */
|
||||
case UBI_IOCVOLATTBLK:
|
||||
{
|
||||
struct ubi_volume_info vi;
|
||||
|
||||
ubi_get_volume_info(desc, &vi);
|
||||
err = ubiblock_add(&vi);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Dettach a block device from an UBI volume */
|
||||
case UBI_IOCVOLDETBLK:
|
||||
{
|
||||
struct ubi_volume_info vi;
|
||||
|
||||
ubi_get_volume_info(desc, &vi);
|
||||
err = ubiblock_del(&vi);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
err = -ENOTTY;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user