mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
fs: change d_hash for rcu-walk
Change d_hash so it may be called from lock-free RCU lookups. See similar patch for d_compare for details. For in-tree filesystems, this is just a mechanical change. Signed-off-by: Nick Piggin <[email protected]>
This commit is contained in:
parent
621e155a35
commit
b1e6a015a5
25 changed files with 94 additions and 51 deletions
|
|
@ -13,13 +13,15 @@
|
|||
typedef int (*toupper_t)(int);
|
||||
|
||||
static int affs_toupper(int ch);
|
||||
static int affs_hash_dentry(struct dentry *, struct qstr *);
|
||||
static int affs_hash_dentry(const struct dentry *,
|
||||
const struct inode *, struct qstr *);
|
||||
static int affs_compare_dentry(const struct dentry *parent,
|
||||
const struct inode *pinode,
|
||||
const struct dentry *dentry, const struct inode *inode,
|
||||
unsigned int len, const char *str, const struct qstr *name);
|
||||
static int affs_intl_toupper(int ch);
|
||||
static int affs_intl_hash_dentry(struct dentry *, struct qstr *);
|
||||
static int affs_intl_hash_dentry(const struct dentry *,
|
||||
const struct inode *, struct qstr *);
|
||||
static int affs_intl_compare_dentry(const struct dentry *parent,
|
||||
const struct inode *pinode,
|
||||
const struct dentry *dentry, const struct inode *inode,
|
||||
|
|
@ -64,13 +66,13 @@ affs_get_toupper(struct super_block *sb)
|
|||
* Note: the dentry argument is the parent dentry.
|
||||
*/
|
||||
static inline int
|
||||
__affs_hash_dentry(struct dentry *dentry, struct qstr *qstr, toupper_t toupper)
|
||||
__affs_hash_dentry(struct qstr *qstr, toupper_t toupper)
|
||||
{
|
||||
const u8 *name = qstr->name;
|
||||
unsigned long hash;
|
||||
int i;
|
||||
|
||||
i = affs_check_name(qstr->name,qstr->len);
|
||||
i = affs_check_name(qstr->name, qstr->len);
|
||||
if (i)
|
||||
return i;
|
||||
|
||||
|
|
@ -84,14 +86,16 @@ __affs_hash_dentry(struct dentry *dentry, struct qstr *qstr, toupper_t toupper)
|
|||
}
|
||||
|
||||
static int
|
||||
affs_hash_dentry(struct dentry *dentry, struct qstr *qstr)
|
||||
affs_hash_dentry(const struct dentry *dentry, const struct inode *inode,
|
||||
struct qstr *qstr)
|
||||
{
|
||||
return __affs_hash_dentry(dentry, qstr, affs_toupper);
|
||||
return __affs_hash_dentry(qstr, affs_toupper);
|
||||
}
|
||||
static int
|
||||
affs_intl_hash_dentry(struct dentry *dentry, struct qstr *qstr)
|
||||
affs_intl_hash_dentry(const struct dentry *dentry, const struct inode *inode,
|
||||
struct qstr *qstr)
|
||||
{
|
||||
return __affs_hash_dentry(dentry, qstr, affs_intl_toupper);
|
||||
return __affs_hash_dentry(qstr, affs_intl_toupper);
|
||||
}
|
||||
|
||||
static inline int __affs_compare_dentry(unsigned int len,
|
||||
|
|
|
|||
Loading…
Reference in a new issue