On Thu, Feb 14, 2008 at 06:06:08AM -0500, Daniel Veillard wrote:
On Tue, Feb 12, 2008 at 04:30:07AM +0000, Daniel P. Berrange wrote:
> +
> +
> +typedef enum {
> + VIR_STORAGE_POOL_BUILD_NEW = 0, /* Regular build from scratch */
> + VIR_STORAGE_POOL_BUILD_REPAIR = 1, /* Repair / reinitialize */
> + VIR_STORAGE_POOL_BUILD_EXTEND = 2 /* Extend existing pool */
Is shrinking not possible ? things like compressing to fewer volumes
I guess it could conceivably be supported. I should rename this to
be VIR_STORAGE_POOL_BUILD_RESIZE since the distinction between extending
and shrinking is not really relevant from the context of this API.
> +} virStoragePoolBuildFlags;
> +
> +typedef enum {
> + VIR_STORAGE_POOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
> + VIR_STORAGE_POOL_DELETE_CLEAR = 1, /* Clear all data to zeros (slow) */
I would name it VIR_STORAGE_POOL_DELETE_ZEROED , it's more obvious what
the operstion does.
Good idea.
> +typedef enum {
> + VIR_STORAGE_VOL_FILE = 0, /* Regular file based volumes */
> + VIR_STORAGE_VOL_BLOCK = 1, /* Block based volumes */
> + VIR_STORAGE_VOL_VIRTUAL = 2, /* Volumes which aren't assignable to guests
*/
> +} virStorageVolType;
I wonder if it's worth making the distinction between virtual storage with
local state and those without, the second having really good properties for
example when deciding to do a migration. But current enum is fine already.
Sorry, there's a mistake here - the VIR_STORAGE_VOL_VIRTUAL should not be
there anymore. Since I removed the concept of 'singleton pools' it is no
longer neccessary - previously it would be used for a volume which pointed
to a LVM volume group - but this was just stupid, so i killed it.
> +typedef enum {
> + VIR_STORAGE_VOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
> + VIR_STORAGE_VOL_DELETE_CLEAR = 1, /* Clear all data to zeros (slow) */
> +} virStorageVolDeleteFlags;
I still prefer ZEROED as CLEAr but not a big deal.
Yep, I like it too
> +virStoragePoolPtr virStoragePoolCreateXML (virConnectPtr
conn,
> + const char *xmlDesc);
> +virStoragePoolPtr virStoragePoolDefineXML (virConnectPtr conn,
> + const char *xmlDesc);
> +int virStoragePoolBuild (virStoragePoolPtr pool,
> + unsigned int flags);
> +int virStoragePoolUndefine (virStoragePoolPtr pool);
> +int virStoragePoolCreate (virStoragePoolPtr pool);
Can we use a flag here ? Is the operation synchronous or not ?
Or is that an instant operation and only Build() is likely to take some time.
I would add an unused flag for safety here.
Definitely. I should have a flags paramater on all 'Create' methods since they
can
take non-trivial time - eg to login to the remote server, and we might wish to
control the behaviour via flags.
Okay, +1,
I would love to see this or part of it commited before the next
round, even if all entry points are present, as a temporary way
to decrease patches and separate the agreed upon from what would need
to be refined. I guess it's not a problem until we make a new release.
That works with me - it is non-triival work keeping them in sync, even with
excellant quilt/mq tools.
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|