Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > 0a67499d76b7ed32632abafb78e24a2f > files > 144

libvirt-docs-5.5.0-1.3.mga7.armv7hl.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <!--
        This file is autogenerated from html/libvirt-libvirt-storage.html.in
        Do not edit this file. Changes will be lost.
      -->
  <!--
        This page was generated at Sun Jun 30 20:35:18 UTC 2019.
      -->
  <head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <link rel="stylesheet" type="text/css" href="../main.css"/>
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/>
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/>
    <link rel="manifest" href="/manifest.json"/>
    <meta name="theme-color" content="#ffffff"/>
    <title>libvirt: Module libvirt-storage from libvirt</title>
    <meta name="description" content="libvirt, virtualization, virtualization API"/>
    <script type="text/javascript" src="../js/main.js">
      <!--// forces non-empty element-->
    </script>
  </head>
  <body onload="pageload()">
    <div id="body">
      <div id="content">
        <h1>Module libvirt-storage from libvirt</h1>
        <p>Provides APIs for the management of storage pools and volumes Copyright (C) 2006-2016 Red Hat, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p>
        <h2>Table of Contents</h2>
        <h3>
          <a href="#macros">Macros</a>
        </h3>
        <pre class="api"><span class="directive">#define</span> <a href="#VIR_STORAGE_POOL_EVENT_CALLBACK">VIR_STORAGE_POOL_EVENT_CALLBACK</a>
</pre>
        <h3>
          <a href="#types">Types</a>
        </h3>
        <pre class="api"><span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virConnectListAllStoragePoolsFlags">virConnectListAllStoragePoolsFlags</a>
<span class="keyword">typedef</span> <span class="type">struct _virStoragePool</span> <a href="#virStoragePool">virStoragePool</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStoragePoolBuildFlags">virStoragePoolBuildFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStoragePoolCreateFlags">virStoragePoolCreateFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStoragePoolDeleteFlags">virStoragePoolDeleteFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStoragePoolEventID">virStoragePoolEventID</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStoragePoolEventLifecycleType">virStoragePoolEventLifecycleType</a>
<span class="keyword">typedef</span> <span class="type">struct _virStoragePoolInfo</span> <a href="#virStoragePoolInfo">virStoragePoolInfo</a>
<span class="keyword">typedef</span> <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolInfo">virStoragePoolInfo</a> *</span> <a name="virStoragePoolInfoPtr">virStoragePoolInfoPtr</a>
<span class="keyword">typedef</span> <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePool">virStoragePool</a> *</span> <a name="virStoragePoolPtr">virStoragePoolPtr</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStoragePoolState">virStoragePoolState</a>
<span class="keyword">typedef</span> <span class="type">struct _virStorageVol</span> <a href="#virStorageVol">virStorageVol</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolCreateFlags">virStorageVolCreateFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolDeleteFlags">virStorageVolDeleteFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolDownloadFlags">virStorageVolDownloadFlags</a>
<span class="keyword">typedef</span> <span class="type">struct _virStorageVolInfo</span> <a href="#virStorageVolInfo">virStorageVolInfo</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolInfoFlags">virStorageVolInfoFlags</a>
<span class="keyword">typedef</span> <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolInfo">virStorageVolInfo</a> *</span> <a name="virStorageVolInfoPtr">virStorageVolInfoPtr</a>
<span class="keyword">typedef</span> <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVol">virStorageVol</a> *</span> <a name="virStorageVolPtr">virStorageVolPtr</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolResizeFlags">virStorageVolResizeFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolType">virStorageVolType</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolUploadFlags">virStorageVolUploadFlags</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageVolWipeAlgorithm">virStorageVolWipeAlgorithm</a>
<span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virStorageXMLFlags">virStorageXMLFlags</a>
</pre>
        <h3>
          <a href="#functions">Functions</a>
        </h3>
        <pre class="api"><span class="type">char *</span>	<a href="#virConnectFindStoragePoolSources">virConnectFindStoragePoolSources</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type">const char *</span> type, <br/>						 <span class="type">const char *</span> srcSpec, <br/>						 <span class="type">unsigned int</span> flags)
<span class="type">char *</span>	<a href="#virConnectGetStoragePoolCapabilities">virConnectGetStoragePoolCapabilities</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virConnectListAllStoragePools">virConnectListAllStoragePools</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>					 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> **</span> pools, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virConnectListDefinedStoragePools">virConnectListDefinedStoragePools</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type">char ** const</span> names, <br/>						 <span class="type">int</span> maxnames)
<span class="type">int</span>	<a href="#virConnectListStoragePools">virConnectListStoragePools</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>					 <span class="type">char ** const</span> names, <br/>					 <span class="type">int</span> maxnames)
<span class="type">int</span>	<a href="#virConnectNumOfDefinedStoragePools">virConnectNumOfDefinedStoragePools</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn)
<span class="type">int</span>	<a href="#virConnectNumOfStoragePools">virConnectNumOfStoragePools</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn)
<span class="type">int</span>	<a href="#virConnectStoragePoolEventDeregisterAny">virConnectStoragePoolEventDeregisterAny</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type">int</span> callbackID)
<span class="keyword">typedef</span> <a href="#virConnectStoragePoolEventGenericCallback">virConnectStoragePoolEventGenericCallback</a>
<span class="type">void</span>	<a href="#virConnectStoragePoolEventGenericCallback">virConnectStoragePoolEventGenericCallback</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>							 <span class="type">void *</span> opaque)

<span class="keyword">typedef</span> <a href="#virConnectStoragePoolEventLifecycleCallback">virConnectStoragePoolEventLifecycleCallback</a>
<span class="type">void</span>	<a href="#virConnectStoragePoolEventLifecycleCallback">virConnectStoragePoolEventLifecycleCallback</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>							 <span class="type">int</span> event, <br/>							 <span class="type">int</span> detail, <br/>							 <span class="type">void *</span> opaque)

