From: Heinrich Schuchardt Date: Sun, 22 Nov 2020 15:04:47 +0000 (+0100) Subject: fs: fat: set start cluster for root directory X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=7557c8485517aa9d2602abb0010c10ab64feee72;p=u-boot.git fs: fat: set start cluster for root directory When iterating over a child directory we set itr->start_clust. Do the same when over the root directory. When looking for deleted directory entries or existing short names we will have to iterate over directories a second and third time. With this patch we do not need any special logic for the root directory. Signed-off-by: Heinrich Schuchardt --- diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 674236d68a..5a418cfbb7 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -734,7 +734,7 @@ static int fat_itr_root(fat_itr *itr, fsdata *fsdata) return -ENXIO; itr->fsdata = fsdata; - itr->start_clust = 0; + itr->start_clust = fsdata->root_cluster; itr->clust = fsdata->root_cluster; itr->next_clust = fsdata->root_cluster; itr->dent = NULL; @@ -778,6 +778,7 @@ static void fat_itr_child(fat_itr *itr, fat_itr *parent) } else { itr->clust = parent->fsdata->root_cluster; itr->next_clust = parent->fsdata->root_cluster; + itr->start_clust = parent->fsdata->root_cluster; itr->is_root = 1; } itr->dent = NULL; @@ -1067,6 +1068,7 @@ static int fat_itr_resolve(fat_itr *itr, const char *path, unsigned type) /* point back to itself */ itr->clust = itr->fsdata->root_cluster; itr->next_clust = itr->fsdata->root_cluster; + itr->start_clust = itr->fsdata->root_cluster; itr->dent = NULL; itr->remaining = 0; itr->last_cluster = 0;