Skip to content

Commit

Permalink
Merge pull request #784 from openvstorage/rsm_space_leak
Browse files Browse the repository at this point in the history
fix small space leak
  • Loading branch information
Romain Slootmaekers authored Aug 11, 2017
2 parents 23ba93a + 8c79c1d commit 332d696
Showing 1 changed file with 36 additions and 29 deletions.
65 changes: 36 additions & 29 deletions ocaml/src/erasure.ml
Original file line number Diff line number Diff line change
Expand Up @@ -63,26 +63,29 @@ let _encode ?(kind=Isa_l) ~k ~m ~w data_ptrs parity_ptrs size =
data_ptrs parity_ptrs
size)
| Isa_l ->
let rsm =
Isa_l.gen_rs_vandermonde_matrix_jerasure ~k ~m
|> bigarray_start array1
in
let rsm0 = Isa_l.gen_rs_vandermonde_matrix_jerasure ~k ~m in
let rsm = bigarray_start array1 rsm0 in
let gftbls =
Isa_l.init_tables
~k ~rows:(k + m)
(rsm
|> to_voidp |> from_voidp uchar
|> fun x -> x +@ k*k) in
Lwt_preemptive.detach
(fun () ->
Isa_l.encode_data
~release_runtime_lock:true
~len:size
~k ~rows:m
~gftbls
~data_in:data_ptrs
~data_out:parity_ptrs)
()
Lwt.finalize
(fun () ->
Lwt_preemptive.detach
(fun () ->
Isa_l.encode_data
~release_runtime_lock:true
~len:size
~k ~rows:m
~gftbls
~data_in:data_ptrs
~data_out:parity_ptrs)
())
(fun () ->
Lwt_bytes2.Lwt_bytes.unsafe_destroy rsm0;
Lwt.return_unit)
end

let encode ?kind ~k ~m ~w data parity size =
Expand Down Expand Up @@ -142,10 +145,8 @@ let decode ?(kind=Isa_l) ~k ~m ~w erasures data parity size =
in
(res, erased')))
in

let rsm = Ctypes.(bigarray_start
array1
(Isa_l.rs_vandermonde_matrix_from_jerasure ~k ~rows:k dm)) in
let rsm0 = Isa_l.rs_vandermonde_matrix_from_jerasure ~k ~rows:k dm in
let rsm = Ctypes.(bigarray_start array1 rsm0) in

let all_fragments = List.append data parity in

Expand All @@ -170,17 +171,23 @@ let decode ?(kind=Isa_l) ~k ~m ~w erasures data parity size =
(rsm
|> to_voidp |> from_voidp uchar
|> fun x -> x) in

Lwt_preemptive.detach
(fun () ->
Isa_l.encode_data
~release_runtime_lock:true
~len:size
~k ~rows:k
~gftbls
~data_in:(shared_buffer_list_to_carray data_in)
~data_out:(shared_buffer_list_to_carray data_out))
() >>= fun () ->
Lwt.finalize
(fun () ->
Lwt_preemptive.detach
(fun () ->
Isa_l.encode_data
~release_runtime_lock:true
~len:size
~k ~rows:k
~gftbls
~data_in:(shared_buffer_list_to_carray data_in)
~data_out:(shared_buffer_list_to_carray data_out))
())
(fun () ->
Lwt_bytes2.Lwt_bytes.unsafe_destroy rsm0;
Lwt.return_unit
)
>>= fun () ->

_encode
~kind ~k ~m ~w
Expand Down

0 comments on commit 332d696

Please sign in to comment.