mirror of
https://github.com/littlefs-project/littlefs.git
synced 2025-12-01 12:20:02 +00:00
Added support for all mount-traversal flags in lfs3_format
I mean, why not? These redirect to the same internal lfs3_fs_gc_ function anyways. Might as well keep things consistent. Added: LFS3_F_MKCONSISTENT 0x00000800 Make the filesystem consistent LFS3_F_RELOOKAHEAD 0x00001000 Repopulate lookahead buffer LFS3_F_MKCONSISTENT is guaranteed to be a noop, but LFS3_F_RELOOKAHEAD forces a filesystem traversal, which may have some niche use case. No code changes.
This commit is contained in:
16
lfs3.c
16
lfs3.c
@ -16180,6 +16180,12 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
|
||||
#ifdef LFS3_YES_CKDATACKSUMS
|
||||
flags |= LFS3_F_CKDATACKSUMS;
|
||||
#endif
|
||||
#ifdef LFS3_YES_MKCONSISTENT
|
||||
flags |= LFS3_F_MKCONSISTENT;
|
||||
#endif
|
||||
#ifdef LFS3_YES_RELOOKAHEAD
|
||||
flags |= LFS3_F_RELOOKAHEAD;
|
||||
#endif
|
||||
#ifdef LFS3_YES_REGBMAP
|
||||
flags |= LFS3_F_REGBMAP;
|
||||
#endif
|
||||
@ -16203,6 +16209,8 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
|
||||
| LFS3_IFDEF_CKFETCHES(LFS3_F_CKFETCHES, 0)
|
||||
| LFS3_IFDEF_CKMETAPARITY(LFS3_F_CKMETAPARITY, 0)
|
||||
| LFS3_IFDEF_CKDATACKSUMS(LFS3_F_CKDATACKSUMS, 0)
|
||||
| LFS3_F_MKCONSISTENT
|
||||
| LFS3_F_RELOOKAHEAD
|
||||
| LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
|
||||
| LFS3_F_COMPACTMETA
|
||||
| LFS3_F_CKMETA
|
||||
@ -16242,14 +16250,18 @@ int lfs3_format(lfs3_t *lfs3, uint32_t flags,
|
||||
|
||||
// run gc if requested
|
||||
if (flags & (
|
||||
LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
|
||||
LFS3_F_MKCONSISTENT
|
||||
| LFS3_F_RELOOKAHEAD
|
||||
| LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
|
||||
| LFS3_F_COMPACTMETA
|
||||
| LFS3_F_CKMETA
|
||||
| LFS3_F_CKDATA)) {
|
||||
lfs3_mgc_t mgc;
|
||||
err = lfs3_fs_gc_(lfs3, &mgc,
|
||||
flags & (
|
||||
LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
|
||||
LFS3_F_MKCONSISTENT
|
||||
| LFS3_F_RELOOKAHEAD
|
||||
| LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, 0)
|
||||
| LFS3_F_COMPACTMETA
|
||||
| LFS3_F_CKMETA
|
||||
| LFS3_F_CKDATA),
|
||||
|
||||
8
lfs3.h
8
lfs3.h
@ -196,6 +196,14 @@ enum lfs3_type {
|
||||
#define LFS3_F_CKDATACKSUMS \
|
||||
0x01000000 // Check data checksums on reads
|
||||
#endif
|
||||
#ifndef LFS3_RDONLY
|
||||
#define LFS3_F_MKCONSISTENT \
|
||||
0x00000800 // Make the filesystem consistent
|
||||
#endif
|
||||
#ifndef LFS3_RDONLY
|
||||
#define LFS3_F_RELOOKAHEAD \
|
||||
0x00001000 // Repopulate lookahead buffer
|
||||
#endif
|
||||
#if !defined(LFS3_RDONLY) && defined(LFS3_GBMAP)
|
||||
#define LFS3_F_REGBMAP 0x00002000 // Repopulate the gbmap
|
||||
#endif
|
||||
|
||||
@ -80,6 +80,8 @@ F_CKFETCHES = 0x00200000 # y- Check block checksums before first use
|
||||
F_CKMETAPARITY = 0x00400000 # y- Check metadata tag parity bits
|
||||
F_CKDATACKSUMS = 0x01000000 # y- Check data checksums on reads
|
||||
|
||||
F_MKCONSISTENT = 0x00000800 # y- Make the filesystem consistent
|
||||
F_RELOOKAHEAD = 0x00001000 # y- Repopulate lookahead buffer
|
||||
F_REGBMAP = 0x00002000 # y- Repopulate the gbmap
|
||||
F_COMPACTMETA = 0x00008000 # y- Compact metadata logs
|
||||
F_CKMETA = 0x00010000 # y- Check metadata checksums
|
||||
|
||||
@ -107,6 +107,8 @@ defines.CKPROGS = [false, true]
|
||||
defines.CKFETCHES = [false, true]
|
||||
defines.CKMETAPARITY = [false, true]
|
||||
defines.CKDATACKSUMS = [false, true]
|
||||
defines.MKCONSISTENT = [false, true]
|
||||
defines.RELOOKAHEAD = [false, true]
|
||||
defines.REGBMAP = [false, true]
|
||||
defines.COMPACTMETA = [false, true]
|
||||
defines.CKMETA = [false, true]
|
||||
@ -136,6 +138,8 @@ code = '''
|
||||
| ((CKDATACKSUMS)
|
||||
? LFS3_IFDEF_CKDATACKSUMS(LFS3_F_CKDATACKSUMS, -1)
|
||||
: 0)
|
||||
| ((MKCONSISTENT) ? LFS3_F_MKCONSISTENT : 0)
|
||||
| ((RELOOKAHEAD) ? LFS3_F_RELOOKAHEAD : 0)
|
||||
| ((REGBMAP)
|
||||
? LFS3_IFDEF_GBMAP(LFS3_F_REGBMAP, -1)
|
||||
: 0)
|
||||
|
||||
Reference in New Issue
Block a user