Adopted LFS3_*_CK and LFS3_*_GC aliases, replacing LFS3_GC_ALL

This extends the hopefully useful LFS3_GC_ALL flag alias to the other
functions, without trying to figure out what the heck LFS3_M_ALL should
mean semantically.

Current definitions:

  // an alias for ck work
  *_CK              0x00003000  ---- ---- ---- ---- --11 ---- ---- ----

  // an alias for all possible gc work
  *_GC              0x00003b00  ---- ---- ---- ---- ++11 11+1 ---- ----

  *_MKCONSISTENT    0x00000100  ---- ---- ---- ---- ---- ---1 ---- ----
  *_LOOKAHEAD       0x00000200  ---- ---- ---- ---- ---- --1- ---- ----
  *_PREERASE+       0x00000400  ---- ---- ---- ---- ---- -+-- ---- ----
  *_COMPACT         0x00000800  ---- ---- ---- ---- ---- 1--- ---- ----
  *_CKMETA          0x00001000  ---- ---- ---- ---- ---1 ---- ---- ----
  *_CKDATA          0x00002000  ---- ---- ---- ---- --1- ---- ---- ----
  *_REPAIRMETA+     0x00004000  ---- ---- ---- ---- -+-- ---- ---- ----
  *_REPAIRDATA+     0x00008000  ---- ---- ---- ---- +--- ---- ---- ----

  + Planned

One weird artifact of this is that LFS3_GC_CK ~= LFS3_GC_CKDATA, but I'm
not sure that's a bad thing? Note this is very much not true for info
flags, LFS3_I_CK != LFS3_I_CKDATA.

