anchor.diff:              read_tagdata(TagID, Locations, Replicas, [Chosen|Failed], E)
       end.
   
  --spec do_delayed_update([[binary()]], [term()], replyto(),
  -                        gb_tree(), state()) -> state().
  +-spec do_delayed_update([[url()]], [term()], replyto(), gb_tree(), state())
  +                       -> state().
   do_delayed_update(Urls, Opt, ReplyTo, Buffer, S) ->
       % We must handle updates with different set of options separately.
       % Thus requests are indexed by the normalized set of options (OptKey)
  
positive.code:                    {error, commit_failed | invalid_attribute_value |
                             invalid_url_object | unknown_attribute |
                             replication_failed | unauthorized} |
                     {ok, [binary(),...]} | ok) -> [any()].
  send_replies(ReplyTo, Message) when is_tuple(ReplyTo) ->
      send_replies([ReplyTo], Message);
  send_replies(ReplyToList, Message) ->
  
negative.code:     Url.
  
  -spec get_tagdata(tagname(), path()) -> {missing, notfound} | {error, _}
                                              | {ok, tagname(), [node()], [url()]}.
  get_tagdata(TagName, DdfsData) ->
      {ok, ReadableNodes, RBSize} = ddfs_master:get_read_nodes(),
      TagMinK = get(min_tagk),
  