@ -79,6 +79,7 @@ static inline int fs_uuid_unsupported(char *uuid_str)
struct fstype_info {
int fstype ;
char * name ;
/*
* Is it legal to pass NULL as . probe ( ) ' s fs_dev_desc parameter ? This
* should be false in most cases . For " virtual " filesystems which
@ -105,6 +106,7 @@ static struct fstype_info fstypes[] = {
# ifdef CONFIG_FS_FAT
{
. fstype = FS_TYPE_FAT ,
. name = " fat " ,
. null_dev_desc_ok = false ,
. probe = fat_set_blk_dev ,
. close = fat_close ,
@ -123,6 +125,7 @@ static struct fstype_info fstypes[] = {
# ifdef CONFIG_FS_EXT4
{
. fstype = FS_TYPE_EXT ,
. name = " ext4 " ,
. null_dev_desc_ok = false ,
. probe = ext4fs_probe ,
. close = ext4fs_close ,
@ -141,6 +144,7 @@ static struct fstype_info fstypes[] = {
# ifdef CONFIG_SANDBOX
{
. fstype = FS_TYPE_SANDBOX ,
. name = " sandbox " ,
. null_dev_desc_ok = true ,
. probe = sandbox_fs_set_blk_dev ,
. close = sandbox_fs_close ,
@ -154,6 +158,7 @@ static struct fstype_info fstypes[] = {
# endif
{
. fstype = FS_TYPE_ANY ,
. name = " unsupported " ,
. null_dev_desc_ok = true ,
. probe = fs_probe_unsupported ,
. close = fs_close_unsupported ,
@ -190,6 +195,7 @@ int fs_set_blk_dev(const char *ifname, const char *dev_part_str, int fstype)
if ( ! relocated ) {
for ( i = 0 , info = fstypes ; i < ARRAY_SIZE ( fstypes ) ;
i + + , info + + ) {
info - > name + = gd - > reloc_off ;
info - > probe + = gd - > reloc_off ;
info - > close + = gd - > reloc_off ;
info - > ls + = gd - > reloc_off ;
@ -503,3 +509,24 @@ int do_fs_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
return CMD_RET_SUCCESS ;
}
int do_fs_type ( cmd_tbl_t * cmdtp , int flag , int argc , char * const argv [ ] )
{
struct fstype_info * info ;
if ( argc < 3 | | argc > 4 )
return CMD_RET_USAGE ;
if ( fs_set_blk_dev ( argv [ 1 ] , argv [ 2 ] , FS_TYPE_ANY ) )
return 1 ;
info = fs_get_info ( fs_type ) ;
if ( argc = = 4 )
setenv ( argv [ 3 ] , info - > name ) ;
else
printf ( " %s \n " , info - > name ) ;
return CMD_RET_SUCCESS ;
}