anchor.diff:                              Ctx = fslogic_context:get_user_context(),
                               spawn(fun() ->
                                   fslogic_context:set_user_context(Ctx),
  -                                {ok, #fileattributes{size = FileSize}} = logical_files_manager:getfileattr(File), %todo IMPORTANT: this needs optimization!!!,  but cannot be done asynchronously
  -                                {ok, FullFileName} = fslogic_path:get_full_file_name(File), %todo cache somehow
  +                                {ok, #fileattributes{size = FileSize}} = logical_files_manager:getfileattr(FilePath), %todo IMPORTANT: this needs optimization!!!,  but cannot be done asynchronously
  +                                {ok, FullFileName} = get_file_path_from_cache(FilePath),
                                   WriteEvent = [{"type", "write_event"}, {"user_dn", fslogic_context:get_user_dn()},
                                       {"bytes", Res}, {"blocks", [{FileSize - Res, Res}]}, {"filePath", FullFileName}],
                                   gen_server:call(?Dispatcher_Name, {cluster_rengine, 1, {event_arrived, WriteEvent}}),
  
positive.code:                             ok
                      end,
                      Res;
                  _ -> {Response, Response2}
              end;
          _ ->
              {error, quota_exceeded}
  
negative.code:     ErrorGeneral :: atom(),
      ErrorDetail :: term().
  %% ====================================================================
  truncate({uuid, Uuid}, Size) ->
      case get_file_path_from_cache({uuid, Uuid}) of
          {ok, FullFilePath} -> truncate(FullFilePath, Size);
          Error -> Error
      end;
  truncate(FilePath, Size) ->
      case getfilelocation(FilePath) of
          {ok, {Storage_helper_info, FileId}} ->
              Res = storage_files_manager:truncate(Storage_helper_info, FileId, Size),
              case {Res, event_production_enabled("truncate_event")} of
                  {ok, true} ->
                      {ok, FullFileName} = get_file_path_from_cache(FilePath),
                      TruncateEvent = [{"type", "truncate_event"}, {"user_dn", fslogic_context:get_user_dn()}, {"filePath", FullFileName}],
                      gen_server:call(?Dispatcher_Name, {cluster_rengine, 1, {event_arrived, TruncateEvent}}),
                      TruncateEventAvailableBlocks = [{"type", "truncate_for_available_blocks"}, {"user_dn", fslogic_context:get_user_dn()}, {"filePath", FullFileName},
                          {"blocks", [{0, Size}]}],
                      gen_server:call(?Dispatcher_Name, {cluster_rengine, 1, {event_arrived, TruncateEventAvailableBlocks}});
                  _ ->
                      ok
              end,
              Res;
          Err -> Err
      end.
  
  %% delete/1
  