[U-Boot] [PATCH v2 3/4] ubifs: Add generic fs support

Heiko Schocher hs at denx.de
Tue Aug 25 13:20:50 CEST 2015


Hello Hans,

Am 22.08.2015 um 20:04 schrieb Hans de Goede:
> Add generic fs support, so that commands like ls, load and test -e can be
> used on ubifs.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>   disk/part.c  | 23 +++++++++++++++++++++++
>   fs/fs.c      | 16 ++++++++++++++++
>   include/fs.h |  1 +
>   3 files changed, 40 insertions(+)

Reviewed-by: Heiko Schocher <hs at denx.de>

bye,
Heiko
>
> diff --git a/disk/part.c b/disk/part.c
> index 43485c9..e1a8bde 100644
> --- a/disk/part.c
> +++ b/disk/part.c
> @@ -10,6 +10,7 @@
>   #include <ide.h>
>   #include <malloc.h>
>   #include <part.h>
> +#include <ubifs_uboot.h>
>
>   #undef	PART_DEBUG
>
> @@ -530,6 +531,28 @@ int get_device_and_partition(const char *ifname, const char *dev_part_str,
>   		return 0;
>   	}
>
> +#ifdef CONFIG_CMD_UBIFS
> +	/*
> +	 * Special-case ubi, ubi goes through a mtd, rathen then through
> +	 * a regular block device.
> +	 */
> +	if (0 == strcmp(ifname, "ubi")) {
> +		if (!ubifs_mounted) {
> +			printf("UBIFS not mounted, use ubifsmount to mount volume first!\n");
> +			return -1;
> +		}
> +
> +		*dev_desc = NULL;
> +		memset(info, 0, sizeof(*info));
> +		strcpy((char *)info->type, BOOT_PART_TYPE);
> +		strcpy((char *)info->name, "UBI");
> +#ifdef CONFIG_PARTITION_UUIDS
> +		info->uuid[0] = 0;
> +#endif
> +		return 0;
> +	}
> +#endif
> +
>   	/* If no dev_part_str, use bootdevice environment variable */
>   	if (!dev_part_str || !strlen(dev_part_str) ||
>   	    !strcmp(dev_part_str, "-"))
> diff --git a/fs/fs.c b/fs/fs.c
> index 827b143..b2d6a53 100644
> --- a/fs/fs.c
> +++ b/fs/fs.c
> @@ -23,6 +23,7 @@
>   #include <fat.h>
>   #include <fs.h>
>   #include <sandboxfs.h>
> +#include <ubifs_uboot.h>
>   #include <asm/io.h>
>   #include <div64.h>
>   #include <linux/math64.h>
> @@ -157,6 +158,21 @@ static struct fstype_info fstypes[] = {
>   		.uuid = fs_uuid_unsupported,
>   	},
>   #endif
> +#ifdef CONFIG_CMD_UBIFS
> +	{
> +		.fstype = FS_TYPE_UBIFS,
> +		.name = "ubifs",
> +		.null_dev_desc_ok = true,
> +		.probe = ubifs_set_blk_dev,
> +		.close = ubifs_close,
> +		.ls = ubifs_ls,
> +		.exists = ubifs_exists,
> +		.size = ubifs_size,
> +		.read = ubifs_read,
> +		.write = fs_write_unsupported,
> +		.uuid = fs_uuid_unsupported,
> +	},
> +#endif
>   	{
>   		.fstype = FS_TYPE_ANY,
>   		.name = "unsupported",
> diff --git a/include/fs.h b/include/fs.h
> index fd1e4ab..059a395 100644
> --- a/include/fs.h
> +++ b/include/fs.h
> @@ -22,6 +22,7 @@
>   #define FS_TYPE_FAT	1
>   #define FS_TYPE_EXT	2
>   #define FS_TYPE_SANDBOX	3
> +#define FS_TYPE_UBIFS	4
>
>   /*
>    * Tell the fs layer which block device an partition to use for future
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list