2 * driver-storage.h: entry points for storage drivers
4 * Copyright (C) 2006-2014 Red Hat, Inc.
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library. If not, see
18 * <http://www.gnu.org/licenses/>.
23 #ifndef __VIR_DRIVER_H_INCLUDES___
24 # error "Don't include this file directly, only use driver.h"
28 (*virDrvConnectNumOfStoragePools
)(virConnectPtr conn
);
31 (*virDrvConnectListStoragePools
)(virConnectPtr conn
,
36 (*virDrvConnectNumOfDefinedStoragePools
)(virConnectPtr conn
);
39 (*virDrvConnectListDefinedStoragePools
)(virConnectPtr conn
,
44 (*virDrvConnectListAllStoragePools
)(virConnectPtr conn
,
45 virStoragePoolPtr
**pools
,
49 (*virDrvConnectFindStoragePoolSources
)(virConnectPtr conn
,
55 (*virDrvConnectGetStoragePoolCapabilities
)(virConnectPtr conn
,
58 typedef virStoragePoolPtr
59 (*virDrvStoragePoolLookupByName
)(virConnectPtr conn
,
62 typedef virStoragePoolPtr
63 (*virDrvStoragePoolLookupByUUID
)(virConnectPtr conn
,
64 const unsigned char *uuid
);
66 typedef virStoragePoolPtr
67 (*virDrvStoragePoolLookupByVolume
)(virStorageVolPtr vol
);
69 typedef virStoragePoolPtr
70 (*virDrvStoragePoolLookupByTargetPath
)(virConnectPtr conn
,
73 typedef virStoragePoolPtr
74 (*virDrvStoragePoolCreateXML
)(virConnectPtr conn
,
78 typedef virStoragePoolPtr
79 (*virDrvStoragePoolDefineXML
)(virConnectPtr conn
,
84 (*virDrvStoragePoolUndefine
)(virStoragePoolPtr pool
);
87 (*virDrvStoragePoolBuild
)(virStoragePoolPtr pool
,
91 (*virDrvStoragePoolCreate
)(virStoragePoolPtr pool
,
95 (*virDrvStoragePoolDestroy
)(virStoragePoolPtr pool
);
98 (*virDrvStoragePoolDelete
)(virStoragePoolPtr pool
,
102 (*virDrvStoragePoolRefresh
)(virStoragePoolPtr pool
,
106 (*virDrvStoragePoolGetInfo
)(virStoragePoolPtr vol
,
107 virStoragePoolInfoPtr info
);
110 (*virDrvStoragePoolGetXMLDesc
)(virStoragePoolPtr pool
,
114 (*virDrvStoragePoolGetAutostart
)(virStoragePoolPtr pool
,
118 (*virDrvStoragePoolSetAutostart
)(virStoragePoolPtr pool
,
122 (*virDrvStoragePoolNumOfVolumes
)(virStoragePoolPtr pool
);
125 (*virDrvStoragePoolListVolumes
)(virStoragePoolPtr pool
,
130 (*virDrvStoragePoolListAllVolumes
)(virStoragePoolPtr pool
,
131 virStorageVolPtr
**vols
,
134 typedef virStorageVolPtr
135 (*virDrvStorageVolLookupByName
)(virStoragePoolPtr pool
,
138 typedef virStorageVolPtr
139 (*virDrvStorageVolLookupByKey
)(virConnectPtr pool
,
142 typedef virStorageVolPtr
143 (*virDrvStorageVolLookupByPath
)(virConnectPtr pool
,
146 typedef virStorageVolPtr
147 (*virDrvStorageVolCreateXML
)(virStoragePoolPtr pool
,
152 (*virDrvStorageVolDelete
)(virStorageVolPtr vol
,
156 (*virDrvStorageVolWipe
)(virStorageVolPtr vol
,
160 (*virDrvStorageVolWipePattern
)(virStorageVolPtr vol
,
161 unsigned int algorithm
,
165 (*virDrvStorageVolGetInfo
)(virStorageVolPtr vol
,
166 virStorageVolInfoPtr info
);
169 (*virDrvStorageVolGetInfoFlags
)(virStorageVolPtr vol
,
170 virStorageVolInfoPtr info
,
174 (*virDrvStorageVolGetXMLDesc
)(virStorageVolPtr pool
,
178 (*virDrvStorageVolGetPath
)(virStorageVolPtr vol
);
180 typedef virStorageVolPtr
181 (*virDrvStorageVolCreateXMLFrom
)(virStoragePoolPtr pool
,
183 virStorageVolPtr clonevol
,
187 (*virDrvStorageVolDownload
)(virStorageVolPtr vol
,
189 unsigned long long offset
,
190 unsigned long long length
,
194 (*virDrvStorageVolUpload
)(virStorageVolPtr vol
,
196 unsigned long long offset
,
197 unsigned long long length
,
201 (*virDrvStorageVolResize
)(virStorageVolPtr vol
,
202 unsigned long long capacity
,
206 (*virDrvStoragePoolIsActive
)(virStoragePoolPtr pool
);
209 (*virDrvStoragePoolIsPersistent
)(virStoragePoolPtr pool
);
212 (*virDrvConnectStoragePoolEventRegisterAny
)(virConnectPtr conn
,
213 virStoragePoolPtr pool
,
215 virConnectStoragePoolEventGenericCallback cb
,
217 virFreeCallback freecb
);
220 (*virDrvConnectStoragePoolEventDeregisterAny
)(virConnectPtr conn
,
224 typedef struct _virStorageDriver virStorageDriver
;
229 * Structure associated to a storage driver, defining the various
230 * entry points for it.
232 struct _virStorageDriver
{
233 const char *name
; /* the name of the driver */
234 virDrvConnectNumOfStoragePools connectNumOfStoragePools
;
235 virDrvConnectListStoragePools connectListStoragePools
;
236 virDrvConnectNumOfDefinedStoragePools connectNumOfDefinedStoragePools
;
237 virDrvConnectListDefinedStoragePools connectListDefinedStoragePools
;
238 virDrvConnectListAllStoragePools connectListAllStoragePools
;
239 virDrvConnectFindStoragePoolSources connectFindStoragePoolSources
;
240 virDrvConnectStoragePoolEventRegisterAny connectStoragePoolEventRegisterAny
;
241 virDrvConnectStoragePoolEventDeregisterAny connectStoragePoolEventDeregisterAny
;
242 virDrvConnectGetStoragePoolCapabilities connectGetStoragePoolCapabilities
;
243 virDrvStoragePoolLookupByName storagePoolLookupByName
;
244 virDrvStoragePoolLookupByUUID storagePoolLookupByUUID
;
245 virDrvStoragePoolLookupByVolume storagePoolLookupByVolume
;
246 virDrvStoragePoolLookupByTargetPath storagePoolLookupByTargetPath
;
247 virDrvStoragePoolCreateXML storagePoolCreateXML
;
248 virDrvStoragePoolDefineXML storagePoolDefineXML
;
249 virDrvStoragePoolBuild storagePoolBuild
;
250 virDrvStoragePoolUndefine storagePoolUndefine
;
251 virDrvStoragePoolCreate storagePoolCreate
;
252 virDrvStoragePoolDestroy storagePoolDestroy
;
253 virDrvStoragePoolDelete storagePoolDelete
;
254 virDrvStoragePoolRefresh storagePoolRefresh
;
255 virDrvStoragePoolGetInfo storagePoolGetInfo
;
256 virDrvStoragePoolGetXMLDesc storagePoolGetXMLDesc
;
257 virDrvStoragePoolGetAutostart storagePoolGetAutostart
;
258 virDrvStoragePoolSetAutostart storagePoolSetAutostart
;
259 virDrvStoragePoolNumOfVolumes storagePoolNumOfVolumes
;
260 virDrvStoragePoolListVolumes storagePoolListVolumes
;
261 virDrvStoragePoolListAllVolumes storagePoolListAllVolumes
;
262 virDrvStorageVolLookupByName storageVolLookupByName
;
263 virDrvStorageVolLookupByKey storageVolLookupByKey
;
264 virDrvStorageVolLookupByPath storageVolLookupByPath
;
265 virDrvStorageVolCreateXML storageVolCreateXML
;
266 virDrvStorageVolCreateXMLFrom storageVolCreateXMLFrom
;
267 virDrvStorageVolDownload storageVolDownload
;
268 virDrvStorageVolUpload storageVolUpload
;
269 virDrvStorageVolDelete storageVolDelete
;
270 virDrvStorageVolWipe storageVolWipe
;
271 virDrvStorageVolWipePattern storageVolWipePattern
;
272 virDrvStorageVolGetInfo storageVolGetInfo
;
273 virDrvStorageVolGetInfoFlags storageVolGetInfoFlags
;
274 virDrvStorageVolGetXMLDesc storageVolGetXMLDesc
;
275 virDrvStorageVolGetPath storageVolGetPath
;
276 virDrvStorageVolResize storageVolResize
;
277 virDrvStoragePoolIsActive storagePoolIsActive
;
278 virDrvStoragePoolIsPersistent storagePoolIsPersistent
;