<span class="type">int</span>	<a href="#virConnectStoragePoolEventRegisterAny">virConnectStoragePoolEventRegisterAny</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>						 <span class="type">int</span> eventID, <br/>						 <span class="type"><a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventGenericCallback">virConnectStoragePoolEventGenericCallback</a></span> cb, <br/>						 <span class="type">void *</span> opaque, <br/>						 <span class="type"><a href="libvirt-libvirt-common.html#virFreeCallback">virFreeCallback</a></span> freecb)
<span class="type">int</span>	<a href="#virStoragePoolBuild">virStoragePoolBuild</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStoragePoolCreate">virStoragePoolCreate</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolCreateXML">virStoragePoolCreateXML</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type">const char *</span> xmlDesc, <br/>						 <span class="type">unsigned int</span> flags)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolDefineXML">virStoragePoolDefineXML</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>						 <span class="type">const char *</span> xml, <br/>						 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStoragePoolDelete">virStoragePoolDelete</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStoragePoolDestroy">virStoragePoolDestroy</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolFree">virStoragePoolFree</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolGetAutostart">virStoragePoolGetAutostart</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">int *</span> autostart)
<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span>	<a href="#virStoragePoolGetConnect">virStoragePoolGetConnect</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolGetInfo">virStoragePoolGetInfo</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a></span> info)
<span class="type">const char *</span>	<a href="#virStoragePoolGetName">virStoragePoolGetName</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolGetUUID">virStoragePoolGetUUID</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">unsigned char *</span> uuid)
<span class="type">int</span>	<a href="#virStoragePoolGetUUIDString">virStoragePoolGetUUIDString</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">char *</span> buf)
<span class="type">char *</span>	<a href="#virStoragePoolGetXMLDesc">virStoragePoolGetXMLDesc</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStoragePoolIsActive">virStoragePoolIsActive</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolIsPersistent">virStoragePoolIsPersistent</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolListAllVolumes">virStoragePoolListAllVolumes</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a> **</span> vols, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStoragePoolListVolumes">virStoragePoolListVolumes</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">char ** const</span> names, <br/>					 <span class="type">int</span> maxnames)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolLookupByName">virStoragePoolLookupByName</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type">const char *</span> name)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolLookupByTargetPath">virStoragePoolLookupByTargetPath</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type">const char *</span> path)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolLookupByUUID">virStoragePoolLookupByUUID</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type">const unsigned char *</span> uuid)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolLookupByUUIDString">virStoragePoolLookupByUUIDString</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type">const char *</span> uuidstr)
<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	<a href="#virStoragePoolLookupByVolume">virStoragePoolLookupByVolume</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type">int</span>	<a href="#virStoragePoolNumOfVolumes">virStoragePoolNumOfVolumes</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolRef">virStoragePoolRef</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type">int</span>	<a href="#virStoragePoolRefresh">virStoragePoolRefresh</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStoragePoolSetAutostart">virStoragePoolSetAutostart</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>					 <span class="type">int</span> autostart)
<span class="type">int</span>	<a href="#virStoragePoolUndefine">virStoragePoolUndefine</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)
<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	<a href="#virStorageVolCreateXML">virStorageVolCreateXML</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>						 <span class="type">const char *</span> xmlDesc, <br/>						 <span class="type">unsigned int</span> flags)
<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	<a href="#virStorageVolCreateXMLFrom">virStorageVolCreateXMLFrom</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>							 <span class="type">const char *</span> xmlDesc, <br/>							 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> clonevol, <br/>							 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStorageVolDelete">virStorageVolDelete</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStorageVolDownload">virStorageVolDownload</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type"><a href="libvirt-libvirt-host.html#virStreamPtr">virStreamPtr</a></span> stream, <br/>					 <span class="type">unsigned long long</span> offset, <br/>					 <span class="type">unsigned long long</span> length, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStorageVolFree">virStorageVolFree</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span>	<a href="#virStorageVolGetConnect">virStorageVolGetConnect</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type">int</span>	<a href="#virStorageVolGetInfo">virStorageVolGetInfo</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a></span> info)
<span class="type">int</span>	<a href="#virStorageVolGetInfoFlags">virStorageVolGetInfoFlags</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a></span> info, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">const char *</span>	<a href="#virStorageVolGetKey">virStorageVolGetKey</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type">const char *</span>	<a href="#virStorageVolGetName">virStorageVolGetName</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type">char *</span>	<a href="#virStorageVolGetPath">virStorageVolGetPath</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type">char *</span>	<a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	<a href="#virStorageVolLookupByKey">virStorageVolLookupByKey</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type">const char *</span> key)
<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	<a href="#virStorageVolLookupByName">virStorageVolLookupByName</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool, <br/>							 <span class="type">const char *</span> name)
<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	<a href="#virStorageVolLookupByPath">virStorageVolLookupByPath</a>	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/>							 <span class="type">const char *</span> path)
<span class="type">int</span>	<a href="#virStorageVolRef">virStorageVolRef</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)
<span class="type">int</span>	<a href="#virStorageVolResize">virStorageVolResize</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type">unsigned long long</span> capacity, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStorageVolUpload">virStorageVolUpload</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type"><a href="libvirt-libvirt-host.html#virStreamPtr">virStreamPtr</a></span> stream, <br/>					 <span class="type">unsigned long long</span> offset, <br/>					 <span class="type">unsigned long long</span> length, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStorageVolWipe">virStorageVolWipe</a>		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type">unsigned int</span> flags)
<span class="type">int</span>	<a href="#virStorageVolWipePattern">virStorageVolWipePattern</a>	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol, <br/>					 <span class="type">unsigned int</span> algorithm, <br/>					 <span class="type">unsigned int</span> flags)
</pre>
        <h2>Description</h2>
        <h3>
          <a name="macros">Macros</a>
        </h3>
        <h3>
          <a name="VIR_STORAGE_POOL_EVENT_CALLBACK">
            <code>VIR_STORAGE_POOL_EVENT_CALLBACK</code>
          </a>
        </h3>
        <pre class="api"><span class="directive">#define</span> VIR_STORAGE_POOL_EVENT_CALLBACK</pre>
        <div class="description">
          <p>Used to cast the event specific callback into the generic one for use for <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventRegisterAny">virConnectStoragePoolEventRegisterAny</a>()</p>
        </div>
        <h3>
          <a name="types">Types</a>
        </h3>
        <h3>
          <a name="virConnectListAllStoragePoolsFlags">
            <code>virConnectListAllStoragePoolsFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virConnectListAllStoragePoolsFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE">VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE">VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">2 (0x2; 1 &lt;&lt; 1)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT">VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">4 (0x4; 1 &lt;&lt; 2)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT">VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">8 (0x8; 1 &lt;&lt; 3)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART">VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">16 (0x10; 1 &lt;&lt; 4)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART">VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART</a>
              </td>
              <td> = </td>
              <td class="enumvalue">32 (0x20; 1 &lt;&lt; 5)</td>
              <td>
                <div class="comment">List pools by type</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_DIR">VIR_CONNECT_LIST_STORAGE_POOLS_DIR</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">64 (0x40; 1 &lt;&lt; 6)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_FS">VIR_CONNECT_LIST_STORAGE_POOLS_FS</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">128 (0x80; 1 &lt;&lt; 7)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_NETFS">VIR_CONNECT_LIST_STORAGE_POOLS_NETFS</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">256 (0x100; 1 &lt;&lt; 8)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL">VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">512 (0x200; 1 &lt;&lt; 9)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_DISK">VIR_CONNECT_LIST_STORAGE_POOLS_DISK</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">1024 (0x400; 1 &lt;&lt; 10)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI">VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">2048 (0x800; 1 &lt;&lt; 11)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_SCSI">VIR_CONNECT_LIST_STORAGE_POOLS_SCSI</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">4096 (0x1000; 1 &lt;&lt; 12)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_MPATH">VIR_CONNECT_LIST_STORAGE_POOLS_MPATH</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">8192 (0x2000; 1 &lt;&lt; 13)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_RBD">VIR_CONNECT_LIST_STORAGE_POOLS_RBD</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">16384 (0x4000; 1 &lt;&lt; 14)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG">VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">32768 (0x8000; 1 &lt;&lt; 15)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER">VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">65536 (0x10000; 1 &lt;&lt; 16)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_ZFS">VIR_CONNECT_LIST_STORAGE_POOLS_ZFS</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">131072 (0x20000; 1 &lt;&lt; 17)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE">VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">262144 (0x40000; 1 &lt;&lt; 18)</td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStoragePool">
            <code>virStoragePool</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">struct </span>virStoragePool {
