anchor.diff:      Primary = ([N || {N, {Free, _Total}} <- Nodes, Free > ?MIN_FREE_SPACE / 1024]
                  -- (Exclude ++ BlackList)),
       if length(Primary) >= K ->
  -            {ok, disco_util:choose_random(Primary, K)};
  +            {ok, Include ++ disco_util:choose_random(Primary -- Include , K - length(Include))};
          true ->
               Preferred = [N || {N, _} <- lists:reverse(lists:keysort(2, Nodes))],
  -            Secondary = lists:sublist(Preferred -- (Exclude ++ BlackList), K),
  +            Secondary = Include ++ lists:sublist(Preferred -- (Include ++ Exclude ++ BlackList),
  +                                                 K - length(Include)),
               {ok, Secondary}
       end.
   
  
positive.code:     ReadableNodeSet = gb_sets:subtract(NodeSet, BlackSet),
      {ok, gb_sets:to_list(ReadableNodeSet), gb_sets:size(BlackSet)}.
  
  -spec do_choose_write_nodes([node_info()], non_neg_integer(), [node()], [node()]) ->
                                     {ok, [node()]}.
  do_choose_write_nodes(Nodes, K, Exclude, BlackList) ->
      % Node selection algorithm:
      % 1. try to choose K nodes randomly from all the nodes which have
      %    more than ?MIN_FREE_SPACE bytes free space available and which
  
negative.code: handle_call({choose_write_nodes, K, Exclude}, _,
              #state{nodes = N, write_blacklist = WBL, gc_blacklist = GBL} = S) ->
      BL = lists:umerge(WBL, GBL),
      {reply, do_choose_write_nodes(N, K, [], Exclude, BL), S};
  
  handle_call({new_blob, Obj, K, Exclude}, _,
              #state{nodes = N, gc_blacklist = GBL, write_blacklist = WBL} = S) ->
  