summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/fs.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/fs/fs.c b/fs/fs.c
index 856d8ba..3561727 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -27,7 +27,8 @@ static block_dev_desc_t *fs_dev_desc;
static disk_partition_t fs_partition;
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");
return -1;
@@ -49,9 +50,10 @@ static inline void fs_close_unsupported(void)
}
#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)
@@ -88,11 +90,12 @@ static inline void fs_close_fat(void)
#endif
#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();
return -1;
}
@@ -153,7 +156,8 @@ static inline void fs_close_ext(void)
struct fstype_info {
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 (*read)(const char *filename, ulong addr, int offset, int len);
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)
continue;
- if (!info->probe()) {
+ if (!info->probe(fs_dev_desc, &fs_partition)) {
fs_type = info->fstype;
return 0;
}