[U-Boot] [PATCH v2 2/8] fs/fat: introduce new director iterators

Rob Clark robdclark at gmail.com
Tue Sep 5 09:54:07 UTC 2017


On Tue, Sep 5, 2017 at 4:56 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Rob,
>
> On 3 September 2017 at 00:37, Rob Clark <robdclark at gmail.com> wrote:
>> Untangle directory traversal into a simple iterator, to replace the
>> existing multi-purpose do_fat_read_at() + get_dentfromdir().
>>
>> Signed-off-by: Rob Clark <robdclark at gmail.com>
>> ---
>>  fs/fat/fat.c | 326 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 326 insertions(+)
>>
>> diff --git a/fs/fat/fat.c b/fs/fat/fat.c
>> index e1c0a15dc7..c72d6ca931 100644
>> --- a/fs/fat/fat.c
>> +++ b/fs/fat/fat.c
>> @@ -1245,6 +1245,332 @@ exit:
>>         return ret;
>>  }
>>
>> +
>> +/*
>> + * Directory iterator, to simplify filesystem traversal
>> + */
>> +
>> +typedef struct {
>
> Please avoid using a typedef here. It seems like it could just be a struct.

I'm typically not a fan of 'typedef struct' but that seems to be the
style that fs/fat code was already using, and "when in Rome..."

> Also pleaee add a comment about what the struct is for
>
>> +       fsdata    *fsdata;
>> +       unsigned   cursect;
>> +       dir_entry *dent;
>> +       int        remaining;     /* remaining dent's in current cluster */
>> +       int        last_cluster;
>> +       int        is_root;
>> +
>> +       /* current iterator position values: */
>> +       char       l_name[VFAT_MAXLEN_BYTES];
>> +       char       s_name[14];
>> +       char      *name;          /* l_name if there is one, else s_name */
>> +
>> +       u8         block[MAX_CLUSTSIZE] __aligned(ARCH_DMA_MINALIGN);
>
> Some members are missing comments.
>
> Also I'm not too sure how the alignment works here. I don't see you
> creating one of these objects in this patch, but could you add a
> comment to the struct about how to create one? Do you use memalign()?

I was just creating them on the stack normally.. expecting the
compiler to dtrt because of the __aligned() on block[].

BR,
-R


More information about the U-Boot mailing list