This is a note to let you know that I've just added the patch titled
cifs: don't instantiate new dentries in readdir for inodes that need to be
revalidated immediately
to the 3.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
cifs-don-t-instantiate-new-dentries-in-readdir-for-inodes-that-need-to-be-revalidated-immediately.patch
and it can be found in the queue-3.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From 757c4f6260febff982276818bb946df89c1105aa Mon Sep 17 00:00:00 2001
From: Jeff Layton <[email protected]>
Date: Wed, 7 Aug 2013 10:29:08 -0400
Subject: cifs: don't instantiate new dentries in readdir for inodes that need
to be revalidated immediately
From: Jeff Layton <[email protected]>
commit 757c4f6260febff982276818bb946df89c1105aa upstream.
David reported that commit c2b93e06 (cifs: only set ops for inodes in
I_NEW state) caused a regression with mfsymlinks. Prior to that patch,
if a mfsymlink dentry was instantiated at readdir time, the inode would
get a new set of ops when it was revalidated. After that patch, this
did not occur.
This patch addresses this by simply skipping instantiating dentries in
the readdir codepath when we know that they will need to be immediately
revalidated. The next attempt to use that dentry will cause a new lookup
to occur (which is basically what we want to happen anyway).
Reported-and-Tested-by: David McBride <[email protected]>
Cc: "Stefan (metze) Metzmacher" <[email protected]>
Cc: Sachin Prabhu <[email protected]>
Signed-off-by: Jeff Layton <[email protected]>
Signed-off-by: Steve French <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/cifs/readdir.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -111,6 +111,14 @@ cifs_prime_dcache(struct dentry *parent,
return;
}
+ /*
+ * If we know that the inode will need to be revalidated immediately,
+ * then don't create a new dentry for it. We'll end up doing an on
+ * the wire call either way and this spares us an invalidation.
+ */
+ if (fattr->cf_flags & CIFS_FATTR_NEED_REVAL)
+ return;
+
dentry = d_alloc(parent, name);
if (!dentry)
return;
Patches currently in stable-queue which might be from [email protected] are
queue-3.10/lockd-don-t-call-utsname-nodename-from-nlmclnt_setlockargs.patch
queue-3.10/sunrpc-if-the-rpcbind-channel-is-disconnected-fail-the-call-to-unregister.patch
queue-3.10/cifs-don-t-instantiate-new-dentries-in-readdir-for-inodes-that-need-to-be-revalidated-immediately.patch
queue-3.10/sunrpc-don-t-auto-disconnect-from-the-local-rpcbind-socket.patch
queue-3.10/cifs-extend-the-buffer-length-enought-for-sprintf-using.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html