anchor.diff:  % allow before deleting extra replicas.
   -define(NUM_EXTRA_REPLICAS, 1).
   
  -% Permissions for blobs and tags
  +% Permissions for files backing blobs and tags.
   -define(FILE_MODE, 8#00400).
   
  -% Interval for checking available disk space in ddfs_node
  +% How often to check available disk space in ddfs_node.
   -define(DISKSPACE_INTERVAL, 10 * ?SECOND).
   
  -% /dfs/tag/ requests can be ?MAX_TAG_BODY_SIZE bytes at most
  +% The maximum size of payloads of HTTP requests to the /ddfs/tag/
  +% prefix.
   -define(MAX_TAG_BODY_SIZE, (512 * ?MB)).
   
   % Tag attribute names and values have a limited size, and there
  
positive.code: -define(MAX_TAG_ATTRIB_VALUE_SIZE, 1024).
  -define(MAX_NUM_TAG_ATTRIBS, 1000).
  
  % How long to http requests should wait for the tag updates to
  % finish (a long time)
  -define(TAG_UPDATE_TIMEOUT, ?DAY).
  
  % Timeout for re-replicating a single blob over HTTP PUT
  -define(GC_PUT_TIMEOUT, 180 * ?MINUTE).
  
  % Delete !partial leftovers after this many milliseconds
  -define(PARTIAL_EXPIRES, ?DAY).
  
  % When orphaned blob can be deleted
  -define(ORPHANED_BLOB_EXPIRES, 5 * ?DAY).
  
  % When orphaned tag can be deleted
  -define(ORPHANED_TAG_EXPIRES, 5 * ?DAY).
  
  % How long a tag has to stay on the deleted list before
  
negative.code: % Maximum length of tag/blob prefix
  -define(NAME_MAX, 511).
  
  % How long ddfs node startup can take.  The most time-consuming part
  % is the scanning of the tag objects in the node's DDFS volumes.
  -define(NODE_STARTUP, 1 * ?MINUTE).
  
  % How long to wait on the master for replies from nodes.
  -define(NODE_TIMEOUT, 10 * ?SECOND).
  
  % How long to wait for a reply from an operation coordinated by the
  % master that accesses nodes.  This value should be larger than
  % NODE_TIMEOUT.
  -define(NODEOP_TIMEOUT, 1 * ?MINUTE).
  
  % The minimum amount of free space a node must have, to be considered
  % a primary candidate host for a new blob.
  -define(MIN_FREE_SPACE, 1024 * ?MB).
  
  % The maximum number of HTTP connections to queue up on a busy system.
  -define(HTTP_QUEUE_LENGTH, 100).
  
  % The maximum number of simultaneous HTTP connections. Note that
  % HTTP_MAX_CONNS * 2 * 2 + 32 < Maximum number of file descriptors, where
  % 2 = Get and put, 2 = two FDs required for each connection (connection
  % itself + a file it accesses), 32 = a guess how many extra fds is needed.
  -define(HTTP_MAX_CONNS, 128).
  
  % How long to keep a PUT request in queue if the system is busy.
  -define(PUT_WAIT_TIMEOUT, 1 * ?MINUTE).
  
  % How long to keep a GET request in queue if the system is busy.
  -define(GET_WAIT_TIMEOUT, 1 * ?MINUTE).
  
  % An unused loaded tag expires in TAG_EXPIRES milliseconds.  Note that
  % if TAG_EXPIRES is not smaller than GC_INTERVAL, tags will never
  % expire from the memory cache and will always take up memory.
  -define(TAG_EXPIRES, 10 * ?HOUR).
  
  % How often the master's cache of all known tag names is refreshed.
  % This refresh is only needed to purge deleted tags eventually from
  % the tag cache. It doesn't harm to have a long interval.
  -define(TAG_CACHE_INTERVAL, 10 * ?MINUTE).
  
  % How soon a tag object initialized in memory expires if it's content
  % cannot be fetched from the cluster.
  -define(TAG_EXPIRES_ONERROR, 1 * ?SECOND).
  
  % How often a DDFS node should refresh its tag cache from disk.
  -define(FIND_TAGS_INTERVAL, ?DAY).
  
  % How often buffered (delayed) updates to a tag need to be
  % flushed. Tradeoff: The longer the interval, the more updates are
  % bundled in a single commit.  On the other hand, in the worst case
  % the requester has to wait for the full interval before getting a
  % reply. A long interval also increases the likelihood that the server
  % crashes before the commit has finished successfully, making requests
  % more unreliable.
  -define(DELAYED_FLUSH_INTERVAL, 1 * ?SECOND).
  
  % How long to wait between garbage collection runs.
  -define(GC_INTERVAL, ?DAY).
  
  % Max duration for a GC run.  This should be smaller than
  % min(ORPHANED_{BLOB,TAG}_EXPIRES).
  -define(GC_MAX_DURATION, 3 * ?DAY).
  
  % How long to wait after startup for cluster to stabilize before
  % starting the first GC run.
  -define(GC_DEFAULT_INITIAL_WAIT, 5 * ?MINUTE).
  
  % Maximum number of times we try to bring up a node that failed during
  