Generated v2 prefixes

This commit is contained in:
geky bot
2019-07-02 01:28:14 +00:00
7 changed files with 107 additions and 12 deletions

View File

@@ -66,7 +66,10 @@ jobs:
- CC="arm-linux-gnueabi-gcc --static -mthumb" - CC="arm-linux-gnueabi-gcc --static -mthumb"
- EXEC="qemu-arm" - EXEC="qemu-arm"
install: install:
- sudo apt-get install gcc-arm-linux-gnueabi qemu-user - sudo apt-get install
gcc-arm-linux-gnueabi
libc6-dev-armel-cross
qemu-user
- arm-linux-gnueabi-gcc --version - arm-linux-gnueabi-gcc --version
- qemu-arm -version - qemu-arm -version
@@ -78,7 +81,10 @@ jobs:
- CC="powerpc-linux-gnu-gcc --static" - CC="powerpc-linux-gnu-gcc --static"
- EXEC="qemu-ppc" - EXEC="qemu-ppc"
install: install:
- sudo apt-get install gcc-powerpc-linux-gnu qemu-user - sudo apt-get install
gcc-powerpc-linux-gnu
libc6-dev-powerpc-cross
qemu-user
- powerpc-linux-gnu-gcc --version - powerpc-linux-gnu-gcc --version
- qemu-ppc -version - qemu-ppc -version
@@ -90,9 +96,10 @@ jobs:
- CC="mips-linux-gnu-gcc --static" - CC="mips-linux-gnu-gcc --static"
- EXEC="qemu-mips" - EXEC="qemu-mips"
install: install:
- sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu/ xenial main universe" - sudo apt-get install
- sudo apt-get -qq update gcc-mips-linux-gnu
- sudo apt-get install gcc-mips-linux-gnu qemu-user libc6-dev-mips-cross
qemu-user
- mips-linux-gnu-gcc --version - mips-linux-gnu-gcc --version
- qemu-mips -version - qemu-mips -version

26
lfs2.c
View File

@@ -194,7 +194,7 @@ static int lfs2_bd_prog(lfs2_t *lfs2,
off += diff; off += diff;
size -= diff; size -= diff;
pcache->size = off - pcache->off; pcache->size = lfs2_max(pcache->size, off - pcache->off);
if (pcache->size == lfs2->cfg->cache_size) { if (pcache->size == lfs2->cfg->cache_size) {
// eagerly flush out pcache if we fill up // eagerly flush out pcache if we fill up
int err = lfs2_bd_flush(lfs2, pcache, rcache, validate); int err = lfs2_bd_flush(lfs2, pcache, rcache, validate);
@@ -617,7 +617,7 @@ static int lfs2_dir_getread(lfs2_t *lfs2, const lfs2_mdir_t *dir,
lfs2->cfg->cache_size); lfs2->cfg->cache_size);
int err = lfs2_dir_getslice(lfs2, dir, gmask, gtag, int err = lfs2_dir_getslice(lfs2, dir, gmask, gtag,
rcache->off, rcache->buffer, rcache->size); rcache->off, rcache->buffer, rcache->size);
if (err) { if (err < 0) {
return err; return err;
} }
} }
@@ -2548,7 +2548,7 @@ relocate:
} }
} }
} else { } else {
file->ctz.size = lfs2_max(file->pos, file->ctz.size); file->pos = lfs2_max(file->pos, file->ctz.size);
} }
// actual file updates // actual file updates
@@ -3338,6 +3338,14 @@ int lfs2_format(lfs2_t *lfs2, const struct lfs2_config *cfg) {
if (err) { if (err) {
goto cleanup; goto cleanup;
} }
// force compaction to prevent accidentally mounting any
// older version of littlefs that may live on disk
root.erased = false;
err = lfs2_dir_commit(lfs2, &root, NULL, 0);
if (err) {
goto cleanup;
}
} }
cleanup: cleanup:
@@ -4399,6 +4407,11 @@ int lfs2_migrate(lfs2_t *lfs2, const struct lfs2_config *cfg) {
goto cleanup; goto cleanup;
} }
} }
err = lfs2_bd_flush(lfs2, &lfs2->pcache, &lfs2->rcache, true);
if (err) {
goto cleanup;
}
} }
// Create new superblock. This marks a successful migration! // Create new superblock. This marks a successful migration!
@@ -4442,6 +4455,13 @@ int lfs2_migrate(lfs2_t *lfs2, const struct lfs2_config *cfg) {
if (err) { if (err) {
goto cleanup; goto cleanup;
} }
// force compaction to prevent accidentally mounting v1
dir2.erased = false;
err = lfs2_dir_commit(lfs2, &dir2, NULL, 0);
if (err) {
goto cleanup;
}
} }
cleanup: cleanup:

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python2
# This script replaces prefixes of files, and symbols in that file. # This script replaces prefixes of files, and symbols in that file.
# Useful for creating different versions of the codebase that don't # Useful for creating different versions of the codebase that don't

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python2
import struct import struct
import sys import sys

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python2
import struct import struct
import sys import sys

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python2
import re import re
import sys import sys

