sysroot: Add an unload() API

This will be used by gnome-continuous at least to drop the reference
to the fd so that unmounting can proceed.  See
https://git.gnome.org/browse/gnome-continuous/commit/?id=95e9910ea288d302509ca667e0d190dd89377dd5
This commit is contained in:
Colin Walters 2015-08-13 12:43:14 -04:00
parent 3861b79efd
commit 5c20ea920e
2 changed files with 21 additions and 2 deletions

View File

@ -72,8 +72,7 @@ ostree_sysroot_finalize (GObject *object)
glnx_release_lock_file (&self->lock);
if (self->sysroot_fd != -1)
(void) close (self->sysroot_fd);
(void) ostree_sysroot_unload (self);
G_OBJECT_CLASS (ostree_sysroot_parent_class)->finalize (object);
}
@ -223,6 +222,24 @@ ostree_sysroot_get_fd (OstreeSysroot *self)
return self->sysroot_fd;
}
/**
* ostree_sysroot_unload:
* @self: Sysroot
*
* Release any resources such as file descriptors referring to the
* root directory of this sysroot. Normally, those resources are
* cleared by finalization, but in garbage collected languages that
* may not be predictable.
*
* This undoes the effect of `ostree_sysroot_load()`.
*/
void
ostree_sysroot_unload (OstreeSysroot *self)
{
if (self->sysroot_fd != -1)
(void) close (self->sysroot_fd);
}
/**
* ostree_sysroot_ensure_initialized:
* @self: Sysroot

View File

@ -45,6 +45,8 @@ gboolean ostree_sysroot_load (OstreeSysroot *self,
GCancellable *cancellable,
GError **error);
void ostree_sysroot_unload (OstreeSysroot *self);
gboolean ostree_sysroot_ensure_initialized (OstreeSysroot *self,
GCancellable *cancellable,
GError **error);