@@ -2096,137 +2096,143 @@ static int lfs_init(lfs_t *lfs, const struct lfs_config *cfg) {
2096
2096
}
2097
2097
2098
2098
int lfs_format (lfs_t * lfs , const struct lfs_config * cfg ) {
2099
- int err = lfs_init (lfs , cfg );
2100
- if (err ) {
2101
- return err ;
2102
- }
2099
+ int err = 0 ;
2100
+ if (true) {
2101
+ err = lfs_init (lfs , cfg );
2102
+ if (err ) {
2103
+ return err ;
2104
+ }
2103
2105
2104
- // create free lookahead
2105
- memset (lfs -> free .buffer , 0 , lfs -> cfg -> lookahead /8 );
2106
- lfs -> free .off = 0 ;
2107
- lfs -> free .size = lfs_min (lfs -> cfg -> lookahead , lfs -> cfg -> block_count );
2108
- lfs -> free .i = 0 ;
2109
- lfs_alloc_ack (lfs );
2106
+ // create free lookahead
2107
+ memset (lfs -> free .buffer , 0 , lfs -> cfg -> lookahead /8 );
2108
+ lfs -> free .off = 0 ;
2109
+ lfs -> free .size = lfs_min (lfs -> cfg -> lookahead , lfs -> cfg -> block_count );
2110
+ lfs -> free .i = 0 ;
2111
+ lfs_alloc_ack (lfs );
2110
2112
2111
- // create superblock dir
2112
- lfs_dir_t superdir ;
2113
- err = lfs_dir_alloc (lfs , & superdir );
2114
- if (err ) {
2115
- goto cleanup ;
2116
- }
2113
+ // create superblock dir
2114
+ lfs_dir_t superdir ;
2115
+ err = lfs_dir_alloc (lfs , & superdir );
2116
+ if (err ) {
2117
+ goto cleanup ;
2118
+ }
2117
2119
2118
- // write root directory
2119
- lfs_dir_t root ;
2120
- err = lfs_dir_alloc (lfs , & root );
2121
- if (err ) {
2122
- goto cleanup ;
2123
- }
2120
+ // write root directory
2121
+ lfs_dir_t root ;
2122
+ err = lfs_dir_alloc (lfs , & root );
2123
+ if (err ) {
2124
+ goto cleanup ;
2125
+ }
2124
2126
2125
- err = lfs_dir_commit (lfs , & root , NULL , 0 );
2126
- if (err ) {
2127
- goto cleanup ;
2128
- }
2129
-
2130
- lfs -> root [0 ] = root .pair [0 ];
2131
- lfs -> root [1 ] = root .pair [1 ];
2132
-
2133
- // write superblocks
2134
- lfs_superblock_t superblock = {
2135
- .off = sizeof (superdir .d ),
2136
- .d .type = LFS_TYPE_SUPERBLOCK ,
2137
- .d .elen = sizeof (superblock .d ) - sizeof (superblock .d .magic ) - 4 ,
2138
- .d .nlen = sizeof (superblock .d .magic ),
2139
- .d .version = LFS_DISK_VERSION ,
2140
- .d .magic = {"littlefs" },
2141
- .d .block_size = lfs -> cfg -> block_size ,
2142
- .d .block_count = lfs -> cfg -> block_count ,
2143
- .d .root = {lfs -> root [0 ], lfs -> root [1 ]},
2144
- };
2145
- superdir .d .tail [0 ] = root .pair [0 ];
2146
- superdir .d .tail [1 ] = root .pair [1 ];
2147
- superdir .d .size = sizeof (superdir .d ) + sizeof (superblock .d ) + 4 ;
2148
-
2149
- // write both pairs to be safe
2150
- lfs_superblock_tole32 (& superblock .d );
2151
- bool valid = false;
2152
- for (int i = 0 ; i < 2 ; i ++ ) {
2153
- err = lfs_dir_commit (lfs , & superdir , (struct lfs_region []){
2154
- {sizeof (superdir .d ), sizeof (superblock .d ),
2155
- & superblock .d , sizeof (superblock .d )}
2156
- }, 1 );
2157
- if (err && err != LFS_ERR_CORRUPT ) {
2127
+ err = lfs_dir_commit (lfs , & root , NULL , 0 );
2128
+ if (err ) {
2158
2129
goto cleanup ;
2159
2130
}
2160
2131
2161
- valid = valid || !err ;
2162
- }
2132
+ lfs -> root [0 ] = root .pair [0 ];
2133
+ lfs -> root [1 ] = root .pair [1 ];
2134
+
2135
+ // write superblocks
2136
+ lfs_superblock_t superblock = {
2137
+ .off = sizeof (superdir .d ),
2138
+ .d .type = LFS_TYPE_SUPERBLOCK ,
2139
+ .d .elen = sizeof (superblock .d ) - sizeof (superblock .d .magic ) - 4 ,
2140
+ .d .nlen = sizeof (superblock .d .magic ),
2141
+ .d .version = LFS_DISK_VERSION ,
2142
+ .d .magic = {"littlefs" },
2143
+ .d .block_size = lfs -> cfg -> block_size ,
2144
+ .d .block_count = lfs -> cfg -> block_count ,
2145
+ .d .root = {lfs -> root [0 ], lfs -> root [1 ]},
2146
+ };
2147
+ superdir .d .tail [0 ] = root .pair [0 ];
2148
+ superdir .d .tail [1 ] = root .pair [1 ];
2149
+ superdir .d .size = sizeof (superdir .d ) + sizeof (superblock .d ) + 4 ;
2163
2150
2164
- if (!valid ) {
2165
- err = LFS_ERR_CORRUPT ;
2166
- goto cleanup ;
2167
- }
2151
+ // write both pairs to be safe
2152
+ lfs_superblock_tole32 (& superblock .d );
2153
+ bool valid = false;
2154
+ for (int i = 0 ; i < 2 ; i ++ ) {
2155
+ err = lfs_dir_commit (lfs , & superdir , (struct lfs_region []){
2156
+ {sizeof (superdir .d ), sizeof (superblock .d ),
2157
+ & superblock .d , sizeof (superblock .d )}
2158
+ }, 1 );
2159
+ if (err && err != LFS_ERR_CORRUPT ) {
2160
+ goto cleanup ;
2161
+ }
2168
2162
2169
- // sanity check that fetch works
2170
- err = lfs_dir_fetch (lfs , & superdir , (const lfs_block_t [2 ]){0 , 1 });
2171
- if (err ) {
2172
- goto cleanup ;
2173
- }
2163
+ valid = valid || !err ;
2164
+ }
2174
2165
2175
- lfs_alloc_ack (lfs );
2166
+ if (!valid ) {
2167
+ err = LFS_ERR_CORRUPT ;
2168
+ goto cleanup ;
2169
+ }
2170
+
2171
+ // sanity check that fetch works
2172
+ err = lfs_dir_fetch (lfs , & superdir , (const lfs_block_t [2 ]){0 , 1 });
2173
+ if (err ) {
2174
+ goto cleanup ;
2175
+ }
2176
+
2177
+ lfs_alloc_ack (lfs );
2178
+ }
2176
2179
2177
2180
cleanup :
2178
2181
lfs_deinit (lfs );
2179
2182
return err ;
2180
2183
}
2181
2184
2182
2185
int lfs_mount (lfs_t * lfs , const struct lfs_config * cfg ) {
2183
- int err = lfs_init (lfs , cfg );
2184
- if (err ) {
2185
- return err ;
2186
- }
2187
-
2188
- // setup free lookahead
2189
- lfs -> free .off = 0 ;
2190
- lfs -> free .size = 0 ;
2191
- lfs -> free .i = 0 ;
2192
- lfs_alloc_ack (lfs );
2186
+ int err = 0 ;
2187
+ if (true) {
2188
+ err = lfs_init (lfs , cfg );
2189
+ if (err ) {
2190
+ return err ;
2191
+ }
2193
2192
2194
- // load superblock
2195
- lfs_dir_t dir ;
2196
- lfs_superblock_t superblock ;
2197
- err = lfs_dir_fetch (lfs , & dir , (const lfs_block_t [2 ]){0 , 1 });
2198
- if (err && err != LFS_ERR_CORRUPT ) {
2199
- goto cleanup ;
2200
- }
2193
+ // setup free lookahead
2194
+ lfs -> free .off = 0 ;
2195
+ lfs -> free .size = 0 ;
2196
+ lfs -> free .i = 0 ;
2197
+ lfs_alloc_ack (lfs );
2201
2198
2202
- if (! err ) {
2203
- err = lfs_bd_read ( lfs , dir . pair [ 0 ], sizeof ( dir . d ),
2204
- & superblock . d , sizeof ( superblock . d )) ;
2205
- lfs_superblock_fromle32 ( & superblock . d );
2206
- if (err ) {
2199
+ // load superblock
2200
+ lfs_dir_t dir ;
2201
+ lfs_superblock_t superblock ;
2202
+ err = lfs_dir_fetch ( lfs , & dir , ( const lfs_block_t [ 2 ]){ 0 , 1 } );
2203
+ if (err && err != LFS_ERR_CORRUPT ) {
2207
2204
goto cleanup ;
2208
2205
}
2209
2206
2210
- lfs -> root [0 ] = superblock .d .root [0 ];
2211
- lfs -> root [1 ] = superblock .d .root [1 ];
2212
- }
2207
+ if (!err ) {
2208
+ err = lfs_bd_read (lfs , dir .pair [0 ], sizeof (dir .d ),
2209
+ & superblock .d , sizeof (superblock .d ));
2210
+ lfs_superblock_fromle32 (& superblock .d );
2211
+ if (err ) {
2212
+ goto cleanup ;
2213
+ }
2213
2214
2214
- if (err || memcmp (superblock .d .magic , "littlefs" , 8 ) != 0 ) {
2215
- LFS_ERROR ("Invalid superblock at %d %d" , 0 , 1 );
2216
- err = LFS_ERR_CORRUPT ;
2217
- goto cleanup ;
2218
- }
2215
+ lfs -> root [0 ] = superblock .d .root [0 ];
2216
+ lfs -> root [1 ] = superblock .d .root [1 ];
2217
+ }
2219
2218
2220
- uint16_t major_version = (0xffff & (superblock .d .version >> 16 ));
2221
- uint16_t minor_version = (0xffff & (superblock .d .version >> 0 ));
2222
- if ((major_version != LFS_DISK_VERSION_MAJOR ||
2223
- minor_version > LFS_DISK_VERSION_MINOR )) {
2224
- LFS_ERROR ("Invalid version %d.%d" , major_version , minor_version );
2225
- err = LFS_ERR_INVAL ;
2226
- goto cleanup ;
2227
- }
2219
+ if (err || memcmp (superblock .d .magic , "littlefs" , 8 ) != 0 ) {
2220
+ LFS_ERROR ("Invalid superblock at %d %d" , 0 , 1 );
2221
+ err = LFS_ERR_CORRUPT ;
2222
+ goto cleanup ;
2223
+ }
2228
2224
2229
- return 0 ;
2225
+ uint16_t major_version = (0xffff & (superblock .d .version >> 16 ));
2226
+ uint16_t minor_version = (0xffff & (superblock .d .version >> 0 ));
2227
+ if ((major_version != LFS_DISK_VERSION_MAJOR ||
2228
+ minor_version > LFS_DISK_VERSION_MINOR )) {
2229
+ LFS_ERROR ("Invalid version %d.%d" , major_version , minor_version );
2230
+ err = LFS_ERR_INVAL ;
2231
+ goto cleanup ;
2232
+ }
2233
+
2234
+ return 0 ;
2235
+ }
2230
2236
2231
2237
cleanup :
2232
2238
0 commit comments