anchor.diff:              {Storage_helper_info, FileId} = Response2,
               Res = storage_files_manager:read(Storage_helper_info, FileId, Offset, Size),
               case Res of
  -                {ok, _} ->
  +                {ok, Bytes} ->
                       case {event_production_enabled("read_event"), EventPolicy} of
                           {true, generate_events} ->
                               % TODO: add filePath
  -                            ReadEvent = [{"type", "read_event"}, {"user_dn", fslogic_context:get_user_dn()}, {"bytes", Size}],
  +                            ReadEvent = [{"type", "read_event"}, {"user_dn", fslogic_context:get_user_dn()},
  +                                {"bytes", Bytes}, {"blocks", [{Offset, Bytes}]}],
                               gen_server:call(?Dispatcher_Name, {cluster_rengine, 1, {event_arrived, ReadEvent}});
                           _ ->
                               ok
  
positive.code:                     %% TODO - check if asynchronous processing needed
                      case {is_integer(Res), event_production_enabled("write_event"), EventPolicy} of
                          {true, true, generate_events} ->
                              WriteEvent = [{"type", "write_event"}, {"user_dn", fslogic_context:get_user_dn()}, {"count", binary:referenced_byte_size(Buf)}],
                              gen_server:call(?Dispatcher_Name, {cluster_rengine, 1, {event_arrived, WriteEvent}}),
                              WriteEventStats = [{"type", "write_for_stats"}, {"user_dn", fslogic_context:get_user_dn()}, {"bytes", binary:referenced_byte_size(Buf)}],
                              gen_server:call(?Dispatcher_Name, {cluster_rengine, 1, {event_arrived, WriteEventStats}});
                          _ ->
                              ok
  
negative.code:         ?DIR_TYPE_PROT ->
              case mkdir(To) of
                  ok ->
                      case {case HasAcl of true -> copy_file_acl(From, To); false -> ok end, copy_file_xattr(From, To)} of
                          {ok, ok} ->
                              case ls_chunked(From) of
                                  {ok, ChildList} ->
                                      AnswerList = lists:map(fun(#dir_entry{name = Name}) ->
                                          cp(filename:join(From, Name), filename:join(To, Name)) end, ChildList),
                                      case lists:filter(fun(ok) -> false; (_) -> true end, AnswerList) of
                                          [] -> ok;
                                          [Error | _] ->
  