ubifs: Add generic fs support

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@redhat.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
Hans de Goede 2015-09-17 18:46:58 -04:00 committed by Tom Rini
parent 29cc5bcadf
commit 251cee0db2
3 changed files with 44 additions and 0 deletions

View File

@ -10,6 +10,7 @@
#include <ide.h>
#include <malloc.h>
#include <part.h>
#include <ubifs_uboot.h>
#undef PART_DEBUG
@ -511,6 +512,10 @@ int get_device_and_partition(const char *ifname, const char *dev_part_str,
int part;
disk_partition_t tmpinfo;
#if defined CONFIG_SANDBOX && defined CONFIG_CMD_UBIFS
#error Only one of CONFIG_SANDBOX and CONFIG_CMD_UBIFS may be selected
#endif
#ifdef CONFIG_SANDBOX
/*
* Special-case a pseudo block device "hostfs", to allow access to the
@ -532,6 +537,28 @@ int get_device_and_partition(const char *ifname, const char *dev_part_str,
}
#endif
#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_is_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, "-"))

16
fs/fs.c
View File

@ -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>
@ -156,6 +157,21 @@ static struct fstype_info fstypes[] = {
.write = fs_write_sandbox,
.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,

View File

@ -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