anchor.diff:  -export([new_blob/4, tags/2, get_tag/4, update_tag/5, update_tag_delayed/5,
            replace_tag/5, delete/3, delete_attrib/4]).
   
  --type gen_server() :: pid() | atom() | {atom(), node()}.
  +% dummy
  +-type state() :: none.
   
  --spec new_blob(gen_server(), string(), non_neg_integer(), [node()])
  +-spec new_blob(server(), string(), non_neg_integer(), [node()])
                 -> invalid_name | too_many_replicas | {ok, [string()]} | _.
   new_blob(Server, Blob, Replicas, Exclude) ->
       validate(Blob, fun() ->
  
positive.code:         gen_server:call(Server, {new_blob, Obj, Replicas, Exclude})
      end).
  
  -spec tags(gen_server(), binary()) -> {ok, [binary()]}.
  tags(Server, Prefix) ->
      case gen_server:call(Server, {get_tags, safe}, ?NODEOP_TIMEOUT) of
          {ok, Tags} ->
  
negative.code: -module(ddfs).
  
  -include("gs_util.hrl").
  -include("config.hrl").
  -include("ddfs.hrl").
  -include("ddfs_tag.hrl").
  