mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 14:58:53 +08:00
log_writer_file: call fsync after reliable transfer
ensures watchdog data is flushed immediately
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user