Merge pull request #2077 from jlebon/pr/transaction-cleanup
lib/commit: Check that dirent is a directory before cleaning
This commit is contained in:
commit
7d51cee0a8
|
|
@ -1943,6 +1943,9 @@ cleanup_txn_dir (OstreeRepo *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
const char *errprefix = glnx_strjoina ("Cleaning up txn dir ", path);
|
||||||
|
GLNX_AUTO_PREFIX_ERROR (errprefix, error);
|
||||||
|
|
||||||
g_auto(GLnxLockFile) lockfile = { 0, };
|
g_auto(GLnxLockFile) lockfile = { 0, };
|
||||||
gboolean did_lock;
|
gboolean did_lock;
|
||||||
|
|
||||||
|
|
@ -2008,7 +2011,7 @@ cleanup_tmpdir (OstreeRepo *self,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Handle transaction tmpdirs */
|
/* Handle transaction tmpdirs */
|
||||||
if (_ostree_repo_is_locked_tmpdir (dent->d_name))
|
if (_ostree_repo_has_staging_prefix (dent->d_name) && S_ISDIR (stbuf.st_mode))
|
||||||
{
|
{
|
||||||
if (!cleanup_txn_dir (self, dfd_iter.fd, dent->d_name, cancellable, error))
|
if (!cleanup_txn_dir (self, dfd_iter.fd, dent->d_name, cancellable, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,7 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
_ostree_repo_is_locked_tmpdir (const char *filename);
|
_ostree_repo_has_staging_prefix (const char *filename);
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
_ostree_repo_try_lock_tmpdir (int tmpdir_dfd,
|
_ostree_repo_try_lock_tmpdir (int tmpdir_dfd,
|
||||||
|
|
|
||||||
|
|
@ -5959,7 +5959,7 @@ _ostree_repo_maybe_regenerate_summary (OstreeRepo *self,
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
_ostree_repo_is_locked_tmpdir (const char *filename)
|
_ostree_repo_has_staging_prefix (const char *filename)
|
||||||
{
|
{
|
||||||
return g_str_has_prefix (filename, OSTREE_REPO_TMPDIR_STAGING);
|
return g_str_has_prefix (filename, OSTREE_REPO_TMPDIR_STAGING);
|
||||||
}
|
}
|
||||||
|
|
@ -6019,7 +6019,7 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (_ostree_repo_is_locked_tmpdir (tmpdir_prefix), FALSE);
|
g_return_val_if_fail (_ostree_repo_has_staging_prefix (tmpdir_prefix), FALSE);
|
||||||
|
|
||||||
/* Look for existing tmpdir (with same prefix) to reuse */
|
/* Look for existing tmpdir (with same prefix) to reuse */
|
||||||
g_auto(GLnxDirFdIterator) dfd_iter = { 0, };
|
g_auto(GLnxDirFdIterator) dfd_iter = { 0, };
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue