
On 9/28/18 12:54 AM, Jim Fehlig wrote:
I've attempted to use virt-manager to create a new VM that uses a volume from an rbd-based network pool, but have not been able to progress past step 4/5 where VM storage is selected. It appears virt-manager has problems properly detecting the volume as network-based storage, but before investigating those further I have a question about the syntax of the <target> element of a storage volume. The storage management page [0] of the website describing rbd volumes claims that the <path> subelement contains an 'rbd:rbd/' prefix in the volume path. But the page describing pool and volume format [1] syntax does not contain any info wrt specifying network URLs in the <path> subelement.
The [1] pool/vol page is meant to be a bit more "generic" with respect to the general format of the <target>...<path>... field because some fields can have different formats/expectations. The [0] storage page should represent more details for each storage backend's expectations over the format to be used. Although my recollection is that it's modified/patched far less frequently than the [1] page. When in doubt though, I usually search "tests/*/*.{xml|args} and then of course looking at the source code. If I must, I'll look at the RNG files. In this case storagevol.rng says @path could be "anyURI" or "absFilePath", nothing specific for RBD. My git history search shows [0] seems to have been originally written and intended as is seen now (commit 74951eade). In the long run it doesn't matter if the <path> has the "rbd:" prefix because virStorageSourceParseRBDColonString will strip it before duplicating and then later qemuBuildNetworkDriveStr will slap it back onto the command line. How's that for a round-about way of saying - it doesn't seem to matter.
What is the expectation wrt the <path> subelement of the <target> element within rbd volume config? In general, should the <path> subelement encode the scheme (e.g. rbd://) of a network-based volume? And if so, should it be formatted in the traditional 'rbd://' vs 'rbd:rbd/' syntax?
I don't think "rbd:rbd/" is the prefix, just the "rbd:". It just so happens the example shows the RBD pool "source" name as "rbd" and the "volume" as "myvol". If you look at the <key> that's more indicative of path to the volume. The example when paired with the pool of source name "rbdpool" probably should have shown "rbd:rbdpool/myvol" and the key "rbdpool/myvol" (to be less confusing). As for "expected" format - well being consistent would be "nice" - probably depends on when the code was originally added though. Adding new or consistent formats ends up being a coding and documenting exercise and we never seem to be able to "lose" old formats and aren't supposed to "rewrite" someone's files - so we're stuck. John
Regards, Jim
[0] https://libvirt.org/storage.html#StorageBackendRBD [1] https://libvirt.org/formatstorage.html#StorageVolTarget
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list