From 89ec3a94c0ed6d05b4f1f5643f5ac474ca8ab401 Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Sun, 11 Jun 2017 16:31:43 +0200 Subject: [PATCH] mufs: embed struct mufs_dtree in struct mufs_dentry and clean up code --- source/fs/mufs/dir.c | 21 ++++++++------------- source/fs/mufs/dir.h | 8 ++++++-- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/source/fs/mufs/dir.c b/source/fs/mufs/dir.c index 7cbdde3..cb35924 100644 --- a/source/fs/mufs/dir.c +++ b/source/fs/mufs/dir.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -216,21 +217,15 @@ static size_t read_dirent(struct mufs *fs, struct mufs_tree *tree, dirent->tree.fs = fs; dirent->tree.va = dirent->tree.va << dev->log2_block_size; /* TODO: get a proper offset to the tree. */ - dirent->tree.va += 1; + dirent->tree.va += offsetof(struct mufs_dentry, tree); dirent->tree.va += base & ((UINT32_C(1) << dev->log2_block_size) - 1); - dirent->tree.file_size = entry.file_size; - dirent->tree.root = entry.root; - dirent->tree.depth = entry.depth; + dirent->tree.file_size = entry.tree.file_size; + dirent->tree.root = entry.tree.root; + dirent->tree.depth = entry.tree.depth; return ret; } -struct mufs_dtree { - uint32_t file_size; - uint32_t root; - uint8_t depth; -} __attribute__((packed)); - static size_t write_dirent(struct mufs_tree *tree, uint32_t va, struct mufs_dirent *dirent) { @@ -238,9 +233,9 @@ static size_t write_dirent(struct mufs_tree *tree, struct mufs_dentry entry; entry.type = dirent->type; - entry.file_size = dirent->tree.file_size; - entry.root = dirent->tree.root; - entry.depth = dirent->tree.depth; + entry.tree.file_size = dirent->tree.file_size; + entry.tree.root = dirent->tree.root; + entry.tree.depth = dirent->tree.depth; entry.path_len = strlen(dirent->path); if (mufs_write(tree, dirent->path, va + sizeof entry, diff --git a/source/fs/mufs/dir.h b/source/fs/mufs/dir.h index 95404f6..363f63d 100644 --- a/source/fs/mufs/dir.h +++ b/source/fs/mufs/dir.h @@ -1,10 +1,14 @@ #pragma once -struct mufs_dentry { - uint8_t type; +struct mufs_dtree { uint32_t file_size; uint32_t root; uint8_t depth; +} __attribute__((packed)); + +struct mufs_dentry { + uint8_t type; + struct mufs_dtree tree; uint16_t path_len; } __attribute__((packed));