int ret = -1;
virCheckFlags(VIR_STORAGE_VOL_RESIZE_ALLOCATE |
- VIR_STORAGE_VOL_RESIZE_DELTA, -1);
+ VIR_STORAGE_VOL_RESIZE_DELTA |
+ VIR_STORAGE_VOL_RESIZE_SHRINK, -1);
storageDriverLock(driver);
pool = virStoragePoolObjFindByName(&driver->pools, obj->pool);
goto out;
}
+ if (abs_capacity < vol->capacity &&
+ !(flags & VIR_STORAGE_VOL_RESIZE_SHRINK)) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("Can't shrink capacity below current "
+ "capacity with shrink flag explicitly specified"));
+ goto out;
+ }
+
if (abs_capacity > vol->capacity + pool->def->available) {
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("Not enough space left on storage pool"));