mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 14:15:28 +00:00
Revert "Restore skipping of setting capacity"
This reverts commit f1856eb622
.
Now that we can update capacity from image metadata,
we don't need to skip the update.
This commit is contained in:
parent
a760ba3a7f
commit
d3452a3f73
@ -1508,7 +1508,6 @@ virStorageBackendVolOpen(const char *path, struct stat *sb,
|
|||||||
|
|
||||||
int
|
int
|
||||||
virStorageBackendUpdateVolTargetInfo(virStorageSourcePtr target,
|
virStorageBackendUpdateVolTargetInfo(virStorageSourcePtr target,
|
||||||
bool updateCapacity,
|
|
||||||
bool withBlockVolFormat,
|
bool withBlockVolFormat,
|
||||||
unsigned int openflags)
|
unsigned int openflags)
|
||||||
{
|
{
|
||||||
@ -1522,8 +1521,7 @@ virStorageBackendUpdateVolTargetInfo(virStorageSourcePtr target,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
fd = ret;
|
fd = ret;
|
||||||
|
|
||||||
if ((ret = virStorageBackendUpdateVolTargetInfoFD(target, fd, &sb,
|
if ((ret = virStorageBackendUpdateVolTargetInfoFD(target, fd, &sb)) < 0)
|
||||||
updateCapacity)) < 0)
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (target->type == VIR_STORAGE_VOL_FILE &&
|
if (target->type == VIR_STORAGE_VOL_FILE &&
|
||||||
@ -1566,21 +1564,18 @@ virStorageBackendUpdateVolTargetInfo(virStorageSourcePtr target,
|
|||||||
|
|
||||||
int
|
int
|
||||||
virStorageBackendUpdateVolInfo(virStorageVolDefPtr vol,
|
virStorageBackendUpdateVolInfo(virStorageVolDefPtr vol,
|
||||||
bool updateCapacity,
|
|
||||||
bool withBlockVolFormat,
|
bool withBlockVolFormat,
|
||||||
unsigned int openflags)
|
unsigned int openflags)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if ((ret = virStorageBackendUpdateVolTargetInfo(&vol->target,
|
if ((ret = virStorageBackendUpdateVolTargetInfo(&vol->target,
|
||||||
updateCapacity,
|
|
||||||
withBlockVolFormat,
|
withBlockVolFormat,
|
||||||
openflags)) < 0)
|
openflags)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (vol->target.backingStore &&
|
if (vol->target.backingStore &&
|
||||||
(ret = virStorageBackendUpdateVolTargetInfo(vol->target.backingStore,
|
(ret = virStorageBackendUpdateVolTargetInfo(vol->target.backingStore,
|
||||||
updateCapacity,
|
|
||||||
withBlockVolFormat,
|
withBlockVolFormat,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT |
|
VIR_STORAGE_VOL_OPEN_DEFAULT |
|
||||||
VIR_STORAGE_VOL_OPEN_NOERROR) < 0))
|
VIR_STORAGE_VOL_OPEN_NOERROR) < 0))
|
||||||
@ -1594,15 +1589,13 @@ virStorageBackendUpdateVolInfo(virStorageVolDefPtr vol,
|
|||||||
* @target: target definition ptr of volume to update
|
* @target: target definition ptr of volume to update
|
||||||
* @fd: fd of storage volume to update, via virStorageBackendOpenVol*, or -1
|
* @fd: fd of storage volume to update, via virStorageBackendOpenVol*, or -1
|
||||||
* @sb: details about file (must match @fd, if that is provided)
|
* @sb: details about file (must match @fd, if that is provided)
|
||||||
* @updateCapacity: If true, updated capacity info will be stored
|
|
||||||
*
|
*
|
||||||
* Returns 0 for success, -1 on a legitimate error condition.
|
* Returns 0 for success, -1 on a legitimate error condition.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
|
virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
|
||||||
int fd,
|
int fd,
|
||||||
struct stat *sb,
|
struct stat *sb)
|
||||||
bool updateCapacity)
|
|
||||||
{
|
{
|
||||||
#if WITH_SELINUX
|
#if WITH_SELINUX
|
||||||
security_context_t filecon = NULL;
|
security_context_t filecon = NULL;
|
||||||
@ -1618,12 +1611,10 @@ virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
|
|||||||
/* Regular files may be sparse, so logical size (capacity) is not same
|
/* Regular files may be sparse, so logical size (capacity) is not same
|
||||||
* as actual allocation above
|
* as actual allocation above
|
||||||
*/
|
*/
|
||||||
if (updateCapacity)
|
target->capacity = sb->st_size;
|
||||||
target->capacity = sb->st_size;
|
|
||||||
} else if (S_ISDIR(sb->st_mode)) {
|
} else if (S_ISDIR(sb->st_mode)) {
|
||||||
target->allocation = 0;
|
target->allocation = 0;
|
||||||
if (updateCapacity)
|
target->capacity = 0;
|
||||||
target->capacity = 0;
|
|
||||||
} else if (fd >= 0) {
|
} else if (fd >= 0) {
|
||||||
off_t end;
|
off_t end;
|
||||||
/* XXX this is POSIX compliant, but doesn't work for CHAR files,
|
/* XXX this is POSIX compliant, but doesn't work for CHAR files,
|
||||||
@ -1639,8 +1630,7 @@ virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
target->allocation = end;
|
target->allocation = end;
|
||||||
if (updateCapacity)
|
target->capacity = end;
|
||||||
target->capacity = end;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!target->perms && VIR_ALLOC(target->perms) < 0)
|
if (!target->perms && VIR_ALLOC(target->perms) < 0)
|
||||||
|
@ -179,17 +179,14 @@ int virStorageBackendVolOpen(const char *path, struct stat *sb,
|
|||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
||||||
|
|
||||||
int virStorageBackendUpdateVolInfo(virStorageVolDefPtr vol,
|
int virStorageBackendUpdateVolInfo(virStorageVolDefPtr vol,
|
||||||
bool updateCapacity,
|
|
||||||
bool withBlockVolFormat,
|
bool withBlockVolFormat,
|
||||||
unsigned int openflags);
|
unsigned int openflags);
|
||||||
int virStorageBackendUpdateVolTargetInfo(virStorageSourcePtr target,
|
int virStorageBackendUpdateVolTargetInfo(virStorageSourcePtr target,
|
||||||
bool updateCapacity,
|
|
||||||
bool withBlockVolFormat,
|
bool withBlockVolFormat,
|
||||||
unsigned int openflags);
|
unsigned int openflags);
|
||||||
int virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
|
int virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
|
||||||
int fd,
|
int fd,
|
||||||
struct stat *sb,
|
struct stat *sb);
|
||||||
bool updateCapacity);
|
|
||||||
|
|
||||||
char *virStorageBackendStablePath(virStoragePoolObjPtr pool,
|
char *virStorageBackendStablePath(virStoragePoolObjPtr pool,
|
||||||
const char *devpath,
|
const char *devpath,
|
||||||
|
@ -152,14 +152,14 @@ virStorageBackendDiskMakeDataVol(virStoragePoolObjPtr pool,
|
|||||||
* -1 was returned indicating some other error than an open error.
|
* -1 was returned indicating some other error than an open error.
|
||||||
*/
|
*/
|
||||||
if (vol->source.partType == VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) {
|
if (vol->source.partType == VIR_STORAGE_VOL_DISK_TYPE_EXTENDED) {
|
||||||
if (virStorageBackendUpdateVolInfo(vol, true, false,
|
if (virStorageBackendUpdateVolInfo(vol, false,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT |
|
VIR_STORAGE_VOL_OPEN_DEFAULT |
|
||||||
VIR_STORAGE_VOL_OPEN_NOERROR) == -1)
|
VIR_STORAGE_VOL_OPEN_NOERROR) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
vol->target.allocation = vol->target.capacity =
|
vol->target.allocation = vol->target.capacity =
|
||||||
(vol->source.extents[0].end - vol->source.extents[0].start);
|
(vol->source.extents[0].end - vol->source.extents[0].start);
|
||||||
} else {
|
} else {
|
||||||
if (virStorageBackendUpdateVolInfo(vol, true, false,
|
if (virStorageBackendUpdateVolInfo(vol, false,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0)
|
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ virStorageBackendProbeTarget(virStorageSourcePtr target,
|
|||||||
return rc; /* Take care to propagate rc, it is not always -1 */
|
return rc; /* Take care to propagate rc, it is not always -1 */
|
||||||
fd = rc;
|
fd = rc;
|
||||||
|
|
||||||
if (virStorageBackendUpdateVolTargetInfoFD(target, fd, &sb, true) < 0)
|
if (virStorageBackendUpdateVolTargetInfoFD(target, fd, &sb) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (S_ISDIR(sb.st_mode)) {
|
if (S_ISDIR(sb.st_mode)) {
|
||||||
@ -902,7 +902,7 @@ virStorageBackendFileSystemRefresh(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||||||
|
|
||||||
if (vol->target.backingStore) {
|
if (vol->target.backingStore) {
|
||||||
ignore_value(virStorageBackendUpdateVolTargetInfo(vol->target.backingStore,
|
ignore_value(virStorageBackendUpdateVolTargetInfo(vol->target.backingStore,
|
||||||
true, false,
|
false,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT));
|
VIR_STORAGE_VOL_OPEN_DEFAULT));
|
||||||
/* If this failed, the backing file is currently unavailable,
|
/* If this failed, the backing file is currently unavailable,
|
||||||
* the capacity, allocation, owner, group and mode are unknown.
|
* the capacity, allocation, owner, group and mode are unknown.
|
||||||
@ -1183,10 +1183,8 @@ virStorageBackendFileSystemVolRefresh(virConnectPtr conn,
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Refresh allocation / permissions info in case its changed
|
/* Refresh allocation / capacity / permissions info in case its changed */
|
||||||
* don't update the capacity value for this pass
|
ret = virStorageBackendUpdateVolInfo(vol, false,
|
||||||
*/
|
|
||||||
ret = virStorageBackendUpdateVolInfo(vol, false, false,
|
|
||||||
VIR_STORAGE_VOL_FS_OPEN_FLAGS);
|
VIR_STORAGE_VOL_FS_OPEN_FLAGS);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -268,7 +268,7 @@ virStorageBackendGlusterRefreshVol(virStorageBackendGlusterStatePtr state,
|
|||||||
if (VIR_ALLOC(vol) < 0)
|
if (VIR_ALLOC(vol) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virStorageBackendUpdateVolTargetInfoFD(&vol->target, -1, st, true) < 0)
|
if (virStorageBackendUpdateVolTargetInfoFD(&vol->target, -1, st) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virStorageBackendGlusterSetMetadata(state, vol, name) < 0)
|
if (virStorageBackendGlusterSetMetadata(state, vol, name) < 0)
|
||||||
|
@ -161,7 +161,7 @@ virStorageBackendLogicalMakeVol(char **const groups,
|
|||||||
if (!vol->key && VIR_STRDUP(vol->key, groups[2]) < 0)
|
if (!vol->key && VIR_STRDUP(vol->key, groups[2]) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virStorageBackendUpdateVolInfo(vol, true, false,
|
if (virStorageBackendUpdateVolInfo(vol, false,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0)
|
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ virStorageBackendMpathNewVol(virStoragePoolObjPtr pool,
|
|||||||
if (virAsprintf(&vol->target.path, "/dev/%s", dev) < 0)
|
if (virAsprintf(&vol->target.path, "/dev/%s", dev) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virStorageBackendUpdateVolInfo(vol, true, true,
|
if (virStorageBackendUpdateVolInfo(vol, true,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0) {
|
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
|
|||||||
goto free_vol;
|
goto free_vol;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virStorageBackendUpdateVolInfo(vol, true, true,
|
if (virStorageBackendUpdateVolInfo(vol, true,
|
||||||
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0) {
|
VIR_STORAGE_VOL_OPEN_DEFAULT) < 0) {
|
||||||
retval = -1;
|
retval = -1;
|
||||||
goto free_vol;
|
goto free_vol;
|
||||||
|
Loading…
Reference in New Issue
Block a user