[libvirt] [PATCHv2 08/33] storage: Add storage file API to read file headers
Eric Blake
eblake at redhat.com
Thu May 22 23:13:49 UTC 2014
On 05/22/2014 07:47 AM, Peter Krempa wrote:
> Add storage driver based functions to access headers of storage files
> for metadata extraction. Along with this patch a local filesystem and
> gluster via libgfapi implementation is provided. The gluster
> implementation is based on code of the saferead_lim function.
> ---
> src/storage/storage_backend.h | 7 ++++
> src/storage/storage_backend_fs.c | 30 ++++++++++++++++
> src/storage/storage_backend_gluster.c | 66 +++++++++++++++++++++++++++++++++++
> src/storage/storage_driver.c | 40 +++++++++++++++++++++
> src/storage/storage_driver.h | 3 ++
> 5 files changed, 146 insertions(+)
>
> +++ b/src/storage/storage_backend_gluster.c
> @@ -638,6 +638,71 @@ virStorageFileBackendGlusterStat(virStorageSourcePtr src,
> }
>
>
> +static ssize_t
> +virStorageFileBackendGlusterReadHeader(virStorageSourcePtr src,
> + ssize_t max_len,
> + char **buf)
> +{
> + virStorageFileBackendGlusterPrivPtr priv = src->drv->priv;
> + glfs_fd_t *fd = NULL;
> + size_t alloc = 0;
> + size_t size = 0;
> + int save_errno;
> + ssize_t ret = -1;
> +
> + *buf = NULL;
> +
> + if (!(fd = glfs_open(priv->vol, src->path, O_RDONLY))) {
> + virReportSystemError(errno, _("Failed to open file '%s'"),
> + src->path);
> + goto cleanup;
> + }
> +
> + /* code below is shamelesly stolen from saferead_lim */
s/shamelesly/shamelessly/
> + if (!src->drv->backend->storageFileReadHeader) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("storage file header reading is not supported for "
> + "storage type %s (protocol: %s)'"),
> + virStorageTypeToString(src->type),
> + virStorageNetProtocolTypeToString(src->protocol));
Oh slick - the earlier patch that adds protocol==0 as "none" rather than
"nbd" makes this message tolerable even for non-network storage types.
Less special-casing is always good :)
> + return -1;
Isn't this supposed to be 'return -2' according to the function
documentation?
ACK if you agree about the return value fix, and if it is the only
change you make besides the typo fix.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140522/983e4f55/attachment-0001.sig>
More information about the libvir-list
mailing list