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:
Ján Tomko 2015-02-19 13:43:03 +01:00
parent a760ba3a7f
commit d3452a3f73
8 changed files with 16 additions and 31 deletions

View File

@ -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)

View File

@ -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,

View File

@ -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;
} }

View File

@ -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;

View File

@ -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)

View File

@ -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;

View File

@ -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;
} }

View File

@ -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;