mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-14 13:41:23 +03:00
Free space of overwritten files in LittleFS (#7434)
* Free space of overwritten files in LittleFS Fixes #7426 LittleFS doesn't update the on-flash data structures when a file is reopened as O_TRUNC until the file is closed. This means the space of the original, inaccessible file cannot be used, causing OOS errors in cases when a large file is being overwritten. Explicitly call the file sync operation to update the on-flash metadata as soon as a file is opened. For normal files it's a no-op, but for O_TRUNC modes it will free the space, allowing full overwrite of large files. * Add host test case for change
This commit is contained in:
committed by
GitHub
parent
d979b57d76
commit
c663c55926
@ -87,6 +87,7 @@ FileImplPtr LittleFSImpl::open(const char* path, OpenMode openMode, AccessMode a
|
||||
// a directory whose name we are carrying around but which cannot be read or written
|
||||
return std::make_shared<LittleFSFileImpl>(this, path, nullptr, flags, creation);
|
||||
} else if (rc == 0) {
|
||||
lfs_file_sync(&_lfs, fd.get());
|
||||
return std::make_shared<LittleFSFileImpl>(this, path, fd, flags, creation);
|
||||
} else {
|
||||
DEBUGV("LittleFSDirImpl::openFile: rc=%d fd=%p path=`%s` openMode=%d accessMode=%d err=%d\n",
|
||||
|
Reference in New Issue
Block a user