[U-Boot] [PATCH v2 14/23] fs: fat: remember the starting cluster number of directory
AKASHI Takahiro
takahiro.akashi at linaro.org
Tue Sep 4 07:49:39 UTC 2018
The starting cluster number of directory is needed to initialize ".."
(parent directory) entry when creating a new directory.
Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
---
fs/fat/fat.c | 2 ++
include/fat.h | 1 +
2 files changed, 3 insertions(+)
diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index 50c2d4f3c33d..bbd4b098afb5 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -643,6 +643,7 @@ int fat_itr_root(fat_itr *itr, fsdata *fsdata)
return -ENXIO;
itr->fsdata = fsdata;
+ itr->start_clust = 0;
itr->clust = fsdata->root_cluster;
itr->next_clust = fsdata->root_cluster;
itr->dent = NULL;
@@ -678,6 +679,7 @@ void fat_itr_child(fat_itr *itr, fat_itr *parent)
assert(fat_itr_isdir(parent));
itr->fsdata = parent->fsdata;
+ itr->start_clust = clustnum;
if (clustnum > 0) {
itr->clust = clustnum;
itr->next_clust = clustnum;
diff --git a/include/fat.h b/include/fat.h
index 9b114e3cbda4..05a993bfdcfe 100644
--- a/include/fat.h
+++ b/include/fat.h
@@ -199,6 +199,7 @@ static inline u32 sect_to_clust(fsdata *fsdata, int sect)
typedef struct {
fsdata *fsdata; /* filesystem parameters */
+ unsigned start_clust; /* first cluster */
unsigned clust; /* current cluster */
unsigned next_clust; /* next cluster if remaining == 0 */
int last_cluster; /* set once we've read last cluster */
--
2.18.0
More information about the U-Boot
mailing list