[gnome-disk-utility] lvm2: Implement activate() and deactivate() GduDrive methods
- From: David Zeuthen <davidz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-disk-utility] lvm2: Implement activate() and deactivate() GduDrive methods
- Date: Fri, 19 Feb 2010 20:10:43 +0000 (UTC)
commit 3cf867240ed90d34d31abb0ad4a43d163e6cc08b
Author: David Zeuthen <davidz redhat com>
Date: Fri Feb 19 12:49:50 2010 -0500
lvm2: Implement activate() and deactivate() GduDrive methods
These methods are used by the GVfs gdu volume monitor.
Signed-off-by: David Zeuthen <davidz redhat com>
src/gdu/gdu-linux-lvm2-volume-group.c | 92 +++++++++++++++++++++++++++++++++
1 files changed, 92 insertions(+), 0 deletions(-)
---
diff --git a/src/gdu/gdu-linux-lvm2-volume-group.c b/src/gdu/gdu-linux-lvm2-volume-group.c
index f7a9225..269968d 100644
--- a/src/gdu/gdu-linux-lvm2-volume-group.c
+++ b/src/gdu/gdu-linux-lvm2-volume-group.c
@@ -60,6 +60,14 @@ static gboolean gdu_linux_lvm2_volume_group_is_activatable (GduDrive *drive);
static gboolean gdu_linux_lvm2_volume_group_can_deactivate (GduDrive *drive);
static gboolean gdu_linux_lvm2_volume_group_can_activate (GduDrive *drive, gboolean *out_degraded);
+static void gdu_linux_lvm2_volume_group_activate (GduDrive *drive,
+ GduDriveActivateFunc callback,
+ gpointer user_data);
+
+static void gdu_linux_lvm2_volume_group_deactivate (GduDrive *drive,
+ GduDriveDeactivateFunc callback,
+ gpointer user_data);
+
static gboolean gdu_linux_lvm2_volume_group_can_create_volume (GduDrive *drive,
gboolean *out_is_uninitialized,
guint64 *out_largest_contiguous_free_segment,
@@ -133,6 +141,8 @@ gdu_linux_lvm2_volume_group_class_init (GduLinuxLvm2VolumeGroupClass *klass)
drive_class->can_create_volume = gdu_linux_lvm2_volume_group_can_create_volume;
drive_class->create_volume = gdu_linux_lvm2_volume_group_create_volume;
drive_class->create_volume_finish = gdu_linux_lvm2_volume_group_create_volume_finish;
+ drive_class->activate = gdu_linux_lvm2_volume_group_activate;
+ drive_class->deactivate = gdu_linux_lvm2_volume_group_deactivate;
}
static void
@@ -969,3 +979,85 @@ gdu_linux_lvm2_volume_group_get_compute_new_lv_name (GduLinuxLvm2VolumeGroup *vg
return g_string_free (s, FALSE);
}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+typedef struct
+{
+ GduDrive *drive;
+ GduDriveActivateFunc callback;
+ gpointer user_data;
+} VGStartData;
+
+static void
+vg_start_cb (GduPool *pool,
+ GError *error,
+ gpointer user_data)
+{
+ VGStartData *data = user_data;
+
+ data->callback (data->drive, NULL, error, data->user_data);
+ g_object_unref (data->drive);
+ g_free (data);
+}
+
+static void
+gdu_linux_lvm2_volume_group_activate (GduDrive *drive,
+ GduDriveActivateFunc callback,
+ gpointer user_data)
+{
+ GduLinuxLvm2VolumeGroup *vg = GDU_LINUX_LVM2_VOLUME_GROUP (drive);
+ VGStartData *data;
+
+ data = g_new0 (VGStartData, 1);
+ data->drive = g_object_ref (drive);
+ data->callback = callback;
+ data->user_data = user_data;
+
+ gdu_pool_op_linux_lvm2_vg_start (vg->priv->pool,
+ vg->priv->uuid,
+ vg_start_cb,
+ data);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+typedef struct
+{
+ GduDrive *drive;
+ GduDriveDeactivateFunc callback;
+ gpointer user_data;
+} VGStopData;
+
+static void
+vg_stop_cb (GduPool *pool,
+ GError *error,
+ gpointer user_data)
+{
+ VGStopData *data = user_data;
+
+ data->callback (data->drive, error, data->user_data);
+ g_object_unref (data->drive);
+ g_free (data);
+}
+
+static void
+gdu_linux_lvm2_volume_group_deactivate (GduDrive *drive,
+ GduDriveDeactivateFunc callback,
+ gpointer user_data)
+{
+ GduLinuxLvm2VolumeGroup *vg = GDU_LINUX_LVM2_VOLUME_GROUP (drive);
+ VGStopData *data;
+
+ data = g_new0 (VGStopData, 1);
+ data->drive = g_object_ref (drive);
+ data->callback = callback;
+ data->user_data = user_data;
+
+ gdu_pool_op_linux_lvm2_vg_stop (vg->priv->pool,
+ vg->priv->uuid,
+ vg_stop_cb,
+ data);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]