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]); |     d->u.dir[1] = lfs_fromle32(d->u.dir[1]); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void lfs_entry_tole32(struct lfs_disk_entry *d) { | // TODO | ||||||
|     d->u.dir[0] = lfs_tole32(d->u.dir[0]); | //static void lfs_entry_tole32(struct lfs_disk_entry *d) { | ||||||
|     d->u.dir[1] = lfs_tole32(d->u.dir[1]); | //    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) { | static void lfs_superblock_fromle32(struct lfs_disk_superblock *d) { | ||||||
|     d->root[0]     = lfs_fromle32(d->root[0]); |     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; |                 r->off += entry->off; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             lfs_entry_tole32(&entry->d); |             return lfs_dir_commit(lfs, dir, regions); | ||||||
|             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; |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // we need to allocate a new dir block |         // 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; |                 r->off += entry->off; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             lfs_entry_tole32(&entry->d); |             err = lfs_dir_commit(lfs, dir, regions); | ||||||
|             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); |  | ||||||
|             if (err) { |             if (err) { | ||||||
|                 return err; |                 return err; | ||||||
|             } |             } | ||||||
| @@ -725,12 +715,7 @@ static int lfs_dir_update(lfs_t *lfs, lfs_dir_t *dir, | |||||||
|             r->off += entry->off; |             r->off += entry->off; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         lfs_entry_tole32(&entry->d); |         int err = lfs_dir_commit(lfs, dir, regions); | ||||||
|         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); |  | ||||||
|         if (err) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
|         } |         } | ||||||
| @@ -1041,8 +1026,8 @@ int lfs_mkdir(lfs_t *lfs, const char *path) { | |||||||
|  |  | ||||||
|     err = lfs_dir_append(lfs, &cwd, &entry, |     err = lfs_dir_append(lfs, &cwd, &entry, | ||||||
|             &(struct lfs_region){ |             &(struct lfs_region){ | ||||||
|                 LFS_FROM_MEM, 0, +(sizeof(entry.d)-4), |                 LFS_FROM_MEM, 0, +sizeof(entry.d), | ||||||
|                 {.m.data = (uint8_t*)&entry.d+4}, sizeof(entry.d)-4, |                 {.m.data = &entry.d}, sizeof(entry.d), | ||||||
|             &(struct lfs_region){ |             &(struct lfs_region){ | ||||||
|                 LFS_FROM_MEM, 0, +entry.d.nlen, |                 LFS_FROM_MEM, 0, +entry.d.nlen, | ||||||
|                 {.m.data = path}, 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; |         entry.d.u.file.size = 0; | ||||||
|         err = lfs_dir_append(lfs, &cwd, &entry, |         err = lfs_dir_append(lfs, &cwd, &entry, | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, 0, +(sizeof(entry.d)-4), |                     LFS_FROM_MEM, 0, +sizeof(entry.d), | ||||||
|                     {.m.data = (uint8_t*)&entry.d+4}, sizeof(entry.d)-4, |                     {.m.data = &entry.d}, sizeof(entry.d), | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, 0, +entry.d.nlen, |                     LFS_FROM_MEM, 0, +entry.d.nlen, | ||||||
|                     {.m.data = path}, 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, |         err = lfs_dir_update(lfs, &cwd, &entry, | ||||||
|             &(struct lfs_region){ |             &(struct lfs_region){ | ||||||
|                 LFS_FROM_MEM, 0, 0, |                 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) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
|         } |         } | ||||||
| @@ -2076,7 +2061,10 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) { | |||||||
|  |  | ||||||
|     // mark as moving |     // mark as moving | ||||||
|     oldentry.d.type |= LFS_STRUCT_MOVED; |     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) { |     if (err) { | ||||||
|         return 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, |         err = lfs_dir_update(lfs, &newcwd, &newentry, | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, 0, 0, |                     LFS_FROM_MEM, 0, 0, | ||||||
|                     {.m.data = (const uint8_t*)&newentry.d+4}, |                     {.m.data = &newentry.d}, sizeof(newentry.d), | ||||||
|                     sizeof(newentry.d)-4, |  | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, sizeof(newentry.d)-4, 0, |                     LFS_FROM_MEM, sizeof(newentry.d), 0, | ||||||
|                     {.m.data = newpath}, newentry.d.nlen}}); |                     {.m.data = newpath}, newentry.d.nlen}}); | ||||||
|         if (err) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
| @@ -2107,9 +2094,8 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) { | |||||||
|     } else { |     } else { | ||||||
|         err = lfs_dir_append(lfs, &newcwd, &newentry, |         err = lfs_dir_append(lfs, &newcwd, &newentry, | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, 0, +(sizeof(newentry.d)-4), |                     LFS_FROM_MEM, 0, +sizeof(newentry.d), | ||||||
|                     {.m.data = (const uint8_t*)&newentry.d+4}, |                     {.m.data = &newentry.d}, sizeof(newentry.d), | ||||||
|                     sizeof(newentry.d)-4, |  | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, 0, +newentry.d.nlen, |                     LFS_FROM_MEM, 0, +newentry.d.nlen, | ||||||
|                     {.m.data = newpath}, 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, |         int err = lfs_dir_update(lfs, &parent, &entry, | ||||||
|                 &(struct lfs_region){ |                 &(struct lfs_region){ | ||||||
|                     LFS_FROM_MEM, 0, 0, |                     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) { |         if (err) { | ||||||
|             return err; |             return err; | ||||||
|         } |         } | ||||||
| @@ -2671,7 +2657,10 @@ int lfs_deorphan(lfs_t *lfs) { | |||||||
|                     LFS_DEBUG("Found partial move %d %d", |                     LFS_DEBUG("Found partial move %d %d", | ||||||
|                             entry.d.u.dir[0], entry.d.u.dir[1]); |                             entry.d.u.dir[0], entry.d.u.dir[1]); | ||||||
|                     entry.d.type &= ~LFS_STRUCT_MOVED; |                     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) { |                     if (err) { | ||||||
|                         return err; |                         return err; | ||||||
|                     } |                     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user