</pre>
          <div class="undisclosed">The content of this structure is not made public by the API</div>
          <pre>
}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolBuildFlags">
            <code>virStoragePoolBuildFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStoragePoolBuildFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_BUILD_NEW">VIR_STORAGE_POOL_BUILD_NEW</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Regular build from scratch</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_BUILD_REPAIR">VIR_STORAGE_POOL_BUILD_REPAIR</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">Repair / reinitialize</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_BUILD_RESIZE">VIR_STORAGE_POOL_BUILD_RESIZE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2; 1 &lt;&lt; 1)</td>
              <td>
                <div class="comment">Extend existing pool</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_BUILD_NO_OVERWRITE">VIR_STORAGE_POOL_BUILD_NO_OVERWRITE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">4 (0x4; 1 &lt;&lt; 2)</td>
              <td>
                <div class="comment">Do not overwrite existing pool</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_BUILD_OVERWRITE">VIR_STORAGE_POOL_BUILD_OVERWRITE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">8 (0x8; 1 &lt;&lt; 3)</td>
              <td>
                <div class="comment">Overwrite data</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolCreateFlags">
            <code>virStoragePoolCreateFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStoragePoolCreateFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_CREATE_NORMAL">VIR_STORAGE_POOL_CREATE_NORMAL</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Create the pool and perform pool build without any flags</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_CREATE_WITH_BUILD">VIR_STORAGE_POOL_CREATE_WITH_BUILD</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">Create the pool and perform pool build using the <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_BUILD_OVERWRITE">VIR_STORAGE_POOL_BUILD_OVERWRITE</a> flag. This is mutually exclusive to <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE">VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE</a></div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE">VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2; 1 &lt;&lt; 1)</td>
              <td>
                <div class="comment">Create the pool and perform pool build using the <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_BUILD_NO_OVERWRITE">VIR_STORAGE_POOL_BUILD_NO_OVERWRITE</a> flag. This is mutually exclusive to <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE">VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE</a></div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE">VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">4 (0x4; 1 &lt;&lt; 2)</td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolDeleteFlags">
            <code>virStoragePoolDeleteFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStoragePoolDeleteFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_DELETE_NORMAL">VIR_STORAGE_POOL_DELETE_NORMAL</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Delete metadata only (fast)</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_DELETE_ZEROED">VIR_STORAGE_POOL_DELETE_ZEROED</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">Clear all data to zeros (slow)</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolEventID">
            <code>virStoragePoolEventID</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStoragePoolEventID {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE">VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">
                  <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventLifecycleCallback">virConnectStoragePoolEventLifecycleCallback</a>
                </div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_ID_REFRESH">VIR_STORAGE_POOL_EVENT_ID_REFRESH</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1)</td>
              <td>
                <div class="comment">
                  <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventGenericCallback">virConnectStoragePoolEventGenericCallback</a>
                </div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_ID_LAST">VIR_STORAGE_POOL_EVENT_ID_LAST</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2)</td>
              <td>
                <div class="comment">NB: this enum value will increase over time as new events are added to the libvirt API. It reflects the last event ID supported by this version of the libvirt API.</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolEventLifecycleType">
            <code>virStoragePoolEventLifecycleType</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStoragePoolEventLifecycleType {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_DEFINED">VIR_STORAGE_POOL_EVENT_DEFINED</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">0 (0x0)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_UNDEFINED">VIR_STORAGE_POOL_EVENT_UNDEFINED</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">1 (0x1)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_STARTED">VIR_STORAGE_POOL_EVENT_STARTED</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">2 (0x2)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_STOPPED">VIR_STORAGE_POOL_EVENT_STOPPED</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">3 (0x3)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_CREATED">VIR_STORAGE_POOL_EVENT_CREATED</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">4 (0x4)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_DELETED">VIR_STORAGE_POOL_EVENT_DELETED</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">5 (0x5)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_EVENT_LAST">VIR_STORAGE_POOL_EVENT_LAST</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">6 (0x6)</td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolInfo">
            <code>virStoragePoolInfo</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">struct </span>virStoragePoolInfo {
</pre>
          <table>
            <tr>
              <td>
                <span class="type">int</span>
              </td>
              <td>state</td>
              <td>
                <div class="comment"><a href="libvirt-libvirt-storage.html#virStoragePoolState">virStoragePoolState</a> flags</div>
              </td>
            </tr>
            <tr>
              <td>
                <span class="type">unsigned long long</span>
              </td>
              <td>capacity</td>
              <td>
                <div class="comment">Logical size bytes</div>
              </td>
            </tr>
            <tr>
              <td>
                <span class="type">unsigned long long</span>
              </td>
              <td>allocation</td>
              <td>
                <div class="comment">Current allocation bytes</div>
              </td>
            </tr>
            <tr>
              <td>
                <span class="type">unsigned long long</span>
              </td>
              <td>available</td>
              <td>
                <div class="comment">Remaining free space bytes</div>
              </td>
            </tr>
          </table>
          <pre>
}
</pre>
        </div>
        <h3>
          <a name="virStoragePoolState">
            <code>virStoragePoolState</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStoragePoolState {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_INACTIVE">VIR_STORAGE_POOL_INACTIVE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Not running</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_BUILDING">VIR_STORAGE_POOL_BUILDING</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1)</td>
              <td>
                <div class="comment">Initializing pool, not available</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_RUNNING">VIR_STORAGE_POOL_RUNNING</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2)</td>
              <td>
                <div class="comment">Running normally</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_DEGRADED">VIR_STORAGE_POOL_DEGRADED</a>
              </td>
              <td> = </td>
              <td class="enumvalue">3 (0x3)</td>
              <td>
                <div class="comment">Running degraded</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_INACCESSIBLE">VIR_STORAGE_POOL_INACCESSIBLE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">4 (0x4)</td>
              <td>
                <div class="comment">Running, but not accessible</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_POOL_STATE_LAST">VIR_STORAGE_POOL_STATE_LAST</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">5 (0x5)</td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVol">
            <code>virStorageVol</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">struct </span>virStorageVol {
</pre>
          <div class="undisclosed">The content of this structure is not made public by the API</div>
          <pre>
}
</pre>
        </div>
        <h3>
          <a name="virStorageVolCreateFlags">
            <code>virStorageVolCreateFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolCreateFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA">VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_CREATE_REFLINK">VIR_STORAGE_VOL_CREATE_REFLINK</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2; 1 &lt;&lt; 1)</td>
              <td>
                <div class="comment">perform a btrfs lightweight copy</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolDeleteFlags">
            <code>virStorageVolDeleteFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolDeleteFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_DELETE_NORMAL">VIR_STORAGE_VOL_DELETE_NORMAL</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Delete metadata only (fast)</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_DELETE_ZEROED">VIR_STORAGE_VOL_DELETE_ZEROED</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">Clear all data to zeros (slow)</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS">VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2; 1 &lt;&lt; 1)</td>
              <td>
                <div class="comment">Force removal of volume, even if in use</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolDownloadFlags">
            <code>virStorageVolDownloadFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolDownloadFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_DOWNLOAD_SPARSE_STREAM">VIR_STORAGE_VOL_DOWNLOAD_SPARSE_STREAM</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">Use sparse stream</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolInfo">
            <code>virStorageVolInfo</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">struct </span>virStorageVolInfo {