View File

@@ -357,5 +357,73 @@ tests/test.py << TEST
lfs2_unmount(&lfs2) => 0; lfs2_unmount(&lfs2) => 0;
TEST TEST
echo "--- Inline write and seek ---"
for SIZE in $SMALLSIZE $MEDIUMSIZE $LARGESIZE
do
tests/test.py << TEST
lfs2_mount(&lfs2, &cfg) => 0;
lfs2_file_open(&lfs2, &file[0], "hello/tinykitty$SIZE",
LFS2_O_RDWR | LFS2_O_CREAT) => 0;
int j = 0;
int k = 0;
memcpy(buffer, "abcdefghijklmnopqrstuvwxyz", 26);
for (unsigned i = 0; i < $SIZE; i++) {
lfs2_file_write(&lfs2, &file[0], &buffer[j++ % 26], 1) => 1;
lfs2_file_tell(&lfs2, &file[0]) => i+1;
lfs2_file_size(&lfs2, &file[0]) => i+1;
}
lfs2_file_seek(&lfs2, &file[0], 0, LFS2_SEEK_SET) => 0;
lfs2_file_tell(&lfs2, &file[0]) => 0;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
for (unsigned i = 0; i < $SIZE; i++) {
uint8_t c;
lfs2_file_read(&lfs2, &file[0], &c, 1) => 1;
c => buffer[k++ % 26];
}
lfs2_file_sync(&lfs2, &file[0]) => 0;
lfs2_file_tell(&lfs2, &file[0]) => $SIZE;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
lfs2_file_seek(&lfs2, &file[0], 0, LFS2_SEEK_SET) => 0;
for (unsigned i = 0; i < $SIZE; i++) {
lfs2_file_write(&lfs2, &file[0], &buffer[j++ % 26], 1) => 1;
lfs2_file_tell(&lfs2, &file[0]) => i+1;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
lfs2_file_sync(&lfs2, &file[0]) => 0;
lfs2_file_tell(&lfs2, &file[0]) => i+1;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
if (i < $SIZE-2) {
uint8_t c[3];
lfs2_file_seek(&lfs2, &file[0], -1, LFS2_SEEK_CUR) => i;
lfs2_file_read(&lfs2, &file[0], &c, 3) => 3;
lfs2_file_tell(&lfs2, &file[0]) => i+3;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
lfs2_file_seek(&lfs2, &file[0], i+1, LFS2_SEEK_SET) => i+1;
lfs2_file_tell(&lfs2, &file[0]) => i+1;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
}
}
lfs2_file_seek(&lfs2, &file[0], 0, LFS2_SEEK_SET) => 0;
lfs2_file_tell(&lfs2, &file[0]) => 0;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
for (unsigned i = 0; i < $SIZE; i++) {
uint8_t c;
lfs2_file_read(&lfs2, &file[0], &c, 1) => 1;
c => buffer[k++ % 26];
}
lfs2_file_sync(&lfs2, &file[0]) => 0;
lfs2_file_tell(&lfs2, &file[0]) => $SIZE;
lfs2_file_size(&lfs2, &file[0]) => $SIZE;
lfs2_file_close(&lfs2, &file[0]) => 0;
lfs2_unmount(&lfs2) => 0;
TEST
done
echo "--- Results ---" echo "--- Results ---"
tests/stats.py tests/stats.py