No code changes.
This commit is contained in:
Christopher Haster
2025-12-06 01:04:57 -06:00
parent fa403f4485
commit 124afb3034
3 changed files with 54 additions and 4 deletions
+52 -2
View File
@@ -153,6 +153,9 @@ enum lfs3_type {
#define LFS3_o_UNGRAFT 0x00800000 // File's leaf does not match disk
#define LFS3_o_UNFLUSH 0x00400000 // File's cache does not match disk
// an alias for ck work
#define LFS3_O_CK (LFS3_O_CKMETA | LFS3_O_CKDATA)
// File seek flags
#define LFS3_SEEK_SET 0 // Seek relative to an absolute position
#define LFS3_SEEK_CUR 1 // Seek relative to the current file position
@@ -218,6 +221,17 @@ enum lfs3_type {
#define LFS3_F_CKDATA 0x00002000 // Check metadata + data checksums
#endif
// an alias for ck work
#define LFS3_F_CK (LFS3_F_CKMETA | LFS3_F_CKDATA)
// an alias for all possible gc work
#define LFS3_F_GC ( \
LFS3_IFDEF_RDONLY(0, LFS3_F_MKCONSISTENT) \
| LFS3_IFDEF_RDONLY(0, LFS3_F_LOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, LFS3_F_COMPACT) \
| LFS3_F_CKMETA \
| LFS3_F_CKDATA)
// Filesystem mount flags
#define LFS3_M_MODE 1 // Mount's access mode
#ifndef LFS3_RDONLY
@@ -261,6 +275,17 @@ enum lfs3_type {
#define LFS3_M_CKMETA 0x00001000 // Check metadata checksums
#define LFS3_M_CKDATA 0x00002000 // Check metadata + data checksums
// an alias for ck work
#define LFS3_M_CK (LFS3_M_CKMETA | LFS3_M_CKDATA)
// an alias for all possible gc work
#define LFS3_M_GC ( \
LFS3_IFDEF_RDONLY(0, LFS3_M_MKCONSISTENT) \
| LFS3_IFDEF_RDONLY(0, LFS3_M_LOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, LFS3_M_COMPACT) \
| LFS3_M_CKMETA \
| LFS3_M_CKDATA)
// Filesystem info flags
#define LFS3_I_RDONLY 0x00000001 // Mounted read only
#ifdef LFS3_GBMAP
@@ -342,6 +367,17 @@ enum lfs3_btype {
#define LFS3_t_DIRTY 0x02000000 // Filesystem ckpointed outside traversal
#define LFS3_t_STALE 0x01000000 // Block queue probably out-of-date
// an alias for ck work
#define LFS3_T_CK (LFS3_T_CKMETA | LFS3_T_CKDATA)
// an alias for all possible gc work
#define LFS3_T_GC ( \
LFS3_IFDEF_RDONLY(0, LFS3_T_MKCONSISTENT) \
| LFS3_IFDEF_RDONLY(0, LFS3_T_LOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, LFS3_T_COMPACT) \
| LFS3_T_CKMETA \
| LFS3_T_CKDATA)
// File/filesystem check flags
#ifndef LFS3_RDONLY
#define LFS3_CK_MKCONSISTENT \
@@ -357,6 +393,17 @@ enum lfs3_btype {
#define LFS3_CK_CKMETA 0x00001000 // Check metadata checksums
#define LFS3_CK_CKDATA 0x00002000 // Check metadata + data checksums
// an alias for ck work
#define LFS3_CK_CK (LFS3_CK_CKMETA | LFS3_CK_CKDATA)
// an alias for all possible gc work
#define LFS3_CK_GC ( \
LFS3_IFDEF_RDONLY(0, LFS3_CK_MKCONSISTENT) \
| LFS3_IFDEF_RDONLY(0, LFS3_CK_LOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, LFS3_CK_COMPACT) \
| LFS3_CK_CKMETA \
| LFS3_CK_CKDATA)
// GC flags
#ifndef LFS3_RDONLY
#define LFS3_GC_MKCONSISTENT \
@@ -372,8 +419,11 @@ enum lfs3_btype {
#define LFS3_GC_CKMETA 0x00001000 // Check metadata checksums
#define LFS3_GC_CKDATA 0x00002000 // Check metadata + data checksums
// an alias for all possible GC work
#define LFS3_GC_ALL ( \
// an alias for ck work
#define LFS3_GC_CK (LFS3_GC_CKMETA | LFS3_GC_CKDATA)
// an alias for all possible gc work
#define LFS3_GC_GC ( \
LFS3_IFDEF_RDONLY(0, LFS3_GC_MKCONSISTENT) \
| LFS3_IFDEF_RDONLY(0, LFS3_GC_LOOKAHEAD) \
| LFS3_IFDEF_RDONLY(0, LFS3_GC_COMPACT) \
+1 -1
View File
@@ -114,7 +114,7 @@ void bench_permutation(size_t i, uint32_t *buffer, size_t size);
BENCH_DEFINE(PCACHE_SIZE, LFS3_MAX(16, PROG_SIZE) ) \
BENCH_DEFINE(FCACHE_SIZE, 16 ) \
BENCH_DEFINE(LOOKAHEAD_SIZE, 16 ) \
BENCH_DEFINE(GC_FLAGS, LFS3_GC_ALL ) \
BENCH_DEFINE(GC_FLAGS, LFS3_GC_GC ) \
BENCH_DEFINE(GC_STEPS, 0 ) \
BENCH_DEFINE(GC_LOOKAHEAD_THRESH, -1 ) \
BENCH_DEFINE(GC_LOOKGBMAP_THRESH, -1 ) \
+1 -1
View File
@@ -105,7 +105,7 @@ void test_permutation(size_t i, uint32_t *buffer, size_t size);
TEST_DEFINE(PCACHE_SIZE, LFS3_MAX(16, PROG_SIZE) ) \
TEST_DEFINE(FCACHE_SIZE, 16 ) \
TEST_DEFINE(LOOKAHEAD_SIZE, 16 ) \
TEST_DEFINE(GC_FLAGS, LFS3_GC_ALL ) \
TEST_DEFINE(GC_FLAGS, LFS3_GC_GC ) \
TEST_DEFINE(GC_STEPS, 0 ) \
TEST_DEFINE(GC_LOOKAHEAD_THRESH, -1 ) \
TEST_DEFINE(GC_LOOKGBMAP_THRESH, -1 ) \