anchor.diff:  %% ===================================================================
   %% gen_server callbacks
   
  +-spec init(_) -> {ok, state()}.
   init(_Args) ->
       spawn_link(fun() -> monitor_diskspace() end),
       spawn_link(fun() -> ddfs_gc:start_gc(disco:get_setting("DDFS_DATA")) end),
  
positive.code: %% ===================================================================
  %% API functions
  
  start_link() ->
      lager:info("DDFS master starts"),
      case gen_server:start_link({local, ?MODULE}, ?MODULE, [], []) of
          {ok, Server} -> {ok, Server};
          {error, {already_started, Server}} -> {ok, Server}
      end.
  
  stop() -> not_implemented.
  
  -spec tag_operation(term(), tagname()) -> term().
  tag_operation(Op, Tag) ->
  
negative.code:             {ok, Secondary}
      end.
  
  -type new_blob_result() :: too_many_replicas | {ok, [nonempty_string()]}.
  -spec do_new_blob(string()|object_name(), non_neg_integer(), [node()], [node()], [node_info()]) ->
                           new_blob_result().
  do_new_blob(_Obj, K, _Exclude, _BlackList, Nodes) when K > length(Nodes) ->
      too_many_replicas;
  do_new_blob(Obj, K, Exclude, BlackList, Nodes) ->
  