diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2023-01-04 15:17:11 +0100 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2023-01-04 15:17:11 +0100 |
commit | 162f778afe6af58b06132c41fb010309d2f935ec (patch) | |
tree | 2a26ebec24af384ec80de74f6e57fc457e5e4313 /src | |
parent | 95e6375813f7970ff1dd80126d18a1bd3b2c3bd3 (diff) | |
download | ccache-162f778afe6af58b06132c41fb010309d2f935ec.tar.gz |
chore: Clean up minor things after 95e6375813f7
Diffstat (limited to 'src')
-rw-r--r-- | src/InodeCache.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/InodeCache.cpp b/src/InodeCache.cpp index b88ac23b..48afe21e 100644 --- a/src/InodeCache.cpp +++ b/src/InodeCache.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2020-2022 Joel Rosdahl and other contributors +// Copyright (C) 2020-2023 Joel Rosdahl and other contributors // // See doc/AUTHORS.adoc for a complete list of contributors. // @@ -153,13 +153,13 @@ spin_lock(std::atomic<pid_t>& owner_pid, const pid_t self_pid) pid_t lock_pid = 0; bool reset_timer = false; util::TimePoint lock_time; - for (;;) { + while (true) { for (int i = 0; i < 10000; ++i) { lock_pid = owner_pid.load(std::memory_order_relaxed); if (lock_pid == 0 && owner_pid.compare_exchange_weak( lock_pid, self_pid, std::memory_order_acquire)) { - return false; + return true; } if (prev_pid != lock_pid) { @@ -174,10 +174,8 @@ spin_lock(std::atomic<pid_t>& owner_pid, const pid_t self_pid) if (reset_timer) { lock_time = util::TimePoint::now(); reset_timer = false; - } else { - if (util::TimePoint::now() - lock_time > MAX_LOCK_DURATION) { - return true; - } + } else if (util::TimePoint::now() - lock_time > MAX_LOCK_DURATION) { + return false; } } } @@ -306,9 +304,9 @@ InodeCache::with_bucket(const Digest& key_digest, Util::big_endian_to_int(key_digest.bytes(), hash); const uint32_t index = hash % k_num_buckets; Bucket* bucket = &m_sr->buckets[index]; - bool broken_lock = spin_lock(bucket->owner_pid, m_self_pid); - while (broken_lock) { - LOG("Wiping inodes cache because of stale mutex at index {}", index); + bool acquired_lock = spin_lock(bucket->owner_pid, m_self_pid); + while (!acquired_lock) { + LOG("Dropping inode cache file because of stale mutex at index {}", index); if (!drop() || !initialize()) { return false; } @@ -316,7 +314,7 @@ InodeCache::with_bucket(const Digest& key_digest, ++m_sr->errors; } bucket = &m_sr->buckets[index]; - broken_lock = spin_lock(bucket->owner_pid, m_self_pid); + acquired_lock = spin_lock(bucket->owner_pid, m_self_pid); } try { bucket_handler(bucket); @@ -341,7 +339,7 @@ InodeCache::create_new_file(const std::string& filename) return false; } int err = Util::fallocate(*tmp_file.fd, sizeof(SharedRegion)); - if (err) { + if (err != 0) { LOG("Failed to allocate file space for inode cache: {}", strerror(err)); return false; } |