|
|
|
@ -1,3 +1,4 @@ |
|
|
|
|
#include <stddef.h> |
|
|
|
|
#include <stdint.h> |
|
|
|
|
#include <stdio.h> |
|
|
|
|
#include <stdlib.h> |
|
|
|
@ -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, |
|
|
|
|