Bug 104911
Summary: | caching issue | ||
---|---|---|---|
Product: | File System | Reporter: | Leandro Awa (lawa) |
Component: | VFS | Assignee: | fs_vfs |
Status: | NEW --- | ||
Severity: | normal | CC: | szg00000, trondmy |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 4.1.6 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
log file from 'git bisect' testing
[PATCH] namei: results of d_is_negative() should be checked after dentry revalidation |
Description
Leandro Awa
2015-09-23 22:39:23 UTC
Created attachment 189641 [details]
log file from 'git bisect' testing
Fyi. From our 'git bisect' testing, the following commit appears to be the possible cause of the behavior we've been seeing: commit 766c4cbfacd8634d7580bac6a1b8456e63de3e84 Author: Al Viro <viro@zeniv.linux.org.uk> Date: Thu May 7 19:24:57 2015 -0400 namei: d_is_negative() should be checked before ->d_seq validation Fetching ->d_inode, verifying ->d_seq and finding d_is_negative() to be true does *not* mean that inode we'd fetched had been NULL - that holds only while ->d_seq is still unchanged. Shift d_is_negative() checks into lookup_fast() prior to ->d_seq verification. Reported-by: Steven Rostedt <rostedt@goodmis.org> Tested-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> -- Leandro Awa Yes, that looks bad. The negative lookup code in lookup_fast() is circumventing the revalidation of the dentry. Reassigning to the VFS maintainer. Created attachment 189751 [details]
[PATCH] namei: results of d_is_negative() should be checked after dentry revalidation
Please could you check whether or not the attached patch helps?
Fyi. The patch definitely helped. I just completed a test run and it passed. Thank you. -- Leandro Awa |