anchor.diff:      {next_state,waiting_vnode_w,StateData,Timeout}.
   
   waiting_vnode_w({w, Idx, ReqId},
  -                  StateData=#state{w=W,dw=DW,req_id=ReqId,client=Client,
  +                  StateData=#state{w=W,dw=DW,req_id=ReqId,client=Client, bkey={Bucket, Key},
                                      replied_w=Replied0, endtime=End}) ->
       Replied = [Idx|Replied0],
       case length(Replied) >= W of
  
positive.code:             case DW of
                  0 ->
                      Client ! {ReqId, ok},
                      riak_eventer:notify(riak_put_fsm, put_fsm_reply,
                                          {ReqId, ok}),
                      {stop,normal,StateData};
                  _ ->
                      NewStateData = StateData#state{replied_w=Replied},
  
negative.code:           StateData=#state{req_id=ReqId, endtime=End}) ->
      {next_state,waiting_vnode_dw,StateData,End-riak_util:moment()};
  waiting_vnode_dw({dw, Idx, ReqId},
                   StateData=#state{dw=DW, client=Client, bkey={Bucket, Key},
                                     replied_dw=Replied0, endtime=End}) ->
      Replied = [Idx|Replied0],
      case length(Replied) >= DW of
          true ->
              riak_eventer:notify(riak_put_fsm, put_fsm_reply_ok,
                                  {ReqId, ok, {Bucket, Key}}),
              Client ! {ReqId, ok},
              {stop,normal,StateData};
          false ->
  