aboutsummaryrefslogtreecommitdiff
path: root/src/or/hibernate.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/hibernate.c')
-rw-r--r--src/or/hibernate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index 65ad4c80f..d7968f721 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -544,6 +544,7 @@ accounting_record_bandwidth_usage(time_t now, or_state_t *state)
time_t tmp;
int r;
uint64_t expected;
+ static time_t last_recorded;
/* First, update bw_accounting. Until 0.1.2.5-x, this was the only place
* we stored this information. The format is:
@@ -572,7 +573,10 @@ accounting_record_bandwidth_usage(time_t now, or_state_t *state)
(unsigned long)expected);
tor_snprintf(fname, sizeof(fname), "%s/bw_accounting",
get_options()->DataDirectory);
- r = write_str_to_file(fname, buf, 0);
+ if (!get_options()->AvoidDiskWrites || (last_recorded + 3600 < now)) {
+ r = write_str_to_file(fname, buf, 0);
+ last_recorded = now;
+ }
/* Now update the state */
state->AccountingIntervalStart = interval_start_time;