[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/1] tools: reduce copies b/w ocaml Strings and Bytes



On Thu, Apr 05, 2018 at 05:16:27PM +0100, Christian Lindig wrote:
> I think this is a good patch as it reduces the amount of copying. I believe
> it is safe as it is. There is one place where I am a little hesitant:
> 
> @@ -291,7 +291,9 @@ let access_logging ~con ~tid ?(data="") ~level
> access_type =
> 
>                               let date = string_of_date() in
>                               let tid = string_of_tid ~con tid in
>                               let access_type = string_of_access_type 
> access_type in
> -                             let data = sanitize_data (Bytes.of_string data) 
> in
> +                             (* we can use unsafe_of_string here as the 
> sanitize_data function
> +                                immediately makes a copy of the data and 
> operates on that. *)
> +                             let data = sanitize_data 
> (Bytes.unsafe_of_string data) in
>                               let prefix = prefix !access_log_destination 
> date in
>                               let msg = Printf.sprintf "%s %s %s %s" prefix 
> tid access_type data in
>                               logger.write ~level msg)
> 
> This relies on the implementation of sanitize_data() and somebody could
> change it in the future
> and invalidate the assumption being made here. However, this is the only
> call site and the
> function is defined above. Anybody making changes in the context of
> String/Byte conversion
> come across the comment here.
> 
> So: I'm happy to take the patch as it is.
> 
> On 05/04/18 11:40, Marcello Seri wrote:
> > When xenstore was ported to the new safe-string interface, it mostly
> > happened by making copyies of string into bytes and back.  The ideal
> > fix would be to rewrite all of the relevant interfaces to be uniformly
> > using bytes, but in the meanwhile we can improve the code by using unsafe
> > conversion functions (see
> >   
> > https://caml.inria.fr/pub/docs/manual-ocaml/libref/Bytes.html#3_Unsafeconversionsforadvancedusers).
> > 
> > In most cases we own the bytes that we are converting to string, or we
> > immediately make copies that we then mutate, or we use them immutably
> > as payloads for writes. In all these cases it is safe to use the unsafe
> > functions and prevent a copy.
> > 
> > This patch updates the code to use the unsafe conversions where possible.
> > 
> > Signed-off-by: Marcello Seri <marcello.seri@xxxxxxxxxx>
> Reviewed-by: Christian Lindig <christian.lindig@xxxxxxxxxx>

Applied with Juergen's release-ack.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.