anchor.diff:  %% @doc start compaction
   -spec(start(list(string() | atom()), integer(), fun()) ->
                ok | {error, any()}).
  -start(TargetPids, MaxConNum, FilterFun) ->
  -    NewTargetPids = lists:map(fun(Pid) when is_list(Pid) ->
  -                                      list_to_atom(Pid);
  -                                 (Pid) ->
  -                                      Pid
  -                              end, TargetPids),
  -    gen_fsm:sync_send_event(?MODULE, {start, NewTargetPids, MaxConNum, FilterFun}, ?DEF_TIMEOUT).
  +start(TargetPids, MaxConNum, InspectFun) ->
  +    gen_fsm:sync_send_event(
  +      ?MODULE, {start, TargetPids, MaxConNum, InspectFun}, ?DEF_TIMEOUT).
   
   stop(_Id) ->
       void.
  +
   
   %% @doc Suspend compaction
   -spec(suspend() ->
  
positive.code: 
  start_jobs_as_possible(#state{target_pids           = [Id|Rest],
                                max_num_of_concurrent = MaxProc,
                                filter_fun            = FunHasChargeOfNode,
                                in_progress_pids      = InProgPids,
                                child_pids            = ChildPids} = State, NumChild) when NumChild < MaxProc ->
      Pid  = spawn_link(fun() ->
  
negative.code:                  in_progress_pids = [Id|lists:delete(DoneId, InProgPids)]}};
  
  state_running({done_child, DonePid, DoneId}, #state{target_pids      = [],
                                                      in_progress_pids = [_,_|_],
                                                      child_pids       = ChildPids} = State) ->
      erlang:send(DonePid, stop),
      {next_state, state_running,
  