mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 16:14:16 +01:00 
			
		
		
		
	WIP Moved entry tag updates out
This commit is contained in:
		
							
								
								
									
										63
									
								
								lfs.c
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								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; | ||||
|                     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user