From b7dddd0a7e0c47c9b9892c33703856f96e608969 Mon Sep 17 00:00:00 2001 From: Daniel Rosenberg Date: Tue, 26 Mar 2019 14:42:14 -0700 Subject: [PATCH] Switch Checkpoint health sleep time to ms. This changes the property from microsecond to milliseconds, as we don't need that sort of precision here. Also switches from using ulseep, which has been removed from POSIX, to nanosleep. Test: Builds, Boots, Times Change-Id: Iefbaf8489ba05d8d688542fd7d4305efb980e701 --- Checkpoint.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Checkpoint.cpp b/Checkpoint.cpp index 3392be5..e060230 100644 --- a/Checkpoint.cpp +++ b/Checkpoint.cpp @@ -261,8 +261,9 @@ bool cp_needsCheckpoint() { } namespace { -const std::string kSleepTimeProp = "ro.sys.cp_usleeptime"; -const uint32_t usleeptime_default = 1000000; // 1 s +const std::string kSleepTimeProp = "ro.sys.cp_msleeptime"; +const uint32_t msleeptime_default = 1000; // 1 s +const uint32_t max_msleeptime = 3600000; // 1 h const std::string kMinFreeBytesProp = "ro.sys.cp_min_free_bytes"; const uint64_t min_free_bytes_default = 100 * (1 << 20); // 100 MiB @@ -273,11 +274,15 @@ const bool commit_on_full_default = true; static void cp_healthDaemon(std::string mnt_pnt, std::string blk_device, bool is_fs_cp) { struct statvfs data; uint64_t free_bytes = 0; - uint32_t usleeptime = GetUintProperty(kSleepTimeProp, usleeptime_default, (uint32_t)-1); + uint32_t msleeptime = GetUintProperty(kSleepTimeProp, msleeptime_default, max_msleeptime); uint64_t min_free_bytes = GetUintProperty(kMinFreeBytesProp, min_free_bytes_default, (uint64_t)-1); bool commit_on_full = GetBoolProperty(kCommitOnFullProp, commit_on_full_default); + struct timespec req; + req.tv_sec = msleeptime / 1000; + msleeptime %= 1000; + req.tv_nsec = msleeptime * 1000000; while (isCheckpointing) { if (is_fs_cp) { statvfs(mnt_pnt.c_str(), &data); @@ -302,7 +307,7 @@ static void cp_healthDaemon(std::string mnt_pnt, std::string blk_device, bool is break; } } - usleep(usleeptime); + nanosleep(&req, NULL); } }