[PATCH] UBI: block: Configurable device major number

Daniel Ehrenberg dehrenberg at google.com
Thu Jan 15 10:52:10 PST 2015


Hi,

Please ignore this patch. I've found a better way to achieve the same
thing--modify dm to accept paths like /dev/ubiblock3_0 (parsed the
same as root=) as arguments for the target, rather than only paths in
the filesystem and major:minor pairs.

Thanks,
Dan

On Wed, Jan 14, 2015 at 12:40 PM, Dan Ehrenberg <dehrenberg at chromium.org> wrote:
> By default UBI block devices use a dynamic major number. This
> config option can replace that with a static major number. Set
> to the new major number, or 0 for dynamic. This is useful if
> you want to use an ubiblock as the root filesystem in an
> indirect way, e.g., though DM and need to refer to it before
> userspace is up.
>
> Signed-off-by: Dan Ehrenberg <dehrenberg at chromium.org>
> ---
>  drivers/mtd/ubi/Kconfig | 13 +++++++++++++
>  drivers/mtd/ubi/block.c |  7 ++++++-
>  2 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/ubi/Kconfig b/drivers/mtd/ubi/Kconfig
> index f0855ce..5ac8d63 100644
> --- a/drivers/mtd/ubi/Kconfig
> +++ b/drivers/mtd/ubi/Kconfig
> @@ -103,4 +103,17 @@ config MTD_UBI_BLOCK
>
>            If in doubt, say "N".
>
> +config MTD_UBI_BLOCK_MAJOR
> +       int "Major device number for UBI block devices"
> +       default 0
> +       range 0 256
> +       depends on MTD_UBI_BLOCK
> +       help
> +          By default UBI block devices use a dynamic major number. This
> +          config option can replace that with a static major number. Set
> +          to the new major number, or 0 for dynamic. This is useful if
> +          you want to use an ubiblock as the root filesystem in an
> +          indirect way, e.g., though DM and need to refer to it before
> +          userspace is up.
> +
>  endif # MTD_UBI
> diff --git a/drivers/mtd/ubi/block.c b/drivers/mtd/ubi/block.c
> index 6b6bce2..6c8333d 100644
> --- a/drivers/mtd/ubi/block.c
> +++ b/drivers/mtd/ubi/block.c
> @@ -635,9 +635,14 @@ int __init ubiblock_init(void)
>  {
>         int ret;
>
> -       ubiblock_major = register_blkdev(0, "ubiblock");
> +       ubiblock_major = register_blkdev(CONFIG_MTD_UBI_BLOCK_MAJOR,
> +                                        "ubiblock");
>         if (ubiblock_major < 0)
>                 return ubiblock_major;
> +       if (CONFIG_MTD_UBI_BLOCK_MAJOR) {
> +               BUG_ON(ubiblock_major);
> +               ubiblock_major = CONFIG_MTD_UBI_BLOCK_MAJOR;
> +       }
>
>         /* Attach block devices from 'block=' module param */
>         ret = ubiblock_create_from_param();
> --
> 2.2.0.rc0.207.ga3a616c
>



More information about the linux-mtd mailing list