> From: Yigit, Ferruh > Sent: Wednesday, June 1, 2016 2:18 PM > To: dev at dpdk.org > Cc: Burakov, Anatoly <anatoly.burakov at intel.com>; Olivier Matz > <olivier.matz at 6wind.com>; Yigit, Ferruh <ferruh.yigit at intel.com> > Subject: [PATCH] ivshmem: add all memzones of mempool to metada > > Mempool consist of multiple memzones, at least from two of them. > ivshmem assumes mempool and elements are all in same memzone. > > Updating code to add all memzones when a mempool added. > > Fixes: d1d914ebbc25 ("mempool: allocate in several memory chunks by > default") > > Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com> > --- > lib/librte_ivshmem/rte_ivshmem.c | 30 ++++++++++++++++++++++-------- > 1 file changed, 22 insertions(+), 8 deletions(-) > > diff --git a/lib/librte_ivshmem/rte_ivshmem.c > b/lib/librte_ivshmem/rte_ivshmem.c > index c8b332c..5c83920 100644 > --- a/lib/librte_ivshmem/rte_ivshmem.c > +++ b/lib/librte_ivshmem/rte_ivshmem.c > @@ -548,25 +548,39 @@ add_ring_to_metadata(const struct rte_ring * r, > } > > static int > -add_mempool_to_metadata(const struct rte_mempool * mp, > - struct ivshmem_config * config) > +add_mempool_memzone_to_metadata(const void *addr, > + struct ivshmem_config *config) > { > - struct rte_memzone * mz; > - int ret; > + struct rte_memzone *mz; > > - mz = get_memzone_by_addr(mp); > - ret = 0; > + mz = get_memzone_by_addr(addr); > > if (!mz) { > RTE_LOG(ERR, EAL, "Cannot find memzone for > mempool!\n"); > return -1; > } > > - /* mempool consists of memzone and ring */ > - ret = add_memzone_to_metadata(mz, config); > + return add_memzone_to_metadata(mz, config); > +} > + > +static int > +add_mempool_to_metadata(const struct rte_mempool *mp, > + struct ivshmem_config *config) > +{ > + struct rte_mempool_memhdr *memhdr; > + int ret; > + > + ret = add_mempool_memzone_to_metadata(mp, config); > if (ret < 0) > return -1; > > + STAILQ_FOREACH(memhdr, &mp->mem_list, next) { > + ret = add_mempool_memzone_to_metadata(memhdr- > >addr, config); > + if (ret < 0) > + return -1; > + } > + > + /* mempool consists of memzone and ring */ > return add_ring_to_metadata(mp->ring, config); > } > > -- > 2.5.5
Acked-by: Anatoly Burakov <anatoly.burakov at intel.com>