</pre>
          <table>
            <tr>
              <td>
                <span class="type">int</span>
              </td>
              <td>type</td>
              <td>
                <div class="comment"><a href="libvirt-libvirt-storage.html#virStorageVolType">virStorageVolType</a> flags</div>
              </td>
            </tr>
            <tr>
              <td>
                <span class="type">unsigned long long</span>
              </td>
              <td>capacity</td>
              <td>
                <div class="comment">Logical size bytes</div>
              </td>
            </tr>
            <tr>
              <td>
                <span class="type">unsigned long long</span>
              </td>
              <td>allocation</td>
              <td>
                <div class="comment">Current allocation bytes</div>
              </td>
            </tr>
          </table>
          <pre>
}
</pre>
        </div>
        <h3>
          <a name="virStorageVolInfoFlags">
            <code>virStorageVolInfoFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolInfoFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_USE_ALLOCATION">VIR_STORAGE_VOL_USE_ALLOCATION</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Return the physical size in allocation</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_GET_PHYSICAL">VIR_STORAGE_VOL_GET_PHYSICAL</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolResizeFlags">
            <code>virStorageVolResizeFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolResizeFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_RESIZE_ALLOCATE">VIR_STORAGE_VOL_RESIZE_ALLOCATE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">force allocation of new size</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_RESIZE_DELTA">VIR_STORAGE_VOL_RESIZE_DELTA</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2; 1 &lt;&lt; 1)</td>
              <td>
                <div class="comment">size is relative to current</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_RESIZE_SHRINK">VIR_STORAGE_VOL_RESIZE_SHRINK</a>
              </td>
              <td> = </td>
              <td class="enumvalue">4 (0x4; 1 &lt;&lt; 2)</td>
              <td>
                <div class="comment">allow decrease in capacity</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolType">
            <code>virStorageVolType</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolType {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_FILE">VIR_STORAGE_VOL_FILE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">Regular file based volumes</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_BLOCK">VIR_STORAGE_VOL_BLOCK</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1)</td>
              <td>
                <div class="comment">Block based volumes</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_DIR">VIR_STORAGE_VOL_DIR</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2)</td>
              <td>
                <div class="comment">Directory-passthrough based volume</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_NETWORK">VIR_STORAGE_VOL_NETWORK</a>
              </td>
              <td> = </td>
              <td class="enumvalue">3 (0x3)</td>
              <td>
                <div class="comment">Network volumes like RBD (RADOS Block Device)</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_NETDIR">VIR_STORAGE_VOL_NETDIR</a>
              </td>
              <td> = </td>
              <td class="enumvalue">4 (0x4)</td>
              <td>
                <div class="comment">Network accessible directory that can contain other network volumes</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_PLOOP">VIR_STORAGE_VOL_PLOOP</a>
              </td>
              <td> = </td>
              <td class="enumvalue">5 (0x5)</td>
              <td>
                <div class="comment">Ploop based volumes</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_LAST">VIR_STORAGE_VOL_LAST</a>
              </td>
              <td> = </td>
              <td colspan="2" class="enumvalue">6 (0x6)</td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolUploadFlags">
            <code>virStorageVolUploadFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolUploadFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_UPLOAD_SPARSE_STREAM">VIR_STORAGE_VOL_UPLOAD_SPARSE_STREAM</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">Use sparse stream</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageVolWipeAlgorithm">
            <code>virStorageVolWipeAlgorithm</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageVolWipeAlgorithm {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_ZERO">VIR_STORAGE_VOL_WIPE_ALG_ZERO</a>
              </td>
              <td> = </td>
              <td class="enumvalue">0 (0x0)</td>
              <td>
                <div class="comment">1-pass, all zeroes</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_NNSA">VIR_STORAGE_VOL_WIPE_ALG_NNSA</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1)</td>
              <td>
                <div class="comment">4-pass NNSA Policy Letter NAP-14.1-C (XVI-8)</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_DOD">VIR_STORAGE_VOL_WIPE_ALG_DOD</a>
              </td>
              <td> = </td>
              <td class="enumvalue">2 (0x2)</td>
              <td>
                <div class="comment">4-pass DoD 5220.22-M section 8-306 procedure</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_BSI">VIR_STORAGE_VOL_WIPE_ALG_BSI</a>
              </td>
              <td> = </td>
              <td class="enumvalue">3 (0x3)</td>
              <td>
                <div class="comment">9-pass method recommended by the German Center of Security in Information Technologies</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_GUTMANN">VIR_STORAGE_VOL_WIPE_ALG_GUTMANN</a>
              </td>
              <td> = </td>
              <td class="enumvalue">4 (0x4)</td>
              <td>
                <div class="comment">The canonical 35-pass sequence</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_SCHNEIER">VIR_STORAGE_VOL_WIPE_ALG_SCHNEIER</a>
              </td>
              <td> = </td>
              <td class="enumvalue">5 (0x5)</td>
              <td>
                <div class="comment">7-pass method described by Bruce Schneier in "Applied Cryptography" (1996)</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7">VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7</a>
              </td>
              <td> = </td>
              <td class="enumvalue">6 (0x6)</td>
              <td>
                <div class="comment">7-pass random</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33">VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33</a>
              </td>
              <td> = </td>
              <td class="enumvalue">7 (0x7)</td>
              <td>
                <div class="comment">33-pass random</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_RANDOM">VIR_STORAGE_VOL_WIPE_ALG_RANDOM</a>
              </td>
              <td> = </td>
              <td class="enumvalue">8 (0x8)</td>
              <td>
                <div class="comment">1-pass random</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_TRIM">VIR_STORAGE_VOL_WIPE_ALG_TRIM</a>
              </td>
              <td> = </td>
              <td class="enumvalue">9 (0x9)</td>
              <td>
                <div class="comment">1-pass, trim all data on the volume by using TRIM or DISCARD</div>
              </td>
            </tr>
            <tr>
              <td>
                <a name="VIR_STORAGE_VOL_WIPE_ALG_LAST">VIR_STORAGE_VOL_WIPE_ALG_LAST</a>
              </td>
              <td> = </td>
              <td class="enumvalue">10 (0xa)</td>
              <td>
                <div class="comment">NB: this enum value will increase over time as new algorithms are added to the libvirt API. It reflects the last algorithm supported by this version of the libvirt API.</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="virStorageXMLFlags">
            <code>virStorageXMLFlags</code>
          </a>
        </h3>
        <div class="api">
          <pre><span class="keyword">enum</span> virStorageXMLFlags {
</pre>
          <table>
            <tr>
              <td>
                <a name="VIR_STORAGE_XML_INACTIVE">VIR_STORAGE_XML_INACTIVE</a>
              </td>
              <td> = </td>
              <td class="enumvalue">1 (0x1; 1 &lt;&lt; 0)</td>
              <td>
                <div class="comment">dump inactive pool/volume information</div>
              </td>
            </tr>
          </table>
          <pre>}
</pre>
        </div>
        <h3>
          <a name="functions">Functions</a>
        </h3>
        <h3>
          <a name="virConnectFindStoragePoolSources">
            <code>virConnectFindStoragePoolSources</code>
          </a>
        </h3>
        <pre class="api"><span class="type">char *</span>	virConnectFindStoragePoolSources	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type">const char *</span> type,
						 <span class="type">const char *</span> srcSpec,
						 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Talks to a storage backend and attempts to auto-discover the set of available storage pool sources. e.g. For iSCSI this would be a set of iSCSI targets. For NFS this would be a list of exported paths. The srcSpec (optional for some storage pool types, e.g. local ones) is an instance of the storage pool's source element specifying where to look for the pools.</p>
          <p>srcSpec is not required for some types (e.g., those querying local storage resources only)</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>type</dt>
          <dd>type of storage pool sources to discover</dd>
          <dt>srcSpec</dt>
          <dd>XML document specifying discovery source</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>an xml document consisting of a SourceList element containing a source document appropriate to the given pool type for each discovered source.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectGetStoragePoolCapabilities">
            <code>virConnectGetStoragePoolCapabilities</code>
          </a>
        </h3>
        <pre class="api"><span class="type">char *</span>	virConnectGetStoragePoolCapabilities	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Prior creating a storage pool (for instance via <a href="libvirt-libvirt-storage.html#virStoragePoolCreateXML">virStoragePoolCreateXML</a> or <a href="libvirt-libvirt-storage.html#virStoragePoolDefineXML">virStoragePoolDefineXML</a>) it may be suitable to know what pool types are supported along with the file/disk formats for each pool.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to the hypervisor connection</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>NULL in case of error or an XML string defining the capabilities.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectListAllStoragePools">
            <code>virConnectListAllStoragePools</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectListAllStoragePools	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
					 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> **</span> pools,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Collect the list of storage pools, and allocate an array to store those objects. This API solves the race inherent between <a href="libvirt-libvirt-storage.html#virConnectListStoragePools">virConnectListStoragePools</a> and <a href="libvirt-libvirt-storage.html#virConnectListDefinedStoragePools">virConnectListDefinedStoragePools</a>.</p>
          <p>Normally, all storage pools are returned; however, @flags can be used to filter the results for a smaller list of targeted pools. The valid flags are divided into groups, where each group contains bits that describe mutually exclusive attributes of a pool, and where all bits within a group describe all possible pools.</p>
          <p>The first group of @flags is <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE">VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE</a> (online) and <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE">VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE</a> (offline) to filter the pools by state.</p>
          <p>The second group of @flags is VIR_CONNECT_LIST_STORAGE_POOLS_PERSITENT (defined) and <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT">VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT</a> (running but not defined), to filter the pools by whether they have persistent config or not.</p>
          <p>The third group of @flags is <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART">VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART</a> and <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART">VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART</a>, to filter the pools by whether they are marked as autostart or not.</p>
          <p>The last group of @flags is provided to filter the pools by the types, the flags include: <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_DIR">VIR_CONNECT_LIST_STORAGE_POOLS_DIR</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_FS">VIR_CONNECT_LIST_STORAGE_POOLS_FS</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_NETFS">VIR_CONNECT_LIST_STORAGE_POOLS_NETFS</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL">VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_DISK">VIR_CONNECT_LIST_STORAGE_POOLS_DISK</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI">VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_SCSI">VIR_CONNECT_LIST_STORAGE_POOLS_SCSI</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_MPATH">VIR_CONNECT_LIST_STORAGE_POOLS_MPATH</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_RBD">VIR_CONNECT_LIST_STORAGE_POOLS_RBD</a> <a href="libvirt-libvirt-storage.html#VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG">VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG</a></p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>Pointer to the hypervisor connection.</dd>
          <dt>pools</dt>
          <dd>Pointer to a variable to store the array containing storage pool objects or NULL if the list is not required (just returns number of pools).</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virConnectListAllStoragePoolsFlags">virConnectListAllStoragePoolsFlags</a>.</dd>
          <dt>Returns</dt>
          <dd>the number of storage pools found or -1 and sets @pools to NULL in case of error. On success, the array stored into @pools is guaranteed to have an extra allocated element set to NULL but not included in the return count, to make iteration easier. The caller is responsible for calling <a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a>() on each array element, then calling free() on @pools.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectListDefinedStoragePools">
            <code>virConnectListDefinedStoragePools</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectListDefinedStoragePools	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type">char ** const</span> names,
						 <span class="type">int</span> maxnames)</pre>
        <div class="description">
          <p>Provides the list of names of inactive storage pools up to maxnames. If there are more than maxnames, the remaining names will be silently ignored.</p>
          <p>For more control over the results, see <a href="libvirt-libvirt-storage.html#virConnectListAllStoragePools">virConnectListAllStoragePools</a>().</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>names</dt>
          <dd>array of char * to fill with pool names (allocated by caller)</dd>
          <dt>maxnames</dt>
          <dd>size of the names array</dd>
          <dt>Returns</dt>
          <dd>the number of names provided in the array or -1 in case of error. Note that this command is inherently racy; a pool can be defined between a call to <a href="libvirt-libvirt-storage.html#virConnectNumOfDefinedStoragePools">virConnectNumOfDefinedStoragePools</a>() and this call; you are only guaranteed that all currently defined pools were listed if the return is less than @maxnames. The client must call free() on each returned name.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectListStoragePools">
            <code>virConnectListStoragePools</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectListStoragePools	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
					 <span class="type">char ** const</span> names,
					 <span class="type">int</span> maxnames)</pre>
        <div class="description">
          <p>Provides the list of names of active storage pools up to maxnames. If there are more than maxnames, the remaining names will be silently ignored.</p>
          <p>For more control over the results, see <a href="libvirt-libvirt-storage.html#virConnectListAllStoragePools">virConnectListAllStoragePools</a>().</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>names</dt>
          <dd>array of char * to fill with pool names (allocated by caller)</dd>
          <dt>maxnames</dt>
          <dd>size of the names array</dd>
          <dt>Returns</dt>
          <dd>the number of pools found or -1 in case of error. Note that this command is inherently racy; a pool can be started between a call to <a href="libvirt-libvirt-storage.html#virConnectNumOfStoragePools">virConnectNumOfStoragePools</a>() and this call; you are only guaranteed that all currently active pools were listed if the return is less than @maxnames. The client must call free() on each returned name.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectNumOfDefinedStoragePools">
            <code>virConnectNumOfDefinedStoragePools</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectNumOfDefinedStoragePools	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn)</pre>
        <div class="description">
          <p>Provides the number of inactive storage pools</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>Returns</dt>
          <dd>the number of pools found, or -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectNumOfStoragePools">
            <code>virConnectNumOfStoragePools</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectNumOfStoragePools	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn)</pre>
        <div class="description">
          <p>Provides the number of active storage pools</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>Returns</dt>
          <dd>the number of pools found, or -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectStoragePoolEventDeregisterAny">
            <code>virConnectStoragePoolEventDeregisterAny</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectStoragePoolEventDeregisterAny	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type">int</span> callbackID)</pre>
        <div class="description">
          <p>Removes an event callback. The callbackID parameter should be the value obtained from a previous <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventRegisterAny">virConnectStoragePoolEventRegisterAny</a>() method.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to the connection</dd>
          <dt>callbackID</dt>
          <dd>the callback identifier</dd>
          <dt>Returns</dt>
          <dd>0 on success, -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virConnectStoragePoolEventGenericCallback">
            <code>virConnectStoragePoolEventGenericCallback</code>
          </a>
        </h3>
        <pre class="api"><span class="keyword">typedef</span> <span class="type">void</span>	(*virConnectStoragePoolEventGenericCallback)	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
							 <span class="type">void *</span> opaque)
