On 08/30/2017 01:23 PM, apolyakov@xxxxxxxx wrote: > From: Alexander Polyakov <apolyakov@xxxxxxxxx> > > Signed-off-by: Alexander Polyakov <apolyakov@xxxxxxxxx> > --- > m4/virt-storage-lvm.m4 | 4 ++++ > src/storage/storage_backend_logical.c | 22 ++++++++++++++++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/m4/virt-storage-lvm.m4 b/m4/virt-storage-lvm.m4 > index a0ccca7a0..0932995b4 100644 > --- a/m4/virt-storage-lvm.m4 > +++ b/m4/virt-storage-lvm.m4 > @@ -30,6 +30,7 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_LVM], [ > AC_PATH_PROG([VGREMOVE], [vgremove], [], [$LIBVIRT_SBIN_PATH]) > AC_PATH_PROG([LVREMOVE], [lvremove], [], [$LIBVIRT_SBIN_PATH]) > AC_PATH_PROG([LVCHANGE], [lvchange], [], [$LIBVIRT_SBIN_PATH]) > + AC_PATH_PROG([LVRESIZE], [lvresize], [], [$LIBVIRT_SBIN_PATH]) > AC_PATH_PROG([VGCHANGE], [vgchange], [], [$LIBVIRT_SBIN_PATH]) > AC_PATH_PROG([VGSCAN], [vgscan], [], [$LIBVIRT_SBIN_PATH]) > AC_PATH_PROG([PVS], [pvs], [], [$LIBVIRT_SBIN_PATH]) > @@ -44,6 +45,7 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_LVM], [ > if test -z "$VGREMOVE" ; then AC_MSG_ERROR([We need vgremove for LVM storage driver]) ; fi > if test -z "$LVREMOVE" ; then AC_MSG_ERROR([We need lvremove for LVM storage driver]) ; fi > if test -z "$LVCHANGE" ; then AC_MSG_ERROR([We need lvchange for LVM storage driver]) ; fi > + if test -z "$LVRESIZE" ; then AC_MSG_ERROR([We need lvresize for LVM storage driver]) ; fi > if test -z "$VGCHANGE" ; then AC_MSG_ERROR([We need vgchange for LVM storage driver]) ; fi > if test -z "$VGSCAN" ; then AC_MSG_ERROR([We need vgscan for LVM storage driver]) ; fi > if test -z "$PVS" ; then AC_MSG_ERROR([We need pvs for LVM storage driver]) ; fi > @@ -57,6 +59,7 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_LVM], [ > if test -z "$VGREMOVE" ; then with_storage_lvm=no ; fi > if test -z "$LVREMOVE" ; then with_storage_lvm=no ; fi > if test -z "$LVCHANGE" ; then with_storage_lvm=no ; fi > + if test -z "$LVRESIZE" ; then with_storage_lvm=no ; fi > if test -z "$VGCHANGE" ; then with_storage_lvm=no ; fi > if test -z "$VGSCAN" ; then with_storage_lvm=no ; fi > if test -z "$PVS" ; then with_storage_lvm=no ; fi > @@ -75,6 +78,7 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_LVM], [ > AC_DEFINE_UNQUOTED([VGREMOVE],["$VGREMOVE"],[Location of vgremove program]) > AC_DEFINE_UNQUOTED([LVREMOVE],["$LVREMOVE"],[Location of lvremove program]) > AC_DEFINE_UNQUOTED([LVCHANGE],["$LVCHANGE"],[Location of lvchange program]) > + AC_DEFINE_UNQUOTED([LVRESIZE],["$LVRESIZE"],[Location of lvresize program]) > AC_DEFINE_UNQUOTED([VGCHANGE],["$VGCHANGE"],[Location of vgchange program]) > AC_DEFINE_UNQUOTED([VGSCAN],["$VGSCAN"],[Location of vgscan program]) > AC_DEFINE_UNQUOTED([PVS],["$PVS"],[Location of pvs program]) > diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c > index 67f70e551..810e4ee88 100644 > --- a/src/storage/storage_backend_logical.c > +++ b/src/storage/storage_backend_logical.c > @@ -1072,6 +1072,27 @@ virStorageBackendLogicalVolWipe(virConnectPtr conn, > return -1; > } > > +static int > +virStorageBackendLogicalResizeVol(virConnectPtr conn ATTRIBUTE_UNUSED, > + virStoragePoolObjPtr pool, > + virStorageVolDefPtr vol, > + unsigned long long capacity, > + unsigned int flags) > +{ > + > + virCheckFlags(0, -1); > + > + (void)pool; > + virCommandPtr cmd = virCommandNewArgList(LVRESIZE, "-L", NULL); > + virCommandAddArgFormat(cmd, "%lluK", VIR_DIV_UP(capacity, 1024)); > + virCommandAddArgFormat(cmd, "%s", vol->target.path); > + int ret = virCommandRun(cmd, NULL); Beyond what Peter notes - does this work with both "regular" lv's and "thin snapshot" lv's? IOW Volumes created w/ "--type snapshot --virtualsize". This is not the (newer) "thin pool" lv's, but rather the (older) style of sparse lv. For a v2, please be sure to have a docs/news.xml as a second and separate patch to indicate the Improvement. John > + > + virCommandFree(cmd); > + return ret; > + > +} > + > virStorageBackend virStorageBackendLogical = { > .type = VIR_STORAGE_POOL_LOGICAL, > > @@ -1089,6 +1110,7 @@ virStorageBackend virStorageBackendLogical = { > .uploadVol = virStorageBackendVolUploadLocal, > .downloadVol = virStorageBackendVolDownloadLocal, > .wipeVol = virStorageBackendLogicalVolWipe, > + .resizeVol = virStorageBackendLogicalResizeVol, > }; > > > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list