On Mon, Sep 15, 2014 at 09:22:57AM -0700, Linus Torvalds wrote: > On Mon, Sep 15, 2014 at 8:55 AM, Josef Bacik <jbacik@xxxxxx> wrote: > > > > I can't test on 3.17 proper since the Fusion IO driver doesn't build > > properly there and I'm not being paid to work on it anymore so I'm not > > fixing it ;). Thanks for fixing this, I've pulled back 99d263d4c5b2 which > > will do us just fine. > > Ok. I'm cc'ing stable to know that > > 99d263d4c5b2 ("vfs: fix bad hashing of dentries") > > should be added to the queues for 3.10+. > > Greg&co - it's a simple fix for a performance regression. Not > end-of-the-world, but if it ends up being in the FB kernel trees, > might as well get it back-ported to the other stable trees too. > > The other performance issues I found are actually potentially worse, > but they aren't regressions and they hit only when using namespaces. > Which mostly nobody does on old kernels anyway. More of a "systemd > uses namespaces for /tmp, and then it's quite noticeable as slowing > down pathname lookups there if you benchmark it". > > So the single commit Josef mentions is likely sufficient for stable. Thanks, now queued up. Note, I had to change the 3.10-stable patch a bit due to some rejects. Here's a diff of the diffs to show the difference if anyone wants to check it. thanks, greg k-h --- queue-3.16/vfs-fix-bad-hashing-of-dentries.patch 2014-09-15 09:27:57.072950053 -0700 +++ queue-3.10/vfs-fix-bad-hashing-of-dentries.patch 2014-09-15 09:29:06.851839582 -0700 @@ -76,13 +76,13 @@ --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -106,8 +106,7 @@ static inline struct hlist_bl_head *d_ha +@@ -108,8 +108,7 @@ static inline struct hlist_bl_head *d_ha unsigned int hash) { hash += (unsigned long) parent / L1_CACHE_BYTES; -- hash = hash + (hash >> d_hash_shift); -- return dentry_hashtable + (hash & d_hash_mask); -+ return dentry_hashtable + hash_32(hash, d_hash_shift); +- hash = hash + (hash >> D_HASHBITS); +- return dentry_hashtable + (hash & D_HASHMASK); ++ return dentry_hashtable + hash_32(hash, D_HASHBITS); } /* Statistics gathering. */ @@ -96,7 +96,7 @@ #include <asm/uaccess.h> #include "internal.h" -@@ -1629,8 +1630,7 @@ static inline int nested_symlink(struct +@@ -1647,8 +1648,7 @@ static inline int can_lookup(struct inod static inline unsigned int fold_hash(unsigned long hash) { -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html