lib/repo: Do free space math under lock in error path
We were referencing the txn bits outside of the lock in the error path. Generally shouldn't matter, but e.g. Rust wouldn't let us do this, and race detector tooling will warn about it. Closes: #1632 Approved by: jlebon
This commit is contained in:
parent
acab2c1ac6
commit
5e9d382811
|
|
@ -896,8 +896,9 @@ write_content_object (OstreeRepo *self,
|
||||||
const fsblkcnt_t object_blocks = (size / self->txn.blocksize) + 1;
|
const fsblkcnt_t object_blocks = (size / self->txn.blocksize) + 1;
|
||||||
if (object_blocks > self->txn.max_blocks)
|
if (object_blocks > self->txn.max_blocks)
|
||||||
{
|
{
|
||||||
|
guint64 bytes_required = (guint64)object_blocks * self->txn.blocksize;
|
||||||
g_mutex_unlock (&self->txn_lock);
|
g_mutex_unlock (&self->txn_lock);
|
||||||
g_autofree char *formatted_required = g_format_size ((guint64)object_blocks * self->txn.blocksize);
|
g_autofree char *formatted_required = g_format_size (bytes_required);
|
||||||
if (self->min_free_space_percent > 0)
|
if (self->min_free_space_percent > 0)
|
||||||
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s more required",
|
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s more required",
|
||||||
self->min_free_space_percent, formatted_required);
|
self->min_free_space_percent, formatted_required);
|
||||||
|
|
@ -1609,8 +1610,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;
|
||||||
g_mutex_unlock (&self->txn_lock);
|
g_mutex_unlock (&self->txn_lock);
|
||||||
g_autofree char *formatted_free = g_format_size (bfree * self->txn.blocksize);
|
g_autofree char *formatted_free = g_format_size (bytes_required);
|
||||||
if (self->min_free_space_percent > 0)
|
if (self->min_free_space_percent > 0)
|
||||||
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s available",
|
return glnx_throw (error, "min-free-space-percent '%u%%' would be exceeded, %s available",
|
||||||
self->min_free_space_percent, formatted_free);
|
self->min_free_space_percent, formatted_free);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue