[virt-tools-list] [python-virtinst PATCH] Don't support sparse logical volumes
Martin Kletzander
mkletzan at redhat.com
Tue Apr 2 11:51:28 UTC 2013
Sparse logical volumes are supported by libvirt, but only in case the
user takes care of the reallocation, which is not what virt-install
and virt-manager users want. This patch defaults the logical volumes
to non-sparse ones and makes sure allocation is always equal to
capacity for such volumes.
Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
I fixed two whitespaces (at EOL and EOF) and a typo in the man-page with this
patch as well and didn't split it due to it's triviality.
---
man/en/virt-install.pod.in | 8 ++++----
virtinst/Storage.py | 20 ++++++++++++++++++--
2 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/man/en/virt-install.pod.in b/man/en/virt-install.pod.in
index 4a65ef0..e6098b7 100644
--- a/man/en/virt-install.pod.in
+++ b/man/en/virt-install.pod.in
@@ -449,10 +449,11 @@ size (in GB) to use if creating new storage
=item B<sparse>
whether to skip fully allocating newly created storage. Value is 'true' or
-'false'. Default is 'true' (do not fully allocate).
+'false'. Default is 'true' (do not fully allocate) unless it isn't
+supported by the underlying storage type.
The initial time taken to fully-allocate the guest virtual disk (sparse=false)
-will be usually by balanced by faster install times inside the guest. Thus
+will be usually balanced by faster install times inside the guest. Thus
use of this option is recommended to ensure consistently high performance
and to avoid I/O errors in the guest should the host filesystem fill up.
@@ -589,7 +590,7 @@ Connect to a virtual network in the host called C<NAME>. Virtual networks
can be listed, created, deleted using the C<virsh> command line tool. In
an unmodified install of C<libvirt> there is usually a virtual network
with a name of C<default>. Use a virtual network if the host has dynamic
-networking (eg NetworkManager), or using wireless. The guest will be
+networking (eg NetworkManager), or using wireless. The guest will be
NATed to the LAN by whichever connection is active.
=item user
@@ -1368,4 +1369,3 @@ is NO WARRANTY, to the extent permitted by law.
C<virsh(1)>, C<virt-clone(1)>, C<virt-manager(1)>, the project website C<http://virt-manager.org>
=cut
-
diff --git a/virtinst/Storage.py b/virtinst/Storage.py
index fd40009..f437a29 100644
--- a/virtinst/Storage.py
+++ b/virtinst/Storage.py
@@ -1,5 +1,5 @@
#
-# Copyright 2008 Red Hat, Inc.
+# Copyright 2008, 2013 Red Hat, Inc.
# Cole Robinson <crobinso at redhat.com>
#
# This program is free software; you can redistribute it and/or modify
@@ -1350,12 +1350,28 @@ class LogicalVolume(StorageVolume):
def __init__(self, name, capacity, pool=None, pool_name=None, conn=None,
allocation=None, perms=None):
+ if allocation and allocation != capacity:
+ raise ValueError(_("Sparse logical volumes are not supported, "
+ "allocation must be equal to capacity"))
StorageVolume.__init__(self, name=name, pool=pool, pool_name=pool_name,
- allocation=allocation, capacity=capacity,
+ allocation=capacity, capacity=capacity,
conn=conn)
if perms:
self.perms = perms
+ def set_capacity(self, capacity):
+ super(LogicalVolume, self).set_capacity(capacity)
+ self.allocation = capacity
+ capacity = property(StorageVolume.get_capacity, set_capacity)
+
+ def set_allocation(self, allocation):
+ if allocation != self.capacity:
+ raise ValueError(_("Sparse logical volumes are not supported, "
+ "allocation must be equal to capacity"))
+ super(LogicalVolume, self).set_allocation(allocation)
+ capacity = property(StorageVolume.get_allocation, set_allocation)
+
+
def _get_target_xml(self):
return "%s" % self._get_perms_xml()
--
1.8.1.5
More information about the virt-tools-list
mailing list