diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index 3f5b771c..f7dbd79e 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -211,36 +211,36 @@ update_progress (gpointer user_data) n_scanned_metadata = pull_data->n_scanned_metadata; start_time = pull_data->start_time; - ostree_async_progress_set_uint (pull_data->progress, "outstanding-fetches", outstanding_fetches); - ostree_async_progress_set_uint (pull_data->progress, "outstanding-writes", outstanding_writes); - ostree_async_progress_set_uint (pull_data->progress, "fetched", fetched); - ostree_async_progress_set_uint (pull_data->progress, "requested", requested); - ostree_async_progress_set_uint (pull_data->progress, "scanning", g_queue_is_empty (&pull_data->scan_object_queue) ? 0 : 1); - ostree_async_progress_set_uint (pull_data->progress, "scanned-metadata", n_scanned_metadata); - ostree_async_progress_set_uint64 (pull_data->progress, "bytes-transferred", bytes_transferred); - ostree_async_progress_set_uint64 (pull_data->progress, "start-time", start_time); - - /* Deltas */ - ostree_async_progress_set_uint (pull_data->progress, "fetched-delta-parts", - pull_data->n_fetched_deltaparts); - ostree_async_progress_set_uint (pull_data->progress, "total-delta-parts", - pull_data->n_total_deltaparts); - ostree_async_progress_set_uint (pull_data->progress, "fetched-delta-fallbacks", - pull_data->n_fetched_deltapart_fallbacks); - ostree_async_progress_set_uint (pull_data->progress, "total-delta-fallbacks", - pull_data->n_total_delta_fallbacks); - ostree_async_progress_set_uint64 (pull_data->progress, "fetched-delta-part-size", - pull_data->fetched_deltapart_size); - ostree_async_progress_set_uint64 (pull_data->progress, "total-delta-part-size", - pull_data->total_deltapart_size); - ostree_async_progress_set_uint64 (pull_data->progress, "total-delta-part-usize", - pull_data->total_deltapart_usize); - ostree_async_progress_set_uint (pull_data->progress, "total-delta-superblocks", - pull_data->static_delta_superblocks->len); - - /* We fetch metadata before content. These allow us to report metadata fetch progress specifically. */ - ostree_async_progress_set_uint (pull_data->progress, "outstanding-metadata-fetches", pull_data->n_outstanding_metadata_fetches); - ostree_async_progress_set_uint (pull_data->progress, "metadata-fetched", pull_data->n_fetched_metadata); + ostree_async_progress_set (pull_data->progress, + "outstanding-fetches", "u", outstanding_fetches, + "outstanding-writes", "u", outstanding_writes, + "fetched", "u", fetched, + "requested", "u", requested, + "scanning", "u", g_queue_is_empty (&pull_data->scan_object_queue) ? 0 : 1, + "scanned-metadata", "u", n_scanned_metadata, + "bytes-transferred", "t", bytes_transferred, + "start-time", "t", start_time, + /* Deltas */ + "fetched-delta-parts", + "u", pull_data->n_fetched_deltaparts, + "total-delta-parts", + "u", pull_data->n_total_deltaparts, + "fetched-delta-fallbacks", + "u", pull_data->n_fetched_deltapart_fallbacks, + "total-delta-fallbacks", + "u", pull_data->n_total_delta_fallbacks, + "fetched-delta-part-size", + "t", pull_data->fetched_deltapart_size, + "total-delta-part-size", + "t", pull_data->total_deltapart_size, + "total-delta-part-usize", + "t", pull_data->total_deltapart_usize, + "total-delta-superblocks", + "u", pull_data->static_delta_superblocks->len, + /* We fetch metadata before content. These allow us to report metadata fetch progress specifically. */ + "outstanding-metadata-fetches", "u", pull_data->n_outstanding_metadata_fetches, + "metadata-fetched", "u", pull_data->n_fetched_metadata, + NULL); ostree_async_progress_set_status (pull_data->progress, NULL); diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index ec2d8c83..8e2b1c21 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -3749,15 +3749,18 @@ ostree_repo_pull_default_console_progress_changed (OstreeAsyncProgress *progress buf = g_string_new (""); status = ostree_async_progress_get_status (progress); - outstanding_fetches = ostree_async_progress_get_uint (progress, "outstanding-fetches"); - outstanding_metadata_fetches = ostree_async_progress_get_uint (progress, "outstanding-metadata-fetches"); - outstanding_writes = ostree_async_progress_get_uint (progress, "outstanding-writes"); - scanning = ostree_async_progress_get_uint (progress, "scanning") == 1; - n_scanned_metadata = ostree_async_progress_get_uint (progress, "scanned-metadata"); - fetched_delta_parts = ostree_async_progress_get_uint (progress, "fetched-delta-parts"); - total_delta_parts = ostree_async_progress_get_uint (progress, "total-delta-parts"); - fetched_delta_part_fallbacks = ostree_async_progress_get_uint (progress, "fetched-delta-fallbacks"); - total_delta_part_fallbacks = ostree_async_progress_get_uint (progress, "total-delta-fallbacks"); + + ostree_async_progress_get (progress, + "outstanding-fetches", "u", &outstanding_fetches, + "outstanding-metadata-fetches", "u", &outstanding_metadata_fetches, + "outstanding-writes", "u", &outstanding_writes, + "scanning", "u", &scanning, + "scanned-metadata", "u", &n_scanned_metadata, + "fetched-delta-parts", "u", &fetched_delta_parts, + "total-delta-parts", "u", &total_delta_parts, + "fetched-delta-fallbacks", "u", &fetched_delta_part_fallbacks, + "total-delta-fallbacks", "u", &total_delta_part_fallbacks, + NULL); if (status) { @@ -3765,18 +3768,25 @@ ostree_repo_pull_default_console_progress_changed (OstreeAsyncProgress *progress } else if (outstanding_fetches) { - guint64 bytes_transferred = ostree_async_progress_get_uint64 (progress, "bytes-transferred"); - guint fetched = ostree_async_progress_get_uint (progress, "fetched"); - guint metadata_fetched = ostree_async_progress_get_uint (progress, "metadata-fetched"); - guint requested = ostree_async_progress_get_uint (progress, "requested"); - guint64 start_time = ostree_async_progress_get_uint64 (progress, "start-time"); - guint64 total_delta_part_size = ostree_async_progress_get_uint64 (progress, "total-delta-part-size"); + guint64 bytes_transferred, start_time, total_delta_part_size; + guint fetched, metadata_fetched, requested; guint64 current_time = g_get_monotonic_time (); - g_autofree char *formatted_bytes_transferred = - g_format_size_full (bytes_transferred, 0); + g_autofree char *formatted_bytes_transferred = NULL; g_autofree char *formatted_bytes_sec = NULL; guint64 bytes_sec; + /* Note: This is not atomic wrt the above getter call. */ + ostree_async_progress_get (progress, + "bytes-transferred", "t", &bytes_transferred, + "fetched", "u", &fetched, + "metadata-fetched", "u", &metadata_fetched, + "requested", "u", &requested, + "start-time", "t", &start_time, + "total-delta-part-size", "t", &total_delta_part_size, + NULL); + + formatted_bytes_transferred = g_format_size_full (bytes_transferred, 0); + /* Ignore the first second, or when we haven't transferred any * data, since those could cause divide by zero below. */ diff --git a/src/ostree/ot-builtin-pull.c b/src/ostree/ot-builtin-pull.c index a7826542..08f0028a 100644 --- a/src/ostree/ot-builtin-pull.c +++ b/src/ostree/ot-builtin-pull.c @@ -89,20 +89,23 @@ dry_run_console_progress_changed (OstreeAsyncProgress *progress, g_assert (!printed_console_progress); printed_console_progress = TRUE; - /* Number of parts */ - fetched_delta_parts = ostree_async_progress_get_uint (progress, "fetched-delta-parts"); - total_delta_parts = ostree_async_progress_get_uint (progress, "total-delta-parts"); - fetched_delta_part_fallbacks = ostree_async_progress_get_uint (progress, "fetched-delta-fallbacks"); - total_delta_part_fallbacks = ostree_async_progress_get_uint (progress, "total-delta-fallbacks"); + ostree_async_progress_get (progress, + /* Number of parts */ + "fetched-delta-parts", "u", &fetched_delta_parts, + "total-delta-parts", "u", &total_delta_parts, + "fetched-delta-fallbacks", "u", &fetched_delta_part_fallbacks, + "total-delta-fallbacks", "u", &total_delta_part_fallbacks, + /* Size variables */ + "fetched-delta-part-size", "t", &fetched_delta_part_size, + "total-delta-part-size", "t", &total_delta_part_size, + "total-delta-part-usize", "t", &total_delta_part_usize, + NULL); + /* Fold the count of deltaparts + fallbacks for simplicity; if changing this, * please change ostree_repo_pull_default_console_progress_changed() first. */ fetched_delta_parts += fetched_delta_part_fallbacks; total_delta_parts += total_delta_part_fallbacks; - /* Size variables */ - fetched_delta_part_size = ostree_async_progress_get_uint64 (progress, "fetched-delta-part-size"); - total_delta_part_size = ostree_async_progress_get_uint64 (progress, "total-delta-part-size"); - total_delta_part_usize = ostree_async_progress_get_uint64 (progress, "total-delta-part-usize"); buf = g_string_new ("");