anchor.diff:      filename:join(VnodeStatusDir, integer_to_list(Index)).
   
   read_vnode_status(File) ->
  -    case file:consult(File) of
  -        {ok, [Status]} when is_list(Status) ->
  -            {ok, proplists:delete(version, Status)};
  -        ER ->
  -            ER
  +    try
  +        case file:consult(File) of
  +            {ok, [Status]} when is_list(Status) ->
  +                {ok, proplists:delete(version, Status)};
  +            {error, enoent} ->
  +                %% doesn't exist? same as empty
  +                {ok, []};
  +            Er ->
  +                %% "corruption" error, unreadable, log, and start anew
  +                lager:error("Failed to consult vnode-status file ~p ~p", [File, Er]),
  +                {ok, []}
  +        end
  +    catch C:T ->
  +            %% consult threw
  +            lager:error("Failed to consult vnode-status file ~p ~p ~p", [File, C, T]),
  +            {ok, []}
       end.
   
   write_vnode_status(Status, File) ->
  
positive.code:       ?_test(begin % update failure
                   ?cmd("chmod 000 kv_vnode_status_test/0"),
                   ?cmd("chmod 500 kv_vnode_status_test"),
                   F = fun([updated]) ->
                               {shouldfail, [updatedagain]}
                       end,
                   Index = 0,
  
negative.code: update_vnode_status(F, Index) ->
      VnodeFile = vnode_status_filename(Index),
      ok = filelib:ensure_dir(VnodeFile),
      {ok, Status} = read_vnode_status(VnodeFile),
      update_vnode_status2(F, Status, VnodeFile).
  
  update_vnode_status2(F, Status, VnodeFile) ->
      case F(Status) of
  