r11686@Kushana: nickm | 2006-12-23 22:05:57 -0500

More changes wrt unnecessary disk writes.


svn:r9176
This commit is contained in:
Nick Mathewson 2006-12-24 03:06:03 +00:00
parent f3fd5d9032
commit bf1014692f
4 changed files with 25 additions and 10 deletions

View file

@ -43,7 +43,8 @@ Changes in version 0.1.2.5-xxxx - 200?-??-??
dirserver has given us a 503, we try not to use it until an hour
has gone by, or until we have no dirservers that haven't given us
a 503.
- The state file gets saved less often when AvoidDiskWrites is set.
- The state file and the bw_accounting file get saved less often when
AvoidDiskWrites is set.
- We no longer look for identity and onion keys in "identity.key" and
"onion.key" -- these were replaced by secret_id_key and
secret_onion_key in 0.0.8pre1.
@ -90,6 +91,8 @@ Changes in version 0.1.2.5-xxxx - 200?-??-??
user fix resolv.conf or specify nameservers explicitly. (Resolves
bug 363.)
- Stop accepting certain malformed ports in configured exit policies.
- Don't re-write the fingerprint file every restart, unless it has
changed.
o Controller features:
- Have GETINFO dir/status/* work on hosts with DirPort disabled.

View file

@ -150,14 +150,14 @@ N - they don't count toward the 3-strikes rule
- update dir-spec with what we decided for each of these
Nd- Have a mode that doesn't write to disk much, so we can run Tor on
o Have a mode that doesn't write to disk much, so we can run Tor on
flash memory (e.g. Linksys routers or USB keys).
o Add AvoidDiskWrites config option.
. only write state file when it's "changed"
o only write state file when it's "changed"
o crank up the numbers if avoiddiskwrites is on.
- some things may not want to get written at all.
- stop writing identity key / fingerprint / etc every restart
- more?
D some things may not want to get written at all.
o stop writing fingerprint every restart
D more?
NR. Write path-spec.txt

View file

@ -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;

View file

@ -231,6 +231,7 @@ init_keys(void)
const char *mydesc, *datadir;
crypto_pk_env_t *prkey;
char digest[20];
char *cp;
or_options_t *options = get_options();
or_state_t *state = get_or_state();
@ -335,10 +336,17 @@ init_keys(void)
log_err(LD_GENERAL,"Error writing fingerprint line");
return -1;
}
if (write_str_to_file(keydir, fingerprint_line, 0)) {
log_err(LD_FS, "Error writing fingerprint line to file");
return -1;
/* Check whether we need to write the fingerprint file. */
cp = NULL;
if (file_status(keydir) == FN_FILE)
cp = read_str_to_file(keydir, 0, NULL);
if (!cp && strcmp(cp, fingerprint_line)) {
if (write_str_to_file(keydir, fingerprint_line, 0)) {
log_err(LD_FS, "Error writing fingerprint line to file");
return -1;
}
}
tor_free(cp);
log(LOG_NOTICE, LD_GENERAL,
"Your Tor server's identity key fingerprint is '%s %s'",