anchor.diff:  -spec rename_interprovider(fslogic_worker:ctx(), fslogic_worker:file(),
       file_meta:path()) -> #fuse_response{} | no_return().
   rename_interprovider(#fslogic_ctx{session_id = SessId}, SourceEntry, LogicalTargetPath) ->
  -    {ok, SourcePath} = file_meta:gen_path(SourceEntry),
  +    {ok, SourcePath} = fslogic_path:gen_path(SourceEntry, SessId),
       {ok, SourceParent} = file_meta:get_parent(SourceEntry),
       SourcePathTokens = filename:split(SourcePath),
       TargetPathTokens = filename:split(LogicalTargetPath),
   
       for_each_child_file(SourceEntry,
           fun(Entry) ->
  -            {ok, OldPath} = file_meta:gen_path(Entry),
  +            {ok, OldPath} = fslogic_path:gen_path(Entry, SessId),
               OldTokens = filename:split(OldPath),
               NewTokens = TargetPathTokens ++ lists:sublist(OldTokens, length(SourcePathTokens) + 1, length(OldTokens)),
               NewPath = fslogic_path:join(NewTokens),
  
positive.code:         {ok, File} ->
              SourcePathTokens = filename:split(SourcePath),
              TargetPathTokens = filename:split(CanonicalTargetPath),
              {ok, OldPath} = file_meta:gen_path(File),
              OldTokens = filename:split(OldPath),
              NewTokens = TargetPathTokens ++ lists:sublist(OldTokens, length(SourcePathTokens) + 1, length(OldTokens)),
              NewPath = fslogic_path:join(NewTokens),
  
negative.code:             for_each_child_file(SourceEntry,
                  fun
                      (#document{value = #file_meta{type = ?REGULAR_FILE_TYPE}} = File) ->
                          %% TODO: get all snapshots:
                          FileSnapshots = [File],
                          lists:foreach(
  