diff --git a/mirage/config.ml b/mirage/config.ml index 097394e..bf0aa96 100644 --- a/mirage/config.ml +++ b/mirage/config.ml @@ -47,5 +47,13 @@ let git_client = merge_git_clients (git_tcp tcp git) (git_http ~authenticator:tls_authenticator tcp git) +let program_block_size = + let doc = Key.Arg.info [ "program-block-size" ] in + Key.(create "program_block_size" Arg.(opt int 512 doc)) + +let kv_rw = + let block = block_of_file "db" in + chamelon ~program_block_size block + let () = register "mirror" - [ mirror $ kv_rw_mem () $ default_time $ default_posix_clock $ stack $ dns $ paf default_time stack $ git_client ] + [ mirror $ kv_rw $ default_time $ default_posix_clock $ stack $ dns $ paf default_time stack $ git_client ] diff --git a/mirage/unikernel.ml b/mirage/unikernel.ml index 5e3a3f2..20891c0 100644 --- a/mirage/unikernel.ml +++ b/mirage/unikernel.ml @@ -343,9 +343,11 @@ module Make (hash_to_string h) (hex_to_string v) (hex_to_string v')); false end) hm - then + then begin + Logs.info (fun m -> m "KV.set (%d)" (String.length data)); KV.set t.dev (Mirage_kv.Key.v sha256) data >|= function | Ok () -> + Logs.info (fun m -> m "KV.set done"); t.md5s <- SM.add md5 sha256 t.md5s; t.sha512s <- SM.add sha512 sha256 t.sha512s; Logs.info (fun m -> m "wrote %s (%d bytes)" (hex_to_string sha256) @@ -353,7 +355,7 @@ module Make | Error e -> Logs.err (fun m -> m "error %a while writing %s" KV.pp_write_error e (hex_to_string sha256)) - else + end else Lwt.return_unit let find_key t h v = @@ -468,7 +470,7 @@ module Make Lwt_list.iter_p (fun (url, csums) -> HM.fold (fun h v r -> r >>= function - | true -> Disk.exists disk h v + | true -> Disk.exists disk h (hex_to_string v) | false -> Lwt.return false) csums (Lwt.return true) >>= function | true -> @@ -476,7 +478,9 @@ module Make Lwt.return_unit | false -> follow 20 url >>= function - | Some str -> Disk.write disk str csums + | Some str -> + Logs.info (fun m -> m "writing (%d)" (String.length str)); + Disk.write disk str csums | None -> Lwt.return_unit) (SM.bindings urls) >|= fun () -> Logs.info (fun m -> m "done")