|
@@ -27,7 +27,8 @@ static block_dev_desc_t *fs_dev_desc;
|
|
static disk_partition_t fs_partition;
|
|
static disk_partition_t fs_partition;
|
|
static int fs_type = FS_TYPE_ANY;
|
|
static int fs_type = FS_TYPE_ANY;
|
|
|
|
|
|
-static inline int fs_probe_unsupported(void)
|
|
|
|
|
|
+static inline int fs_probe_unsupported(block_dev_desc_t *fs_dev_desc,
|
|
|
|
+ disk_partition_t *fs_partition)
|
|
{
|
|
{
|
|
printf("** Unrecognized filesystem type **\n");
|
|
printf("** Unrecognized filesystem type **\n");
|
|
return -1;
|
|
return -1;
|
|
@@ -49,9 +50,10 @@ static inline void fs_close_unsupported(void)
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_FS_FAT
|
|
#ifdef CONFIG_FS_FAT
|
|
-static int fs_probe_fat(void)
|
|
|
|
|
|
+static int fs_probe_fat(block_dev_desc_t *fs_dev_desc,
|
|
|
|
+ disk_partition_t *fs_partition)
|
|
{
|
|
{
|
|
- return fat_set_blk_dev(fs_dev_desc, &fs_partition);
|
|
|
|
|
|
+ return fat_set_blk_dev(fs_dev_desc, fs_partition);
|
|
}
|
|
}
|
|
|
|
|
|
static void fs_close_fat(void)
|
|
static void fs_close_fat(void)
|
|
@@ -88,11 +90,12 @@ static inline void fs_close_fat(void)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_FS_EXT4
|
|
#ifdef CONFIG_FS_EXT4
|
|
-static int fs_probe_ext(void)
|
|
|
|
|
|
+static int fs_probe_ext(block_dev_desc_t *fs_dev_desc,
|
|
|
|
+ disk_partition_t *fs_partition)
|
|
{
|
|
{
|
|
- ext4fs_set_blk_dev(fs_dev_desc, &fs_partition);
|
|
|
|
|
|
+ ext4fs_set_blk_dev(fs_dev_desc, fs_partition);
|
|
|
|
|
|
- if (!ext4fs_mount(fs_partition.size)) {
|
|
|
|
|
|
+ if (!ext4fs_mount(fs_partition->size)) {
|
|
ext4fs_close();
|
|
ext4fs_close();
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
@@ -153,7 +156,8 @@ static inline void fs_close_ext(void)
|
|
|
|
|
|
struct fstype_info {
|
|
struct fstype_info {
|
|
int fstype;
|
|
int fstype;
|
|
- int (*probe)(void);
|
|
|
|
|
|
+ int (*probe)(block_dev_desc_t *fs_dev_desc,
|
|
|
|
+ disk_partition_t *fs_partition);
|
|
int (*ls)(const char *dirname);
|
|
int (*ls)(const char *dirname);
|
|
int (*read)(const char *filename, ulong addr, int offset, int len);
|
|
int (*read)(const char *filename, ulong addr, int offset, int len);
|
|
void (*close)(void);
|
|
void (*close)(void);
|
|
@@ -230,7 +234,7 @@ int fs_set_blk_dev(const char *ifname, const char *dev_part_str, int fstype)
|
|
fstype != info->fstype)
|
|
fstype != info->fstype)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
- if (!info->probe()) {
|
|
|
|
|
|
+ if (!info->probe(fs_dev_desc, &fs_partition)) {
|
|
fs_type = info->fstype;
|
|
fs_type = info->fstype;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|