[U-Boot] [PATCH] fs/ext4: caculate log2blksz from blksz, other its value = 0

Dennis Lan (dlan) dennis.yxun at gmail.com
Fri Jun 28 03:47:07 CEST 2013


Hi Albert, Eich

On Thu, Jun 27, 2013 at 6:17 PM, Albert ARIBAUD
<albert.u.boot at aribaud.net> wrote:
> Hi Lan,
>
> On Thu, 27 Jun 2013 17:42:31 +0800, "Lan Yixun (dlan)"
> <dennis.yxun at gmail.com> wrote:
>
>> From: "Lan Yixun (dlan)" <dennis.yxun at gmail.com>
>>
>> err:
>> lt703a # ext4ls nand 3:0
>> Failed to mount ext2 filesystem...
>> ** Unrecognized filesystem type **
>>
>> bug may introduced by commit:
>>
>> commit 50ce4c07df1c98aabf4630b35152ed95a87242f7
>> Author: Egbert Eich <eich at suse.com>
>> Date:   Wed May 1 01:13:19 2013 +0000
>>
>>     fs/ext4: Support device block sizes != 512 bytes
>
> Please make the commit summary a description of what is wrong and how
> it is fixed, and move the context (how the bug was found, console
> output, etc) after the commit message separator '---' below.
>
> Also, fix probably typo in the commit summary (first commit message
> line) ("other" for "otherwise").
>
Thanks for your comments
I'm sending this patch mainly for pre-review, Eich, Can you have a look?
Since you are original patch author.

The problem here is that uboot can't mount ext4 filesystem with
commit "50ce4c07df1" applied. As I looking into the code,
 we use hard-coded "SECTOR_SIZE"(512) previously,
 but now we introduce (block_dev_desc_t *)->log2blksz,
and problem here is that I couldn't find where/when this value been set.
And after calling do_ls()->fs_set_blk_dev(), the value of log2blksz
we got is still 0 (initialized value), which I think it's not correct.
As I haven't dig too much into the code, and just cook this as a quick fix..

I'm trying to solve this by calculating log2blksz from blksz.



>> Signed-off-by: Lan Yixun (dlan) <dennis.yxun at gmail.com>
>> ---
>>  disk/part.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/disk/part.c b/disk/part.c
>> index fc8404d..dbc94c4 100644
>> --- a/disk/part.c
>> +++ b/disk/part.c
>> @@ -551,6 +551,8 @@ int get_device_and_partition(const char *ifname, const char *dev_part_str,
>>                       goto cleanup;
>>               }
>>
>> +             (*dev_desc)->log2blksz = LOG2((*dev_desc)->blksz);
>> +
>>               info->start = 0;
>>               info->size = (*dev_desc)->lba;
>>               info->blksz = (*dev_desc)->blksz;
>> @@ -634,6 +636,8 @@ int get_device_and_partition(const char *ifname, const char *dev_part_str,
>>               goto cleanup;
>>       }
>>
>> +     (*dev_desc)->log2blksz = LOG2((*dev_desc)->blksz);
>> +
>>       ret = part;
>>       goto cleanup;
>>
>
>
> Amicalement,
> --
> Albert.


More information about the U-Boot mailing list