[ostree] sysroot: Add an unload() API
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] sysroot: Add an unload() API
- Date: Thu, 13 Aug 2015 16:45:54 +0000 (UTC)
commit 5c20ea920e0986686b3bd680a43a1ab1cdde37ea
Author: Colin Walters <walters verbum org>
Date: Thu Aug 13 12:43:14 2015 -0400
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
src/libostree/ostree-sysroot.c | 21 +++++++++++++++++++--
src/libostree/ostree-sysroot.h | 2 ++
2 files changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c
index c7b3e47..7a4686d 100644
--- a/src/libostree/ostree-sysroot.c
+++ b/src/libostree/ostree-sysroot.c
@@ -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);
}
@@ -224,6 +223,24 @@ ostree_sysroot_get_fd (OstreeSysroot *self)
}
/**
+ * 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
* @cancellable: Cancellable
diff --git a/src/libostree/ostree-sysroot.h b/src/libostree/ostree-sysroot.h
index ce128bb..2fbc23b 100644
--- a/src/libostree/ostree-sysroot.h
+++ b/src/libostree/ostree-sysroot.h
@@ -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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]