diff options
Diffstat (limited to 'fs')
| -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;  		} |