void storage_block_update_pv (StorageBlock *self, StorageVolumeGroup *group, GVariant *pv_info) { StorageDaemon *daemon; g_return_if_fail (STORAGE_IS_BLOCK (self)); daemon = storage_daemon_get (); if (group) { if (self->iface_physical_volume == NULL) { self->iface_physical_volume = storage_physical_volume_new (); storage_physical_volume_update (self->iface_physical_volume, group, pv_info); storage_daemon_publish (daemon, storage_block_get_object_path (self), FALSE, self->iface_physical_volume); } else { storage_physical_volume_update (self->iface_physical_volume, group, pv_info); } } else { if (self->iface_physical_volume != NULL) { storage_daemon_unpublish (daemon, storage_block_get_object_path (self), self->iface_physical_volume); g_object_unref (self->iface_physical_volume); self->iface_physical_volume = NULL; } } }
static void storage_volume_group_dispose (GObject *obj) { StorageVolumeGroup *self = STORAGE_VOLUME_GROUP (obj); GHashTableIter iter; const gchar *path; gpointer value; self->need_publish = FALSE; /* Dispose all the volumes, should unpublish */ g_hash_table_iter_init (&iter, self->logical_volumes); while (g_hash_table_iter_next (&iter, NULL, &value)) g_object_run_dispose (value); g_hash_table_remove_all (self->logical_volumes); g_hash_table_remove_all (self->physical_volumes); if (self->info) { g_variant_unref (self->info); self->info = NULL; } update_all_blocks (self); path = storage_volume_group_get_object_path (self); if (path != NULL) storage_daemon_unpublish (storage_daemon_get (), path, self); G_OBJECT_CLASS (storage_volume_group_parent_class)->dispose (obj); }
static void storage_block_dispose (GObject *object) { StorageBlock *self = STORAGE_BLOCK (object); StorageDaemon *daemon; daemon = storage_daemon_get (); if (self->iface_physical_volume) { storage_daemon_unpublish (daemon, storage_block_get_object_path (self), self->iface_physical_volume); g_object_unref (self->iface_physical_volume); self->iface_physical_volume = NULL; } if (self->iface_logical_volume) { storage_daemon_unpublish (daemon, storage_block_get_object_path (self), self->iface_logical_volume); g_object_unref (self->iface_logical_volume); self->iface_logical_volume = NULL; } G_OBJECT_CLASS (storage_block_parent_class)->dispose (object); }
void storage_block_update_lv (StorageBlock *self, StorageLogicalVolume *lv) { const gchar *logical_volume_path; StorageDaemon *daemon; g_return_if_fail (STORAGE_IS_BLOCK (self)); daemon = storage_daemon_get (); if (lv == NULL) { if (self->iface_logical_volume) { storage_daemon_unpublish (daemon, storage_block_get_object_path (self), self->iface_logical_volume); g_object_unref (self->iface_logical_volume); self->iface_logical_volume = NULL; } } else { logical_volume_path = storage_logical_volume_get_object_path (lv); if (self->iface_logical_volume) { lvm_logical_volume_block_set_logical_volume (self->iface_logical_volume, logical_volume_path); } else { self->iface_logical_volume = lvm_logical_volume_block_skeleton_new (); lvm_logical_volume_block_set_logical_volume (self->iface_logical_volume, logical_volume_path); storage_daemon_publish (daemon, storage_block_get_object_path (self), FALSE, self->iface_logical_volume); } } }