[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180423080749.qw4tpeqvzjjin4dv@gondor.apana.org.au>
Date: Mon, 23 Apr 2018 16:07:49 +0800
From: Herbert Xu <herbert@...dor.apana.org.au>
To: NeilBrown <neilb@...e.com>
Cc: Thomas Graf <tgraf@...g.ch>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 6/6] rhashtable: add rhashtable_walk_prev()
On Thu, Apr 19, 2018 at 09:08:07AM +1000, NeilBrown wrote:
>
> The need is essentially the same as the need for
> rhashtable_walk_peek(). The difference is that the actual behaviour can
> be documented briefly (and so understood easily) without enumerating
> multiple special cases.
> rhashtable_walk_peek() is much the same as
> rhashtable_walk_prev() ?: rhashtable_walk_next()
>
> The need arises when you need to "stop" a walk and then restart at the
> same object, not the next one. i.e. the last object returned before the
> "stop" wasn't acted on.
> This happens with seq_file if the buffer space for ->show() is not
> sufficient to format an object. In the case, seq_file will stop() the
> iteration, make more space available (either by flushing or by
> reallocing) and will start again at the same location.
> If the seq_file client stored the rhashtable_iter in the seq_file
> private data, it can use rhasthable_walk_prev() to recover its position
> if that object is still in the hash table. If it isn't still present,
> rhashtable_walk_next() can be used to get the next one. In some cases
> it can be useful for the client to know whether it got the previous one
> or not.
I see. I'm OK with this provided that you will also remove/convert
users of rhashtable_walk_peek.
I don't think we need two functions that do almost the same thing.
Thanks,
--
Email: Herbert Xu <herbert@...dor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Powered by blists - more mailing lists