mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
storage: Error out when attempting to vol-upload into a remote pool
Pools that are not backed by files in the filesystem cause problems with some APIs. Error out when attempting to upload a volume in such a pool as currently we expect a local file representation for it.
This commit is contained in:
parent
e45c30ee69
commit
429bf2534c
@ -2003,13 +2003,32 @@ storageVolUpload(virStorageVolPtr obj,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Not using O_CREAT because the file is required to
|
||||
* already exist at this point */
|
||||
if (virFDStreamOpenFile(stream,
|
||||
vol->target.path,
|
||||
offset, length,
|
||||
O_WRONLY) < 0)
|
||||
switch ((enum virStoragePoolType) pool->def->type) {
|
||||
case VIR_STORAGE_POOL_DIR:
|
||||
case VIR_STORAGE_POOL_FS:
|
||||
case VIR_STORAGE_POOL_NETFS:
|
||||
case VIR_STORAGE_POOL_LOGICAL:
|
||||
case VIR_STORAGE_POOL_DISK:
|
||||
case VIR_STORAGE_POOL_ISCSI:
|
||||
case VIR_STORAGE_POOL_SCSI:
|
||||
case VIR_STORAGE_POOL_MPATH:
|
||||
/* Not using O_CREAT because the file is required to already exist at
|
||||
* this point */
|
||||
if (virFDStreamOpenFile(stream, vol->target.path,
|
||||
offset, length, O_WRONLY) < 0)
|
||||
goto cleanup;
|
||||
|
||||
break;
|
||||
|
||||
case VIR_STORAGE_POOL_SHEEPDOG:
|
||||
case VIR_STORAGE_POOL_RBD:
|
||||
case VIR_STORAGE_POOL_GLUSTER:
|
||||
case VIR_STORAGE_POOL_LAST:
|
||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
|
||||
_("volume upload is not supported with pools of type %s"),
|
||||
virStoragePoolTypeToString(pool->def->type));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user