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@xxxxxxxxxxxx> > --- > 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, > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list