mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 00:32:38 +01:00 
			
		
		
		
	Combined superblock scan and fetch of xored-globals during mount
Conceptually these are two separate operations. However, they are both only needed during mount, both require iteration over the linked-list of metadata-pairs, and both are independent from each other. Combining these into one gives us a nice code savings. Additionally, this greatly simplifies the lookup of the root directory. Initially we used a flag to indicate which superblock was root, since we didn't want to fetch more pairs than we needed to. But since we're going to fetch all metadata-pairs anyways, we can just use the last superblock we find as the indicator of our root directory.
This commit is contained in:
		
							
								
								
									
										8
									
								
								lfs.h
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								lfs.h
									
									
									
									
									
								
							| @@ -94,27 +94,25 @@ enum lfs_type { | ||||
|  | ||||
|     // internally used types | ||||
|     LFS_TYPE_USER           = 0x100, | ||||
|     LFS_TYPE_SUPERBLOCK     = 0x001, | ||||
|     LFS_TYPE_ROOT           = 0x000, | ||||
|     LFS_TYPE_NAME           = 0x000, | ||||
|     LFS_TYPE_DELETE         = 0x020, | ||||
|     LFS_TYPE_STRUCT         = 0x040, | ||||
|     LFS_TYPE_GLOBALS        = 0x0e0, | ||||
|     LFS_TYPE_TAIL           = 0x080, | ||||
|     LFS_TYPE_SOFTTAIL       = 0x080, | ||||
|     LFS_TYPE_HARDTAIL       = 0x081, | ||||
|     LFS_TYPE_CRC            = 0x0a0, | ||||
|     LFS_TYPE_SUPERBLOCK     = 0x001, | ||||
|     LFS_TYPE_GLOBALS        = 0x0e0, | ||||
|  | ||||
|     LFS_TYPE_DIRSTRUCT      = 0x040, | ||||
|     LFS_TYPE_INLINESTRUCT   = 0x041, | ||||
|     LFS_TYPE_CTZSTRUCT      = 0x042, | ||||
|  | ||||
|     // internal chip sources | ||||
|     LFS_FROM_REGION         = 0x000, | ||||
|     LFS_FROM_MEM            = 0x000, | ||||
|     LFS_FROM_DISK           = 0x200, | ||||
|     LFS_FROM_MOVE           = 0x0c1, | ||||
|     LFS_FROM_USERATTRS      = 0x0c2, | ||||
|     LFS_FROM_SUPERBLOCK     = 0x0c3, | ||||
| }; | ||||
|  | ||||
| // File open flags | ||||
|   | ||||
		Reference in New Issue
	
	Block a user