On Mon, Dec 14, 2015 at 10:57 PM, John Ferlan <jferlan(a)redhat.com> wrote:
On 12/03/2015 09:35 AM, Matthias Gatto wrote:
> Create virStorageSourceGetBackingStore function in
> preparation for quorum:
> Actually, if we want to get a backing store inside a virStorageSource
> we have to do it manually(src->backingStore = backingStore).
> The problem is that with a quorum, a virStorageSource
> can contain multiple backing stores, and src->backingStore can
> be treated as a virStorageSourcePtr or a virStorageSourcePtrPtr.
>
> Due to these reason, we need to simplify the manipulation of
> virStorageSource, and create a function to get the asked
> backingStore in a virStorageSource
>
> For now, this function only return the backingStore field
More simply said -
Create helper virStorageSourceGetBackingStore in order to make it easier
to access the storage backingStore pointer. Future patches will adjust
the backingStore pointer to become a table or list of backingStorePtr's
[Sure you're doing it because of the quorum changes, but it's
essentially creating an accessor function]
>
> Signed-off-by: Matthias Gatto <matthias.gatto(a)outscale.com>
> ---
> src/libvirt_private.syms | 1 +
> src/util/virstoragefile.c | 10 ++++++++++
> src/util/virstoragefile.h | 3 +++
> 3 files changed, 14 insertions(+)
>
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index dd085c3..5354a4a 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -2190,6 +2190,7 @@ virStorageSourceClear;
> virStorageSourceCopy;
> virStorageSourceFree;
> virStorageSourceGetActualType;
> +virStorageSourceGetBackingStore;
> virStorageSourceGetSecurityLabelDef;
> virStorageSourceInitChainElement;
> virStorageSourceIsEmpty;
> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index 2aa1d90..016beaa 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -1809,6 +1809,16 @@ virStorageSourcePoolDefCopy(const virStorageSourcePoolDef
*src)
> }
>
>
> +virStorageSourcePtr
> +virStorageSourceGetBackingStore(const virStorageSource *src,
> + size_t pos ATTRIBUTE_UNUSED)
> +{
> + if (!src)
I think perhaps Peter's point from his review is
if (!src || pos > 0)
IOW: range checking for pos
Eventually patch 5 will make a real check...
In order to make some progress on this series - at least the first 5 or
6 patches - I can make the change if that is what Peter had in mind...
John
> + return NULL;
> + return src->backingStore;
> +}
> +
> +
> /**
> * virStorageSourcePtr:
> *
> diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
> index b98fe25..8cd4854 100644
> --- a/src/util/virstoragefile.h
> +++ b/src/util/virstoragefile.h
> @@ -289,6 +289,9 @@ struct _virStorageSource {
> # define DEV_BSIZE 512
> # endif
>
> +virStorageSourcePtr virStorageSourceGetBackingStore(const virStorageSource *src,
> + size_t pos);
> +
> int virStorageFileProbeFormat(const char *path, uid_t uid, gid_t gid);
> int virStorageFileProbeFormatFromBuf(const char *path,
> char *buf,
>
Thank you for the review, and your changes on v8.
Sorry for the check, I was thinking it unnecessary because we do it on patch 5.