sdlog2: check every 20MiB if we're running out of space, moved the threshold to 50MiB

This commit is contained in:
Ban Siesta
2015-01-04 19:13:27 +00:00
parent e8eff3061f
commit 0265885a39
+7 -2
View File
@@ -178,6 +178,7 @@ static char log_dir[32];
/* statistics counters */ /* statistics counters */
static uint64_t start_time = 0; static uint64_t start_time = 0;
static unsigned long log_bytes_written = 0; static unsigned long log_bytes_written = 0;
static unsigned long last_checked_bytes_written = 0;
static unsigned long log_msgs_written = 0; static unsigned long log_msgs_written = 0;
static unsigned long log_msgs_skipped = 0; static unsigned long log_msgs_skipped = 0;
@@ -604,11 +605,15 @@ static void *logwriter_thread(void *arg)
fsync(log_fd); fsync(log_fd);
poll_count = 0; poll_count = 0;
}
if (log_bytes_written - last_checked_bytes_written > 20*1024*1024) {
/* check if space is available, if not stop everything */ /* check if space is available, if not stop everything */
if (check_free_space() != OK) { if (check_free_space() != OK) {
logwriter_should_exit = true; logwriter_should_exit = true;
main_thread_should_exit = true; main_thread_should_exit = true;
} }
last_checked_bytes_written = log_bytes_written;
} }
} }
@@ -1858,8 +1863,8 @@ int check_free_space()
errx(ERROR, "ERR: statfs"); errx(ERROR, "ERR: statfs");
} }
/* use a threshold of 10 MiB */ /* use a threshold of 50 MiB */
if (statfs_buf.f_bavail < (int)(10 * 1024 * 1024 / statfs_buf.f_bsize)) { if (statfs_buf.f_bavail < (int)(50 * 1024 * 1024 / statfs_buf.f_bsize)) {
mavlink_and_console_log_critical(mavlink_fd, mavlink_and_console_log_critical(mavlink_fd,
"[sdlog2] no space on MicroSD: %u MiB", "[sdlog2] no space on MicroSD: %u MiB",
(unsigned int)(statfs_buf.f_bavail * statfs_buf.f_bsize) / (1024U * 1024U)); (unsigned int)(statfs_buf.f_bavail * statfs_buf.f_bsize) / (1024U * 1024U));