On Thu, Nov 30, 2017 at 5:21 PM, Herbert Xu <herb...@gondor.apana.org.au> wrote: > On Thu, Nov 30, 2017 at 05:15:16PM -0800, Tom Herbert wrote: >> >> We don't need a guarantee of stability, but what I am seeing is that >> we're consisitently dropping entries on when doing a multi-part >> netlink walk. We start iterating over the table filling in the netlink >> info. But eventually the netlink info fills up and returns an error. >> netlink dump gets called again but now the iter of the table returns >> the object following the one that would have overflowed the netlink >> buffer. So the result I was seeing is that we dropped one object in in >> each pass. > > Thanks Tom! This information is very useful. > > It sounds like this problem isn't specific to ila and would exist > for all rhashtable users that dump through netlink. Let me think > about this a little bit more. > Right. Also note that the first patch is inspired by netlink dump handling also. When we reach the end of the table (walk_next returns NULL), we'll return a non-zero skb->len if some records have been written to the buffer. On the next call to the dump we need to bounce out immediately with zero length returned. Resetting the walker table in walk start because it's NULL results in infinite loop if -EAGAIN is ignored by the caller (rhashtable_walk_start returning void is nice side effect of this).
Tom > Cheers, > -- > Email: Herbert Xu <herb...@gondor.apana.org.au> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt