On Mon, Apr 11, 2016 at 07:16:24PM +0300, Olga Krishtal wrote:
Refreshes meta-information such as allocation, capacity, format,
etc.
Ploop volumes differ from other volume types. Path to volume is the path
to directory with image file root.hds and DiskDescriptor.xml.
https://openvz.org/Ploop/format
Due to this fact, operations of opening the volume have to be done once
again. get the information.
To decide whether the given volume is ploops one, it is necessary to check
the presence of root.hds and DiskDescriptor.xml files in volumes' directory.
Only in this case the volume can be manipulated as the ploops one.
Such strategy helps us to resolve problems that might occure, when we
upload some other volume type from ploop source.
Signed-off-by: Olga Krishtal <okrishtal(a)virtuozzo.com>
---
src/storage/storage_backend.c | 62 ++++++++++++++++++++++++++++++++++++++--
src/storage/storage_backend.h | 5 ++++
src/storage/storage_backend_fs.c | 20 ++++++++++---
src/util/virstoragefile.c | 7 +++--
4 files changed, 85 insertions(+), 9 deletions(-)
@@ -84,14 +85,22 @@ virStorageBackendProbeTarget(virStorageSourcePtr
target,
goto cleanup;
if (S_ISDIR(sb.st_mode)) {
- target->format = VIR_STORAGE_FILE_DIR;
- ret = 0;
- goto cleanup;
+ if (virStorageBackendIsPloopDir(target->path)) {
+ if (virStorageBackendRedoPloopUpdate(target, &sb, &fd,
+ VIR_STORAGE_VOL_FS_PROBE_FLAGS)
+ < 0)
+ goto cleanup;
+ format = VIR_STORAGE_FILE_PLOOP;
+ } else {
+ target->format = VIR_STORAGE_FILE_DIR;
+ ret = 0;
+ goto cleanup;
+ }
}
if (!(meta = virStorageFileGetMetadataFromFD(target->path,
fd,
- VIR_STORAGE_FILE_AUTO,
+ format,
This change does not seem necessary.
RedoPloopUpdate should point the fd at the root.hds file which should
have the right "WithouFreSpacExt" magic and fill out the format.
ACK with VIR_STORAGE_FILE_AUTO left in.
Jan