From: Thomas Graf > On 01/21/15 at 04:08pm, Herbert Xu wrote: ... > > Essentially I need a bit to indicate an entry in the bucket chain > > should be skipped, either because it has just been removed or that > > it is a walker entry (see xfrm_state_walk). > > > > The way it'll work then is exactly the same as xfrm_state_walk, > > except that the linked list is broken up into individual buckets. > > > > Of course we'll still need to postpone resizes (and rehashes which > > is what my work is about) during a walk but I think that's a fair > > price to pay. > > If I understand this correctly we also need to block out parallel > walkers and we need to start taking bucket locks while walking to > modify the walker mark bit in peace. Running 'walker | grep foo | less' really shouldn't stop any activity, including further requests by the same person to dump the same table in a different window. I would also expect the above request to be able to continue correctly when restarted hours later (unless something unusual - like a resize - happens). Suppressing 'table shrink' because you think a walker might be active if probably a good idea, and just requires a timestamp of the last walk action. Thought... It is possible to break walking only on hash chain boundaries? At least in the case where the response buffer is large enough for a full 'chain' of entries. Also what happens if there is a page fault on any userpage? You don't want to be holding a mutex. David -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html