lib/repo-commit: Factor out min-free-space-size error reporting
Improves code readability. Closes: #1671 Approved by: jlebon
This commit is contained in:
parent
7468600029
commit
4c023a9585
|
|
@ -429,6 +429,28 @@ add_size_index_to_metadata (OstreeRepo *self,
|
||||||
return g_variant_ref_sink (g_variant_builder_end (builder));
|
return g_variant_ref_sink (g_variant_builder_end (builder));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
throw_min_free_space_error (OstreeRepo *self,
|
||||||
|
guint64 bytes_required,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
const char *err_msg = NULL;
|
||||||
|
g_autofree char *err_msg_owned = NULL;
|
||||||
|
|
||||||
|
if (bytes_required > 0)
|
||||||
|
{
|
||||||
|
g_autofree char *formatted_required = g_format_size (bytes_required);
|
||||||
|
err_msg = err_msg_owned = g_strdup_printf ("would be exceeded, at least %s requested", formatted_required);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
err_msg = "would be exceeded";
|
||||||
|
|
||||||
|
if (self->min_free_space_percent > 0)
|
||||||
|
return glnx_throw (error, "min-free-space-percent '%u%%' %s", self->min_free_space_percent, err_msg);
|
||||||
|
else
|
||||||
|
return glnx_throw (error, "min-free-space-size %" G_GUINT64_FORMAT "MB %s", self->min_free_space_mb, err_msg);
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
gboolean initialized;
|
gboolean initialized;
|
||||||
GLnxTmpfile tmpf;
|
GLnxTmpfile tmpf;
|
||||||
|
|
@ -524,13 +546,7 @@ _ostree_repo_bare_content_commit (OstreeRepo *self,
|
||||||
{
|
{
|
||||||
self->cleanup_stagedir = TRUE;
|
self->cleanup_stagedir = TRUE;
|
||||||
g_mutex_unlock (&self->txn_lock);
|
g_mutex_unlock (&self->txn_lock);
|
||||||
g_autofree char *formatted_required = g_format_size (st_buf.st_size);
|
return throw_min_free_space_error (self, st_buf.st_size, error);
|
||||||
if (self->min_free_space_percent > 0)
|
|
||||||
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s more required",
|
|
||||||
self->min_free_space_percent, formatted_required);
|
|
||||||
else
|
|
||||||
return glnx_throw (error, "min-free-space-size %luMB woulid be exceeded, %s more required",
|
|
||||||
self->min_free_space_mb, formatted_required);
|
|
||||||
}
|
}
|
||||||
/* This is the main bit that needs mutex protection */
|
/* This is the main bit that needs mutex protection */
|
||||||
self->txn.max_blocks -= object_blocks;
|
self->txn.max_blocks -= object_blocks;
|
||||||
|
|
@ -927,13 +943,7 @@ write_content_object (OstreeRepo *self,
|
||||||
guint64 bytes_required = (guint64)object_blocks * self->txn.blocksize;
|
guint64 bytes_required = (guint64)object_blocks * self->txn.blocksize;
|
||||||
self->cleanup_stagedir = TRUE;
|
self->cleanup_stagedir = TRUE;
|
||||||
g_mutex_unlock (&self->txn_lock);
|
g_mutex_unlock (&self->txn_lock);
|
||||||
g_autofree char *formatted_required = g_format_size (bytes_required);
|
return throw_min_free_space_error (self, bytes_required, error);
|
||||||
if (self->min_free_space_percent > 0)
|
|
||||||
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s more required",
|
|
||||||
self->min_free_space_percent, formatted_required);
|
|
||||||
else
|
|
||||||
return glnx_throw (error, "min-free-space-size %" G_GUINT64_FORMAT "MB would be exceeded, %s more required",
|
|
||||||
self->min_free_space_mb, formatted_required);
|
|
||||||
}
|
}
|
||||||
/* This is the main bit that needs mutex protection */
|
/* This is the main bit that needs mutex protection */
|
||||||
self->txn.max_blocks -= object_blocks;
|
self->txn.max_blocks -= object_blocks;
|
||||||
|
|
@ -1646,16 +1656,9 @@ ostree_repo_prepare_transaction (OstreeRepo *self,
|
||||||
self->txn.max_blocks = bfree - reserved_blocks;
|
self->txn.max_blocks = bfree - reserved_blocks;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
guint64 bytes_required = bfree * self->txn.blocksize;
|
|
||||||
self->cleanup_stagedir = TRUE;
|
self->cleanup_stagedir = TRUE;
|
||||||
g_mutex_unlock (&self->txn_lock);
|
g_mutex_unlock (&self->txn_lock);
|
||||||
g_autofree char *formatted_free = g_format_size (bytes_required);
|
return throw_min_free_space_error (self, 0, error);
|
||||||
if (self->min_free_space_percent > 0)
|
|
||||||
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s available",
|
|
||||||
self->min_free_space_percent, formatted_free);
|
|
||||||
else
|
|
||||||
return glnx_throw (error, "min-free-space-size %" G_GUINT64_FORMAT "MB would be exceeded, %s available",
|
|
||||||
self->min_free_space_mb, formatted_free);
|
|
||||||
}
|
}
|
||||||
g_mutex_unlock (&self->txn_lock);
|
g_mutex_unlock (&self->txn_lock);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue