diff options
-rw-r--r-- | fs/fs.c | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -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; } |