static void on_create_logical_volume (StorageDaemon *daemon, StorageLogicalVolume *volume, gpointer user_data) { CompleteClosure *complete = user_data; if (g_str_equal (storage_logical_volume_get_name (volume), complete->wait_name) && storage_logical_volume_get_volume_group (volume) == STORAGE_VOLUME_GROUP (complete->wait_thing)) { /* All creates have the same signature */ lvm_volume_group_complete_create_plain_volume (NULL, complete->invocation, storage_logical_volume_get_object_path (volume)); g_signal_handler_disconnect (daemon, complete->wait_sig); } }
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); } } }