</pre>
        <div class="description">
          <p>A generic storage pool event callback handler, for use with <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventRegisterAny">virConnectStoragePoolEventRegisterAny</a>(). Specific events usually have a customization with extra parameters, often with @opaque being passed in a different parameter position; use <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_EVENT_CALLBACK">VIR_STORAGE_POOL_EVENT_CALLBACK</a>() when registering an appropriate handler.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>the connection pointer</dd>
          <dt>pool</dt>
          <dd>the pool pointer</dd>
          <dt>opaque</dt>
          <dd>application specified data</dd>
        </dl>
        <br/>
        <h3>
          <a name="virConnectStoragePoolEventLifecycleCallback">
            <code>virConnectStoragePoolEventLifecycleCallback</code>
          </a>
        </h3>
        <pre class="api"><span class="keyword">typedef</span> <span class="type">void</span>	(*virConnectStoragePoolEventLifecycleCallback)	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
							 <span class="type">int</span> event,
							 <span class="type">int</span> detail,
							 <span class="type">void *</span> opaque)
</pre>
        <div class="description">
          <p>This callback is called when a pool lifecycle action is performed, like start or stop.</p>
          <p>The callback signature to use when registering for an event of type <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE">VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE</a> with <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventRegisterAny">virConnectStoragePoolEventRegisterAny</a>()</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>connection object</dd>
          <dt>pool</dt>
          <dd>pool on which the event occurred</dd>
          <dt>event</dt>
          <dd>The specific virStoragePoolEventLifeCycleType which occurred</dd>
          <dt>detail</dt>
          <dd>contains some details on the reason of the event.</dd>
          <dt>opaque</dt>
          <dd>application specified data</dd>
        </dl>
        <br/>
        <h3>
          <a name="virConnectStoragePoolEventRegisterAny">
            <code>virConnectStoragePoolEventRegisterAny</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virConnectStoragePoolEventRegisterAny	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
						 <span class="type">int</span> eventID,
						 <span class="type"><a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventGenericCallback">virConnectStoragePoolEventGenericCallback</a></span> cb,
						 <span class="type">void *</span> opaque,
						 <span class="type"><a href="libvirt-libvirt-common.html#virFreeCallback">virFreeCallback</a></span> freecb)</pre>
        <div class="description">
          <p>Adds a callback to receive notifications of arbitrary storage pool events occurring on a storage pool. This function requires that an event loop has been previously registered with <a href="libvirt-libvirt-event.html#virEventRegisterImpl">virEventRegisterImpl</a>() or <a href="libvirt-libvirt-event.html#virEventRegisterDefaultImpl">virEventRegisterDefaultImpl</a>().</p>
          <p>If @pool is NULL, then events will be monitored for any storage pool. If @pool is non-NULL, then only the specific storage pool will be monitored.</p>
          <p>Most types of events have a callback providing a custom set of parameters for the event. When registering an event, it is thus necessary to use the <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_EVENT_CALLBACK">VIR_STORAGE_POOL_EVENT_CALLBACK</a>() macro to cast the supplied function pointer to match the signature of this method.</p>
          <p>The <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object handle passed into the callback upon delivery of an event is only valid for the duration of execution of the callback. If the callback wishes to keep the storage pool object after the callback returns, it shall take a reference to it, by calling <a href="libvirt-libvirt-storage.html#virStoragePoolRef">virStoragePoolRef</a>(). The reference can be released once the object is no longer required by calling <a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a>().</p>
          <p>The return value from this method is a positive integer identifier for the callback. To unregister a callback, this callback ID should be passed to the <a href="libvirt-libvirt-storage.html#virConnectStoragePoolEventDeregisterAny">virConnectStoragePoolEventDeregisterAny</a>() method.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to the connection</dd>
          <dt>pool</dt>
          <dd>pointer to the storage pool</dd>
          <dt>eventID</dt>
          <dd>the event type to receive</dd>
          <dt>cb</dt>
          <dd>callback to the function handling network events</dd>
          <dt>opaque</dt>
          <dd>opaque data to pass on to the callback</dd>
          <dt>freecb</dt>
          <dd>optional function to deallocate opaque when not used anymore</dd>
          <dt>Returns</dt>
          <dd>a callback identifier on success, -1 on failure.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolBuild">
            <code>virStoragePoolBuild</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolBuild		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Currently only filesystem pool accepts flags <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_BUILD_OVERWRITE">VIR_STORAGE_POOL_BUILD_OVERWRITE</a> and <a href="libvirt-libvirt-storage.html#VIR_STORAGE_POOL_BUILD_NO_OVERWRITE">VIR_STORAGE_POOL_BUILD_NO_OVERWRITE</a>.</p>
          <p>Build the underlying storage pool</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStoragePoolBuildFlags">virStoragePoolBuildFlags</a></dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 upon failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolCreate">
            <code>virStoragePoolCreate</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolCreate		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Starts an inactive storage pool</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStoragePoolCreateFlags">virStoragePoolCreateFlags</a></dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 if it could not be started</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolCreateXML">
            <code>virStoragePoolCreateXML</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolCreateXML	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type">const char *</span> xmlDesc,
						 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Create a new storage based on its XML description. The pool is not persistent, so its definition will disappear when it is destroyed, or if the host is restarted</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>xmlDesc</dt>
          <dd>XML description for new pool</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStoragePoolCreateFlags">virStoragePoolCreateFlags</a></dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolDefineXML">
            <code>virStoragePoolDefineXML</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolDefineXML	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
						 <span class="type">const char *</span> xml,
						 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Define an inactive persistent storage pool or modify an existing persistent one from the XML description.</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>xml</dt>
          <dd>XML description for new pool</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolDelete">
            <code>virStoragePoolDelete</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolDelete		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Delete the underlying pool resources. This is a non-recoverable operation. The <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object itself is not free'd.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStoragePoolDeleteFlags">virStoragePoolDeleteFlags</a></dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 if it could not be obliterate</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolDestroy">
            <code>virStoragePoolDestroy</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolDestroy		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Destroy an active storage pool. This will deactivate the pool on the host, but keep any persistent config associated with it. If it has a persistent config it can later be restarted with <a href="libvirt-libvirt-storage.html#virStoragePoolCreate">virStoragePoolCreate</a>(). This does not free the associated <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 if it could not be destroyed</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolFree">
            <code>virStoragePoolFree</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolFree		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Free a storage pool object, releasing all memory associated with it. Does not change the state of the pool on the host.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 if it could not be free'd.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetAutostart">
            <code>virStoragePoolGetAutostart</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolGetAutostart	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">int *</span> autostart)</pre>
        <div class="description">
          <p>Fetches the value of the autostart flag, which determines whether the pool is automatically started at boot time</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>autostart</dt>
          <dd>location in which to store autostart flag</dd>
          <dt>Returns</dt>
          <dd>0 on success, -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetConnect">
            <code>virStoragePoolGetConnect</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span>	virStoragePoolGetConnect	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Provides the connection pointer associated with a storage pool. The reference counter on the connection is not increased by this call.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to a pool</dd>
          <dt>Returns</dt>
          <dd>the <a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetInfo">
            <code>virStoragePoolGetInfo</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolGetInfo		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a></span> info)</pre>
        <div class="description">
          <p>Get volatile information about the storage pool such as free space / usage summary</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>info</dt>
          <dd>pointer at which to store info</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on failure.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetName">
            <code>virStoragePoolGetName</code>
          </a>
        </h3>
        <pre class="api"><span class="type">const char *</span>	virStoragePoolGetName	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Fetch the locally unique name of the storage pool</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>Returns</dt>
          <dd>the name of the pool, or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetUUID">
            <code>virStoragePoolGetUUID</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolGetUUID		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">unsigned char *</span> uuid)</pre>
        <div class="description">
          <p>Fetch the globally unique ID of the storage pool</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>uuid</dt>
          <dd>buffer of <a href="libvirt-libvirt-host.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a> bytes in size</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error;</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetUUIDString">
            <code>virStoragePoolGetUUIDString</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolGetUUIDString	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">char *</span> buf)</pre>
        <div class="description">
          <p>Fetch the globally unique ID of the storage pool as a string</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>buf</dt>
          <dd>buffer of <a href="libvirt-libvirt-host.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes in size</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error;</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolGetXMLDesc">
            <code>virStoragePoolGetXMLDesc</code>
          </a>
        </h3>
        <pre class="api"><span class="type">char *</span>	virStoragePoolGetXMLDesc	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Fetch an XML document describing all aspects of the storage pool. This is suitable for later feeding back into the <a href="libvirt-libvirt-storage.html#virStoragePoolCreateXML">virStoragePoolCreateXML</a> method.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageXMLFlags">virStorageXMLFlags</a></dd>
          <dt>Returns</dt>
          <dd>a XML document (caller frees), or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolIsActive">
            <code>virStoragePoolIsActive</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolIsActive		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Determine if the storage pool is currently running</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to the storage pool object</dd>
          <dt>Returns</dt>
          <dd>1 if running, 0 if inactive, -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolIsPersistent">
            <code>virStoragePoolIsPersistent</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolIsPersistent	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Determine if the storage pool has a persistent configuration which means it will still exist after shutting down</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to the storage pool object</dd>
          <dt>Returns</dt>
          <dd>1 if persistent, 0 if transient, -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolListAllVolumes">
            <code>virStoragePoolListAllVolumes</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolListAllVolumes	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a> **</span> vols,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Collect the list of storage volumes, and allocate an array to store those objects.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>Pointer to storage pool</dd>
          <dt>vols</dt>
          <dd>Pointer to a variable to store the array containing storage volume objects or NULL if the list is not required (just returns number of volumes).</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>the number of storage volumes found or -1 and sets @vols to NULL in case of error. On success, the array stored into @vols is guaranteed to have an extra allocated element set to NULL but not included in the return count, to make iteration easier. The caller is responsible for calling <a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a>() on each array element, then calling free() on @vols.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolListVolumes">
            <code>virStoragePoolListVolumes</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolListVolumes	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">char ** const</span> names,
					 <span class="type">int</span> maxnames)</pre>
        <div class="description">
          <p>Fetch list of storage volume names, limiting to at most maxnames.</p>
          <p>To list the volume objects directly, see <a href="libvirt-libvirt-storage.html#virStoragePoolListAllVolumes">virStoragePoolListAllVolumes</a>().</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>names</dt>
          <dd>array in which to storage volume names</dd>
          <dt>maxnames</dt>
          <dd>size of names array</dd>
          <dt>Returns</dt>
          <dd>the number of names fetched, or -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolLookupByName">
            <code>virStoragePoolLookupByName</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolLookupByName	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type">const char *</span> name)</pre>
        <div class="description">
          <p>Fetch a storage pool based on its unique name</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>name</dt>
          <dd>name of pool to fetch</dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if no matching pool is found</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolLookupByTargetPath">
            <code>virStoragePoolLookupByTargetPath</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolLookupByTargetPath	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type">const char *</span> path)</pre>
        <div class="description">
          <p>Fetch a storage pool which maps to a particular target directory. If more than one pool maps to the path, it is undefined which will be returned first.</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>path</dt>
          <dd>path at which the pool is exposed</dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if no matching pool is found</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolLookupByUUID">
            <code>virStoragePoolLookupByUUID</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolLookupByUUID	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type">const unsigned char *</span> uuid)</pre>
        <div class="description">
          <p>Fetch a storage pool based on its globally unique id</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>uuid</dt>
          <dd>globally unique id of pool to fetch</dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if no matching pool is found</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolLookupByUUIDString">
            <code>virStoragePoolLookupByUUIDString</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolLookupByUUIDString	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type">const char *</span> uuidstr)</pre>
        <div class="description">
          <p>Fetch a storage pool based on its globally unique id</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>uuidstr</dt>
          <dd>globally unique id of pool to fetch</dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if no matching pool is found</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolLookupByVolume">
            <code>virStoragePoolLookupByVolume</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span>	virStoragePoolLookupByVolume	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Fetch a storage pool which contains a particular volume</p>
          <p><a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> should be used to free the resources after the storage pool object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>Returns</dt>
          <dd>a <a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if no matching pool is found</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolNumOfVolumes">
            <code>virStoragePoolNumOfVolumes</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolNumOfVolumes	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Fetch the number of storage volumes within a pool</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>Returns</dt>
          <dd>the number of storage pools, or -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolRef">
            <code>virStoragePoolRef</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolRef		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Increment the reference count on the pool. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt-storage.html#virStoragePoolFree">virStoragePoolFree</a> to release the reference count, once the caller no longer needs the reference to this object.</p>
          <p>This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a pool would increment the reference count.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>the pool to hold a reference on</dd>
          <dt>Returns</dt>
          <dd>0 in case of success, -1 in case of failure.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolRefresh">
            <code>virStoragePoolRefresh</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolRefresh		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Request that the pool refresh its list of volumes. This may involve communicating with a remote server, and/or initializing new devices at the OS layer</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>0 if the volume list was refreshed, -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolSetAutostart">
            <code>virStoragePoolSetAutostart</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolSetAutostart	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
					 <span class="type">int</span> autostart)</pre>
        <div class="description">
          <p>Configure the storage pool to be automatically started when the host machine boots.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>autostart</dt>
          <dd>whether the storage pool should be automatically started 0 or 1</dd>
          <dt>Returns</dt>
          <dd>0 on success, -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStoragePoolUndefine">
            <code>virStoragePoolUndefine</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStoragePoolUndefine		(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool)</pre>
        <div class="description">
          <p>Undefine an inactive storage pool</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>Returns</dt>
          <dd>0 on success, -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolCreateXML">
            <code>virStorageVolCreateXML</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	virStorageVolCreateXML	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
						 <span class="type">const char *</span> xmlDesc,
						 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Create a storage volume within a pool based on an XML description. Not all pools support creation of volumes.</p>
          <p>Since 1.0.1 <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA">VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA</a> in flags can be used to get higher performance with qcow2 image files which don't support full preallocation, by creating a sparse image file with metadata.</p>
          <p><a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a> should be used to free the resources after the storage volume object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>xmlDesc</dt>
          <dd>description of volume to create</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolCreateFlags">virStorageVolCreateFlags</a></dd>
          <dt>Returns</dt>
          <dd>the storage volume, or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolCreateXMLFrom">
            <code>virStorageVolCreateXMLFrom</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	virStorageVolCreateXMLFrom	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
							 <span class="type">const char *</span> xmlDesc,
							 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> clonevol,
							 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Create a storage volume in the parent pool, using the 'clonevol' volume as input. Information for the new volume (name, perms) are passed via a typical volume XML description.</p>
          <p>Since 1.0.1 <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA">VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA</a> in flags can be used to get higher performance with qcow2 image files which don't support full preallocation, by creating a sparse image file with metadata.</p>
          <p><a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a> should be used to free the resources after the storage volume object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to parent pool for the new volume</dd>
          <dt>xmlDesc</dt>
          <dd>description of volume to create</dd>
          <dt>clonevol</dt>
          <dd>storage volume to use as input</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolCreateFlags">virStorageVolCreateFlags</a></dd>
          <dt>Returns</dt>
          <dd>the storage volume, or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolDelete">
            <code>virStorageVolDelete</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolDelete		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Delete the storage volume from the pool</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolDeleteFlags">virStorageVolDeleteFlags</a></dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolDownload">
            <code>virStorageVolDownload</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolDownload		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type"><a href="libvirt-libvirt-host.html#virStreamPtr">virStreamPtr</a></span> stream,
					 <span class="type">unsigned long long</span> offset,
					 <span class="type">unsigned long long</span> length,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Download the content of the volume as a stream. If @length is zero, then the remaining contents of the volume after @offset will be downloaded.</p>
          <p>If <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_DOWNLOAD_SPARSE_STREAM">VIR_STORAGE_VOL_DOWNLOAD_SPARSE_STREAM</a> is set in @flags effective transmission of holes is enabled. This assumes using the @stream with combination of <a href="libvirt-libvirt-stream.html#virStreamSparseRecvAll">virStreamSparseRecvAll</a>() or virStreamRecvFlags(stream, ..., flags = <a href="libvirt-libvirt-stream.html#VIR_STREAM_RECV_STOP_AT_HOLE">VIR_STREAM_RECV_STOP_AT_HOLE</a>) for honouring holes sent by server.</p>
          <p>This call sets up an asynchronous stream; subsequent use of stream APIs is necessary to transfer the actual data, determine how much data is successfully transferred, and detect any errors. The results will be unpredictable if another active stream is writing to the storage volume.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to volume to download from</dd>
          <dt>stream</dt>
          <dd>stream to use as output</dd>
          <dt>offset</dt>
          <dd>position in @vol to start reading from</dd>
          <dt>length</dt>
          <dd>limit on amount of data to download</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolDownloadFlags">virStorageVolDownloadFlags</a></dd>
          <dt>Returns</dt>
          <dd>0, or -1 upon error.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolFree">
            <code>virStorageVolFree</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolFree		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Release the storage volume handle. The underlying storage volume continues to exist.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetConnect">
            <code>virStorageVolGetConnect</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span>	virStorageVolGetConnect	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Provides the connection pointer associated with a storage volume. The reference counter on the connection is not increased by this call.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to a pool</dd>
          <dt>Returns</dt>
          <dd>the <a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetInfo">
            <code>virStorageVolGetInfo</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolGetInfo		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a></span> info)</pre>
        <div class="description">
          <p>Fetches volatile information about the storage volume such as its current allocation</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>info</dt>
          <dd>pointer at which to store info</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetInfoFlags">
            <code>virStorageVolGetInfoFlags</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolGetInfoFlags	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a></span> info,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Fetches volatile information about the storage volume such as its current allocation.</p>
          <p>If the @flags argument is <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_GET_PHYSICAL">VIR_STORAGE_VOL_GET_PHYSICAL</a>, then the physical bytes used for the volume will be returned in the @info allocation field. This is useful for sparse files and certain volume file types where the physical on disk usage can be different than the calculated allocation value as is the case with qcow2 files.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>info</dt>
          <dd>pointer at which to store info</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolInfoFlags">virStorageVolInfoFlags</a></dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on failure</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetKey">
            <code>virStorageVolGetKey</code>
          </a>
        </h3>
        <pre class="api"><span class="type">const char *</span>	virStorageVolGetKey	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Fetch the storage volume key. This is globally unique, so the same volume will have the same key no matter what host it is accessed from</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>Returns</dt>
          <dd>the volume key, or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetName">
            <code>virStorageVolGetName</code>
          </a>
        </h3>
        <pre class="api"><span class="type">const char *</span>	virStorageVolGetName	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Fetch the storage volume name. This is unique within the scope of a pool</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>Returns</dt>
          <dd>the volume name, or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetPath">
            <code>virStorageVolGetPath</code>
          </a>
        </h3>
        <pre class="api"><span class="type">char *</span>	virStorageVolGetPath		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Fetch the storage volume path. Depending on the pool configuration this is either persistent across hosts, or dynamically assigned at pool startup. Consult pool documentation for information on getting the persistent naming</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>Returns</dt>
          <dd>the storage volume path, or NULL on error. The caller must free() the returned path after use.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolGetXMLDesc">
            <code>virStorageVolGetXMLDesc</code>
          </a>
        </h3>
        <pre class="api"><span class="type">char *</span>	virStorageVolGetXMLDesc		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Fetch an XML document describing all aspects of the storage volume</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>the XML document, or NULL on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolLookupByKey">
            <code>virStorageVolLookupByKey</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	virStorageVolLookupByKey	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type">const char *</span> key)</pre>
        <div class="description">
          <p>Fetch a pointer to a storage volume based on its globally unique key</p>
          <p><a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a> should be used to free the resources after the storage volume object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>key</dt>
          <dd>globally unique key</dd>
          <dt>Returns</dt>
          <dd>a storage volume, or NULL if not found / error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolLookupByName">
            <code>virStorageVolLookupByName</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	virStorageVolLookupByName	(<span class="type"><a href="libvirt-libvirt-storage.html#virStoragePoolPtr">virStoragePoolPtr</a></span> pool,
							 <span class="type">const char *</span> name)</pre>
        <div class="description">
          <p>Fetch a pointer to a storage volume based on its name within a pool</p>
          <p><a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a> should be used to free the resources after the storage volume object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>pool</dt>
          <dd>pointer to storage pool</dd>
          <dt>name</dt>
          <dd>name of storage volume</dd>
          <dt>Returns</dt>
          <dd>a storage volume, or NULL if not found / error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolLookupByPath">
            <code>virStorageVolLookupByPath</code>
          </a>
        </h3>
        <pre class="api"><span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span>	virStorageVolLookupByPath	(<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn,
							 <span class="type">const char *</span> path)</pre>
        <div class="description">
          <p>Fetch a pointer to a storage volume based on its locally (host) unique path</p>
          <p><a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a> should be used to free the resources after the storage volume object is no longer needed.</p>
        </div>
        <dl class="variablelist">
          <dt>conn</dt>
          <dd>pointer to hypervisor connection</dd>
          <dt>path</dt>
          <dd>locally unique path</dd>
          <dt>Returns</dt>
          <dd>a storage volume, or NULL if not found / error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolRef">
            <code>virStorageVolRef</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolRef		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol)</pre>
        <div class="description">
          <p>Increment the reference count on the vol. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt-storage.html#virStorageVolFree">virStorageVolFree</a> to release the reference count, once the caller no longer needs the reference to this object.</p>
          <p>This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a vol would increment the reference count.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>the vol to hold a reference on</dd>
          <dt>Returns</dt>
          <dd>0 in case of success, -1 in case of failure.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolResize">
            <code>virStorageVolResize</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolResize		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type">unsigned long long</span> capacity,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Changes the capacity of the storage volume @vol to @capacity. The operation will fail if the new capacity requires allocation that would exceed the remaining free space in the parent pool. The contents of the new capacity will appear as all zero bytes. The capacity value will be rounded to the granularity supported by the hypervisor.</p>
          <p>Normally, the operation will attempt to affect capacity with a minimum impact on allocation (that is, the default operation favors a sparse resize). If @flags contains <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_RESIZE_ALLOCATE">VIR_STORAGE_VOL_RESIZE_ALLOCATE</a>, then the operation will ensure that allocation is sufficient for the new capacity; this may make the operation take noticeably longer.</p>
          <p>Normally, the operation treats @capacity as the new size in bytes; but if @flags contains <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_RESIZE_DELTA">VIR_STORAGE_VOL_RESIZE_DELTA</a>, then @capacity represents the size difference to add to the current size. It is up to the storage pool implementation whether unaligned requests are rounded up to the next valid boundary, or rejected.</p>
          <p>Normally, this operation should only be used to enlarge capacity; but if @flags contains <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_RESIZE_SHRINK">VIR_STORAGE_VOL_RESIZE_SHRINK</a>, it is possible to attempt a reduction in capacity even though it might cause data loss. If <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_RESIZE_DELTA">VIR_STORAGE_VOL_RESIZE_DELTA</a> is also present, then @capacity is subtracted from the current size; without it, @capacity represents the absolute new size regardless of whether it is larger or smaller than the current size.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>capacity</dt>
          <dd>new capacity, in bytes</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolResizeFlags">virStorageVolResizeFlags</a></dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolUpload">
            <code>virStorageVolUpload</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolUpload		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type"><a href="libvirt-libvirt-host.html#virStreamPtr">virStreamPtr</a></span> stream,
					 <span class="type">unsigned long long</span> offset,
					 <span class="type">unsigned long long</span> length,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Upload new content to the volume from a stream. This call will fail if @offset + @length exceeds the size of the volume. Otherwise, if @length is non-zero, an error will be raised if an attempt is made to upload greater than @length bytes of data.</p>
          <p>If <a href="libvirt-libvirt-storage.html#VIR_STORAGE_VOL_UPLOAD_SPARSE_STREAM">VIR_STORAGE_VOL_UPLOAD_SPARSE_STREAM</a> is set in @flags effective transmission of holes is enabled. This assumes using the @stream with combination of <a href="libvirt-libvirt-stream.html#virStreamSparseSendAll">virStreamSparseSendAll</a>() or <a href="libvirt-libvirt-stream.html#virStreamSendHole">virStreamSendHole</a>() to preserve source file sparseness.</p>
          <p>This call sets up an asynchronous stream; subsequent use of stream APIs is necessary to transfer the actual data, determine how much data is successfully transferred, and detect any errors. The results will be unpredictable if another active stream is writing to the storage volume.</p>
          <p>When the data stream is closed whether the upload is successful or not an attempt will be made to refresh the target storage pool if an asynchronous build is not running in order to reflect pool and volume changes as a result of the upload. Depending on the target volume storage backend and the source stream type for a successful upload, the target volume may take on the characteristics from the source stream such as format type, capacity, and allocation.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to volume to upload</dd>
          <dt>stream</dt>
          <dd>stream to use as input</dd>
          <dt>offset</dt>
          <dd>position to start writing to</dd>
          <dt>length</dt>
          <dd>limit on amount of data to upload</dd>
          <dt>flags</dt>
          <dd>bitwise-OR of <a href="libvirt-libvirt-storage.html#virStorageVolUploadFlags">virStorageVolUploadFlags</a></dd>
          <dt>Returns</dt>
          <dd>0, or -1 upon error.</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolWipe">
            <code>virStorageVolWipe</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolWipe		(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Ensure data previously on a volume is not accessible to future reads.</p>
          <p>The data to be wiped may include the format and possibly size information, so non-raw images might become raw with a different size. It is storage backend dependent whether the format and size information is regenerated once the initial volume wipe is completed.</p>
          <p>Depending on the actual volume representation, this call may not overwrite the physical location of the volume. For instance, files stored journaled, log structured, copy-on-write, versioned, and network file systems are known to be problematic.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>flags</dt>
          <dd>extra flags; not used yet, so callers should always pass 0</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error</dd>
        </dl>
        <div class="acl"/>
        <h3>
          <a name="virStorageVolWipePattern">
            <code>virStorageVolWipePattern</code>
          </a>
        </h3>
        <pre class="api"><span class="type">int</span>	virStorageVolWipePattern	(<span class="type"><a href="libvirt-libvirt-storage.html#virStorageVolPtr">virStorageVolPtr</a></span> vol,
					 <span class="type">unsigned int</span> algorithm,
					 <span class="type">unsigned int</span> flags)</pre>
        <div class="description">
          <p>Similar to <a href="libvirt-libvirt-storage.html#virStorageVolWipe">virStorageVolWipe</a>, but one can choose between different wiping algorithms. Also note, that depending on the actual volume representation, this call may not really overwrite the physical location of the volume. For instance, files stored journaled, log structured, copy-on-write, versioned, and network file systems are known to be problematic.</p>
        </div>
        <dl class="variablelist">
          <dt>vol</dt>
          <dd>pointer to storage volume</dd>
          <dt>algorithm</dt>
          <dd>one of <a href="libvirt-libvirt-storage.html#virStorageVolWipeAlgorithm">virStorageVolWipeAlgorithm</a></dd>
          <dt>flags</dt>
          <dd>future flags, use 0 for now</dd>
          <dt>Returns</dt>
          <dd>0 on success, or -1 on error.</dd>
        </dl>
        <div class="acl"/>
      </div>
    </div>
    <div id="nav">
      <div id="home">
        <a href="../index.html">Home</a>
      </div>
      <div id="jumplinks">
        <ul>
          <li>
            <a href="../downloads.html">Download</a>
          </li>
          <li>
            <a href="../contribute.html">Contribute</a>
          </li>
          <li>
            <a href="../docs.html">Docs</a>
          </li>
        </ul>
      </div>
      <div id="search">
        <form id="simplesearch" action="https://www.google.com/search" enctype="application/x-www-form-urlencoded" method="get">
          <div>
            <input id="searchsite" name="sitesearch" type="hidden" value="libvirt.org"/>
            <input id="searchq" name="q" type="text" size="12" value=""/>
            <input name="submit" type="submit" value="Go"/>
          </div>
        </form>
        <div id="advancedsearch">
          <span>
            <input type="radio" name="what" id="whatwebsite" checked="checked" value="website"/>
            <label for="whatwebsite">Website</label>
          </span>
          <span>
            <input type="radio" name="what" id="whatwiki" value="wiki"/>
            <label for="whatwiki">Wiki</label>
          </span>
          <span>
            <input type="radio" name="what" id="whatdevs" value="devs"/>
            <label for="whatdevs">Developers list</label>
          </span>
          <span>
            <input type="radio" name="what" id="whatusers" value="users"/>
            <label for="whatusers">Users list</label>
          </span>
        </div>
      </div>
    </div>
    <div id="footer">
      <div id="contact">
        <h3>Contact</h3>
        <ul>
          <li>
            <a href="../contact.html#email">email</a>
          </li>
          <li>
            <a href="../contact.html#irc">irc</a>
          </li>
        </ul>
      </div>
      <div id="community">
        <h3>Community</h3>
        <ul>
          <li>
            <a href="https://twitter.com/hashtag/libvirt">twitter</a>
          </li>
          <li>
            <a href="http://stackoverflow.com/questions/tagged/libvirt">stackoverflow</a>
          </li>
          <li>
            <a href="http://serverfault.com/questions/tagged/libvirt">serverfault</a>
          </li>
        </ul>
      </div>
      <div id="conduct">
            Participants in the libvirt project agree to abide by <a href="../governance.html#codeofconduct">the project code of conduct</a></div>
      <br class="clear"/>
    </div>
  </body>
</html>