init: add support to directly boot to a mapped device

This change adds a dm= kernel parameter modelled after the md= parameter
from do_mounts_md. It allows for simple device-mapper targets to be
configured at boot time for use early in the boot process (as the root
device or otherwise).

The format is as follows:
dm="count name uuid|none ro|rw num-tables, table line 1, table line 2, ..."

It relies on the ability to create a device mapper device programmatically
and bind that device to the ioctl-style name/uuid.

Based on work by Will Drewry and Paul Taysom.

Signed-off-by: Kees Cook <keescook@chromium.org>
---
v6:
- adding missed __init declaration on dm_parse_args, buildbot
v5: resurrection, multidevice support, cleanups, error reporting improvement
v4: https://patchwork.kernel.org/patch/104861/
6 files changed