anchor.diff:      [Vol|_] = lists:reverse(lists:keysort(1, Vols)),
       Vol.
   
  --spec monitor_diskspace(nonempty_string(),
  -                        [{diskinfo(), nonempty_string()}]) ->
  -    no_return().
  +-spec monitor_diskspace(path(), [volume()]) -> no_return().
   monitor_diskspace(Root, Vols) ->
       timer:sleep(?DISKSPACE_INTERVAL),
       Fold = fun({_OldSpace, VolName}, VolAcc) ->
  
positive.code: gate_get_blob() ->
      gen_server:call(?MODULE, get_blob, ?GET_WAIT_TIMEOUT).
  
  -spec put_blob(object_name()) ->
                        'full' | {'ok', path(), url()} | {'error', path(), term()}
                            | {'error', 'no_volumes'}.
  put_blob(BlobName) ->
  
negative.code:             E
      end.
  
  -spec do_put_tag_commit(tagname(), [{node(), volume_name()}], #state{}) ->
                         {{'ok', url()} | {'error', _}, #state{}}.
  do_put_tag_commit(Tag, TagVol, S) ->
      {value, {_, VolName}} = lists:keysearch(node(), 1, TagVol),
      {ok, Local, Url} = ddfs_util:hashdir(Tag,
  