Messages in this thread | | | Date | Tue, 1 Nov 2022 16:09:25 +0800 | Subject | Re: [PATCH 2/2] kernfs: dont take i_lock on revalidate | From | Ian Kent <> |
| |
On 1/11/22 15:46, Amir Goldstein wrote: > On Tue, Oct 18, 2022 at 5:58 AM Ian Kent <raven@themaw.net> wrote: >> In kernfs_dop_revalidate() when the passed in dentry is negative the >> dentry directory is checked to see if it has changed and if so the >> negative dentry is discarded so it can refreshed. During this check >> the dentry inode i_lock is taken to mitigate against a possible >> concurrent rename. >> >> But if it's racing with a rename, becuase the dentry is negative, it >> can't be the source it must be the target and it must be going to do >> a d_move() otherwise the rename will return an error. >> >> In this case the parent dentry of the target will not change, it will >> be the same over the d_move(), only the source dentry parent may change >> so the inode i_lock isn't needed. > You meant d_lock. > Same for the commit title.
Ha, well how do you like that, such an obvious mistake, how
did I not see it?
Not sure what to do about it now though ...
Any suggestions anyone?
Ian
| |