fs: change d_compare for rcu-walk
Change d_compare so it may be called from lock-free RCU lookups. This does put significant restrictions on what may be done from the callback, however there don't seem to have been any problems with in-tree fses. If some strange use case pops up that _really_ cannot cope with the rcu-walk rules, we can just add new rcu-unaware callbacks, which would cause name lookup to drop out of rcu-walk mode. For in-tree filesystems, this is just a mechanical change. Signed-off-by: Nick Piggin <npiggin@kernel.dk>
This commit is contained in:
@@ -1437,7 +1437,9 @@ struct dentry * __d_lookup(struct dentry * parent, struct qstr * name)
|
||||
*/
|
||||
qstr = &dentry->d_name;
|
||||
if (parent->d_op && parent->d_op->d_compare) {
|
||||
if (parent->d_op->d_compare(parent, qstr, name))
|
||||
if (parent->d_op->d_compare(parent, parent->d_inode,
|
||||
dentry, dentry->d_inode,
|
||||
qstr->len, qstr->name, name))
|
||||
goto next;
|
||||
} else {
|
||||
if (qstr->len != len)
|
||||
|
Reference in New Issue
Block a user