コード例 #1
0
ファイル: block.c プロジェクト: mvollmer/storaged
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;
        }
    }

}
コード例 #2
0
ファイル: volumegroup.c プロジェクト: carriercomm/storaged-1
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);
}
コード例 #3
0
ファイル: block.c プロジェクト: mvollmer/storaged
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);
}
コード例 #4
0
ファイル: block.c プロジェクト: mvollmer/storaged
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);
        }
    }
}