log_writer_file: call fsync after reliable transfer

ensures watchdog data is flushed immediately
This commit is contained in:
Beat Küng
2023-02-21 11:32:30 -05:00
committed by Daniel Agar
parent e4cef9f303
commit 66b0f6eb35
2 changed files with 7 additions and 1 deletions
+2 -1
View File
@@ -369,7 +369,8 @@ void LogWriterFile::run()
const hrt_abstime now = hrt_absolute_time();
/* call fsync periodically to minimize potential loss of data */
const bool call_fsync = ++poll_count >= 100 || now - last_fsync > 1_s;
const bool call_fsync = ++poll_count >= 100 || now - last_fsync > 1_s || _want_fsync.load();
_want_fsync.store(false);
if (call_fsync) {
last_fsync = now;
+5
View File
@@ -120,6 +120,10 @@ public:
void set_need_reliable_transfer(bool need_reliable)
{
if (!need_reliable && _need_reliable_transfer) {
_want_fsync.store(true);
}
_need_reliable_transfer = need_reliable;
}
@@ -210,6 +214,7 @@ private:
px4::atomic_bool _exit_thread{false};
bool _need_reliable_transfer{false};
px4::atomic_bool _want_fsync{false};
pthread_mutex_t _mtx;
pthread_cond_t _cv;
pthread_t _thread = 0;