mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 00:32:38 +01:00 
			
		
		
		
	Added redundant compaction to lfs_format/lfs_migrate
This ensures that both blocks in the superblock pair are written with the superblock info. While this does use an additional erase cycle, it prevents older versions of littlefs from accidentally being picked up in the case that the disk is mounted on a system that doesn't support the newer version. This does bring back the risk of picking up old littlefs versions on a disk that has been formatted with a filesystem that doesn't use block 2 (such as FAT), but this risk already exists, and moving between versions of littlefs is more likely with the recent v1 -> v2 update. Suggested by rojer
This commit is contained in:
		
							
								
								
									
										15
									
								
								lfs.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								lfs.c
									
									
									
									
									
								
							| @@ -3338,6 +3338,14 @@ int lfs_format(lfs_t *lfs, const struct lfs_config *cfg) { | ||||
|         if (err) { | ||||
|             goto cleanup; | ||||
|         } | ||||
|  | ||||
|         // force compaction to prevent accidentally mounting any | ||||
|         // older version of littlefs that may live on disk | ||||
|         root.erased = false; | ||||
|         err = lfs_dir_commit(lfs, &root, NULL, 0); | ||||
|         if (err) { | ||||
|             goto cleanup; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| cleanup: | ||||
| @@ -4447,6 +4455,13 @@ int lfs_migrate(lfs_t *lfs, const struct lfs_config *cfg) { | ||||
|         if (err) { | ||||
|             goto cleanup; | ||||
|         } | ||||
|  | ||||
|         // force compaction to prevent accidentally mounting v1 | ||||
|         dir2.erased = false; | ||||
|         err = lfs_dir_commit(lfs, &dir2, NULL, 0); | ||||
|         if (err) { | ||||
|             goto cleanup; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| cleanup: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user