From 96cca2f5b6d9b269c936fc3f8c9b02eb6761a300 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sat, 10 Mar 2018 21:28:06 -0600 Subject: [PATCH] WIP Moved entry tag updates out --- lfs.c | 63 ++++++++++++++++++++++++----------------------------------- 1 file changed, 26 insertions(+), 37 deletions(-) diff --git a/lfs.c b/lfs.c index 5eb03b9..561d163 100644 --- a/lfs.c +++ b/lfs.c @@ -339,10 +339,11 @@ static void lfs_entry_fromle32(struct lfs_disk_entry *d) { d->u.dir[1] = lfs_fromle32(d->u.dir[1]); } -static void lfs_entry_tole32(struct lfs_disk_entry *d) { - d->u.dir[0] = lfs_tole32(d->u.dir[0]); - d->u.dir[1] = lfs_tole32(d->u.dir[1]); -} +// TODO +//static void lfs_entry_tole32(struct lfs_disk_entry *d) { +// d->u.dir[0] = lfs_tole32(d->u.dir[0]); +// d->u.dir[1] = lfs_tole32(d->u.dir[1]); +//} static void lfs_superblock_fromle32(struct lfs_disk_superblock *d) { d->root[0] = lfs_fromle32(d->root[0]); @@ -660,13 +661,7 @@ static int lfs_dir_append(lfs_t *lfs, lfs_dir_t *dir, r->off += entry->off; } - lfs_entry_tole32(&entry->d); - int err = lfs_dir_commit(lfs, dir, - &(struct lfs_region){ - LFS_FROM_MEM, entry->off, +4, - {.m.data = &entry->d}, 4, regions}); - lfs_entry_fromle32(&entry->d); - return err; + return lfs_dir_commit(lfs, dir, regions); } // we need to allocate a new dir block @@ -684,12 +679,7 @@ static int lfs_dir_append(lfs_t *lfs, lfs_dir_t *dir, r->off += entry->off; } - lfs_entry_tole32(&entry->d); - err = lfs_dir_commit(lfs, dir, - &(struct lfs_region){ - LFS_FROM_MEM, entry->off, +4, - {.m.data = &entry->d}, 4, regions}); - lfs_entry_fromle32(&entry->d); + err = lfs_dir_commit(lfs, dir, regions); if (err) { return err; } @@ -725,12 +715,7 @@ static int lfs_dir_update(lfs_t *lfs, lfs_dir_t *dir, r->off += entry->off; } - lfs_entry_tole32(&entry->d); - int err = lfs_dir_commit(lfs, dir, - &(struct lfs_region){ - LFS_FROM_MEM, entry->off, 0, - {.m.data = &entry->d}, sizeof(entry->d), regions}); - lfs_entry_fromle32(&entry->d); + int err = lfs_dir_commit(lfs, dir, regions); if (err) { return err; } @@ -1041,8 +1026,8 @@ int lfs_mkdir(lfs_t *lfs, const char *path) { err = lfs_dir_append(lfs, &cwd, &entry, &(struct lfs_region){ - LFS_FROM_MEM, 0, +(sizeof(entry.d)-4), - {.m.data = (uint8_t*)&entry.d+4}, sizeof(entry.d)-4, + LFS_FROM_MEM, 0, +sizeof(entry.d), + {.m.data = &entry.d}, sizeof(entry.d), &(struct lfs_region){ LFS_FROM_MEM, 0, +entry.d.nlen, {.m.data = path}, entry.d.nlen}}); @@ -1431,8 +1416,8 @@ int lfs_file_open(lfs_t *lfs, lfs_file_t *file, entry.d.u.file.size = 0; err = lfs_dir_append(lfs, &cwd, &entry, &(struct lfs_region){ - LFS_FROM_MEM, 0, +(sizeof(entry.d)-4), - {.m.data = (uint8_t*)&entry.d+4}, sizeof(entry.d)-4, + LFS_FROM_MEM, 0, +sizeof(entry.d), + {.m.data = &entry.d}, sizeof(entry.d), &(struct lfs_region){ LFS_FROM_MEM, 0, +entry.d.nlen, {.m.data = path}, entry.d.nlen}}); @@ -1654,7 +1639,7 @@ int lfs_file_sync(lfs_t *lfs, lfs_file_t *file) { err = lfs_dir_update(lfs, &cwd, &entry, &(struct lfs_region){ LFS_FROM_MEM, 0, 0, - {.m.data = (const uint8_t *)&entry.d+4}, sizeof(entry.d)-4}); + {.m.data = &entry.d}, sizeof(entry.d)}); if (err) { return err; } @@ -2076,7 +2061,10 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) { // mark as moving oldentry.d.type |= LFS_STRUCT_MOVED; - err = lfs_dir_update(lfs, &oldcwd, &oldentry, NULL); + err = lfs_dir_update(lfs, &oldcwd, &oldentry, + &(struct lfs_region){ + LFS_FROM_MEM, 0, 0, + {.m.data = &oldentry.d}, sizeof(oldentry.d)}); if (err) { return err; } @@ -2096,10 +2084,9 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) { err = lfs_dir_update(lfs, &newcwd, &newentry, &(struct lfs_region){ LFS_FROM_MEM, 0, 0, - {.m.data = (const uint8_t*)&newentry.d+4}, - sizeof(newentry.d)-4, + {.m.data = &newentry.d}, sizeof(newentry.d), &(struct lfs_region){ - LFS_FROM_MEM, sizeof(newentry.d)-4, 0, + LFS_FROM_MEM, sizeof(newentry.d), 0, {.m.data = newpath}, newentry.d.nlen}}); if (err) { return err; @@ -2107,9 +2094,8 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) { } else { err = lfs_dir_append(lfs, &newcwd, &newentry, &(struct lfs_region){ - LFS_FROM_MEM, 0, +(sizeof(newentry.d)-4), - {.m.data = (const uint8_t*)&newentry.d+4}, - sizeof(newentry.d)-4, + LFS_FROM_MEM, 0, +sizeof(newentry.d), + {.m.data = &newentry.d}, sizeof(newentry.d), &(struct lfs_region){ LFS_FROM_MEM, 0, +newentry.d.nlen, {.m.data = newpath}, newentry.d.nlen}}); @@ -2547,7 +2533,7 @@ static int lfs_relocate(lfs_t *lfs, int err = lfs_dir_update(lfs, &parent, &entry, &(struct lfs_region){ LFS_FROM_MEM, 0, 0, - {.m.data = (const uint8_t*)&entry.d+4}, sizeof(entry.d)-4}); + {.m.data = &entry.d}, sizeof(entry.d)}); if (err) { return err; } @@ -2671,7 +2657,10 @@ int lfs_deorphan(lfs_t *lfs) { LFS_DEBUG("Found partial move %d %d", entry.d.u.dir[0], entry.d.u.dir[1]); entry.d.type &= ~LFS_STRUCT_MOVED; - err = lfs_dir_update(lfs, &cwd, &entry, NULL); + err = lfs_dir_update(lfs, &cwd, &entry, + &(struct lfs_region){ + LFS_FROM_MEM, 0, 0, + {.m.data = &entry.d}, sizeof(entry.d)}); if (err) { return err; }