anchor.diff:          {_, NewQ} ->
               erlang:monitor(process, Pid),
               {noreply, S#state{getq = NewQ}}
  -    end;
  -
  -handle_call(get_diskspace, _From, #state{vols = Vols} = S) ->
  -    {reply, lists:foldl(fun ({{Free, Used}, _VolName}, {TotalFree, TotalUsed}) ->
  -                                {TotalFree + Free, TotalUsed + Used}
  -                        end, {0, 0}, Vols), S};
  -
  -handle_call({put_blob, BlobName}, {Pid, _Ref} = From, #state{putq = Q} = S) ->
  +    end.
  +
  +do_get_diskspace(#state{vols = Vols}) ->
  +    lists:foldl(fun ({{Free, Used}, _VolName}, {TotalFree, TotalUsed}) ->
  +                        {TotalFree + Free, TotalUsed + Used}
  +                end, {0, 0}, Vols).
  +
  +do_put_blob(BlobName, {Pid, _Ref} = From, #state{putq = Q} = S) ->
       Reply = fun() ->
                       {_Space, VolName} = choose_vol(S#state.vols),
                       {ok, Local, Url} = ddfs_util:hashdir(list_to_binary(BlobName),
  
positive.code:     case ddfs_util:ensure_dir(Local) of
          ok ->
              Filename = filename:join(Local, ["!partial.", binary_to_list(Tag)]),
              {reply, case prim_file:write_file(Filename, Data) of
                          ok ->
                              {ok, VolName};
                          {error, _} = E ->
                              E
                      end, S};
          E ->
              {reply, E, S}
      end;
  
  handle_call({put_tag_commit, Tag, TagVol}, _, S) ->
      {value, {_, VolName}} = lists:keysearch(node(), 1, TagVol),
      {ok, Local, Url} = ddfs_util:hashdir(Tag,
                                           S#state.nodename,
  
negative.code:     Dst = filename:join(Local,  TagL),
      case ddfs_util:safe_rename(Src, Dst) of
          ok ->
              {{ok, Url},
               S#state{tags = gb_trees:enter(TagName,
                                             {Time, VolName},
                                             S#state.tags)}};
          {error, _} = E ->
              {E, S}
      end.
  
  -spec init_vols(nonempty_string(), [nonempty_string(),...]) ->
  