On Fri, Sep 13, 2013 at 09:00:00PM +0100, Al Viro wrote: > > - d_lru_shrink_move: move from the "global" lru list to a private shrinker > > list > > - d_shrink_add/del: fairly obvious. > > > > And then "denty_lru_add/del" that actually take the current state into > > account and do the right thing. Those we had before, I'm just > > explaining the difference from the low-level operations that have > > fixed "from this state to that" semantics > > Looks sane; FWIW, the variant I'm playing with uses two independent > flags for "shrinker" and "per-sb", but AFAICS that doesn't yield better > code.
Actually, it does yield slightly better code... Look - if you take your patch and replace LRU_LIST | SHRINK_LIST combination with bare SHRINK_LIST (which can't occur right now). Then all transitions turn into flipping a single bit, check in dentry_lru_add() becomes if (!(flags & (SHRINK | LRU)) and dentry_lru_del() -- if (... & SHRINK) return ...; if (... & LRU) return ... It can be done as a followup, anyway - better not mix that with fixes. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/