On 11/12/2013 09:00 AM, Peter Krempa wrote:
On 11/12/13 05:19, Eric Blake wrote:
> Putting together pieces from previous patches, it is now possible
> for 'virsh dumpxml --pool gluster volname' to report metadata
Did you mean 'virsh vol-dumpxml --pool ... '?
Yes.
>
> +static int
This function is declared as an int, but ...
> +virStorageBackendGlusterReadHeader(glfs_fd_t *fd,
> + const char *name,
> + int maxlen,
> + char **buf)
> +{
> + char *s;
> + size_t nread = 0;
.. returns size_t. This could overflow normally, but is guarded by
maxlen. Okay.
I'll improve the types.
> + if (!(fd = glfs_open(state->vol, name, O_RDONLY|
O_NONBLOCK | O_NOCTTY))) {
> + if ((errno == ENOENT || errno == ELOOP) &&
> + S_ISLNK(st->st_mode)) {
> + VIR_WARN("ignoring dangling symlink '%s'", name);
> + ret = 0;
> + } else {
> + virReportSystemError(errno, _("cannot open volume
'%s'"), name);
> + }
> + goto cleanup;
> + }
Now that you actually open the volume file and probe it, you need to
kill the comment added in previous patch:
+ if (VIR_ALLOC(vol) < 0 ||
+ VIR_STRDUP(vol->name, name) < 0 ||
+ virAsprintf(&vol->key, "%s%s/%s",
+ *pool == '/' ? "" : "/", pool,
vol->name) < 0)
+ goto cleanup;
+
+ /* FIXME - must open files to determine if they are non-raw */
+ vol->type = VIR_STORAGE_VOL_NETWORK;
+ vol->target.format = VIR_STORAGE_FILE_RAW;
+ vol->capacity = vol->allocation = st->st_size;
Good catch.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org