mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-03 19:53:32 +00:00
get rid of 'parent' argument of ->d_compare()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
d3fe19852e
commit
6fa67e7075
@ -12,7 +12,7 @@ prototypes:
|
|||||||
int (*d_revalidate)(struct dentry *, unsigned int);
|
int (*d_revalidate)(struct dentry *, unsigned int);
|
||||||
int (*d_weak_revalidate)(struct dentry *, unsigned int);
|
int (*d_weak_revalidate)(struct dentry *, unsigned int);
|
||||||
int (*d_hash)(const struct dentry *, struct qstr *);
|
int (*d_hash)(const struct dentry *, struct qstr *);
|
||||||
int (*d_compare)(const struct dentry *, const struct dentry *,
|
int (*d_compare)(const struct dentry *,
|
||||||
unsigned int, const char *, const struct qstr *);
|
unsigned int, const char *, const struct qstr *);
|
||||||
int (*d_delete)(struct dentry *);
|
int (*d_delete)(struct dentry *);
|
||||||
int (*d_init)(struct dentry *);
|
int (*d_init)(struct dentry *);
|
||||||
|
@ -585,3 +585,10 @@ in your dentry operations instead.
|
|||||||
in the instances. Rationale: !@#!@# security_d_instantiate() needs to be
|
in the instances. Rationale: !@#!@# security_d_instantiate() needs to be
|
||||||
called before we attach dentry to inode and !@#!@##!@$!$#!@#$!@$!@$ smack
|
called before we attach dentry to inode and !@#!@##!@$!$#!@#$!@$!@$ smack
|
||||||
->d_instantiate() uses not just ->getxattr() but ->setxattr() as well.
|
->d_instantiate() uses not just ->getxattr() but ->setxattr() as well.
|
||||||
|
--
|
||||||
|
[mandatory]
|
||||||
|
->d_compare() doesn't get parent as a separate argument anymore. If you
|
||||||
|
used it for finding the struct super_block involved, dentry->d_sb will
|
||||||
|
work just as well; if it's something more complicated, use dentry->d_parent.
|
||||||
|
Just be careful not to assume that fetching it more than once will yield
|
||||||
|
the same value - in RCU mode it could change under you.
|
||||||
|
@ -931,7 +931,7 @@ struct dentry_operations {
|
|||||||
int (*d_revalidate)(struct dentry *, unsigned int);
|
int (*d_revalidate)(struct dentry *, unsigned int);
|
||||||
int (*d_weak_revalidate)(struct dentry *, unsigned int);
|
int (*d_weak_revalidate)(struct dentry *, unsigned int);
|
||||||
int (*d_hash)(const struct dentry *, struct qstr *);
|
int (*d_hash)(const struct dentry *, struct qstr *);
|
||||||
int (*d_compare)(const struct dentry *, const struct dentry *,
|
int (*d_compare)(const struct dentry *,
|
||||||
unsigned int, const char *, const struct qstr *);
|
unsigned int, const char *, const struct qstr *);
|
||||||
int (*d_delete)(const struct dentry *);
|
int (*d_delete)(const struct dentry *);
|
||||||
int (*d_init)(struct dentry *);
|
int (*d_init)(struct dentry *);
|
||||||
|
@ -78,7 +78,7 @@ static void ll_release(struct dentry *de)
|
|||||||
* INVALID) so d_lookup() matches it, but we have no lock on it (so
|
* INVALID) so d_lookup() matches it, but we have no lock on it (so
|
||||||
* lock_match() fails) and we spin around real_lookup().
|
* lock_match() fails) and we spin around real_lookup().
|
||||||
*/
|
*/
|
||||||
static int ll_dcompare(const struct dentry *parent, const struct dentry *dentry,
|
static int ll_dcompare(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str,
|
unsigned int len, const char *str,
|
||||||
const struct qstr *name)
|
const struct qstr *name)
|
||||||
{
|
{
|
||||||
|
@ -227,7 +227,7 @@ adfs_hash(const struct dentry *parent, struct qstr *qstr)
|
|||||||
* requirements of the underlying filesystem.
|
* requirements of the underlying filesystem.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
adfs_compare(const struct dentry *parent, const struct dentry *dentry,
|
adfs_compare(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -14,11 +14,11 @@ typedef int (*toupper_t)(int);
|
|||||||
|
|
||||||
static int affs_toupper(int ch);
|
static int affs_toupper(int ch);
|
||||||
static int affs_hash_dentry(const struct dentry *, struct qstr *);
|
static int affs_hash_dentry(const struct dentry *, struct qstr *);
|
||||||
static int affs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
static int affs_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name);
|
unsigned int len, const char *str, const struct qstr *name);
|
||||||
static int affs_intl_toupper(int ch);
|
static int affs_intl_toupper(int ch);
|
||||||
static int affs_intl_hash_dentry(const struct dentry *, struct qstr *);
|
static int affs_intl_hash_dentry(const struct dentry *, struct qstr *);
|
||||||
static int affs_intl_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
static int affs_intl_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name);
|
unsigned int len, const char *str, const struct qstr *name);
|
||||||
|
|
||||||
const struct dentry_operations affs_dentry_operations = {
|
const struct dentry_operations affs_dentry_operations = {
|
||||||
@ -131,7 +131,7 @@ static inline int __affs_compare_dentry(unsigned int len,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
affs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
affs_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ affs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
affs_intl_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
affs_intl_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
return __affs_compare_dentry(len, str, name, affs_intl_toupper,
|
return __affs_compare_dentry(len, str, name, affs_intl_toupper,
|
||||||
|
@ -903,7 +903,7 @@ static int cifs_ci_hash(const struct dentry *dentry, struct qstr *q)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cifs_ci_compare(const struct dentry *parent, const struct dentry *dentry,
|
static int cifs_ci_compare(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct nls_table *codepage = CIFS_SB(dentry->d_sb)->local_nls;
|
struct nls_table *codepage = CIFS_SB(dentry->d_sb)->local_nls;
|
||||||
|
@ -2047,7 +2047,7 @@ static inline bool d_same_name(const struct dentry *dentry,
|
|||||||
return false;
|
return false;
|
||||||
return dentry_cmp(dentry, name->name, name->len) == 0;
|
return dentry_cmp(dentry, name->name, name->len) == 0;
|
||||||
}
|
}
|
||||||
return parent->d_op->d_compare(parent, dentry,
|
return parent->d_op->d_compare(dentry,
|
||||||
dentry->d_name.len, dentry->d_name.name,
|
dentry->d_name.len, dentry->d_name.name,
|
||||||
name) == 0;
|
name) == 0;
|
||||||
}
|
}
|
||||||
@ -2150,7 +2150,7 @@ struct dentry *__d_lookup_rcu(const struct dentry *parent,
|
|||||||
cpu_relax();
|
cpu_relax();
|
||||||
goto seqretry;
|
goto seqretry;
|
||||||
}
|
}
|
||||||
if (parent->d_op->d_compare(parent, dentry,
|
if (parent->d_op->d_compare(dentry,
|
||||||
tlen, tname, name) != 0)
|
tlen, tname, name) != 0)
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
|
@ -45,8 +45,7 @@ static struct super_block *efivarfs_sb;
|
|||||||
* So we need to perform a case-sensitive match on part 1 and a
|
* So we need to perform a case-sensitive match on part 1 and a
|
||||||
* case-insensitive match on part 2.
|
* case-insensitive match on part 2.
|
||||||
*/
|
*/
|
||||||
static int efivarfs_d_compare(const struct dentry *parent,
|
static int efivarfs_d_compare(const struct dentry *dentry,
|
||||||
const struct dentry *dentry,
|
|
||||||
unsigned int len, const char *str,
|
unsigned int len, const char *str,
|
||||||
const struct qstr *name)
|
const struct qstr *name)
|
||||||
{
|
{
|
||||||
|
@ -162,7 +162,7 @@ static int msdos_hash(const struct dentry *dentry, struct qstr *qstr)
|
|||||||
* Compare two msdos names. If either of the names are invalid,
|
* Compare two msdos names. If either of the names are invalid,
|
||||||
* we fall back to doing the standard name comparison.
|
* we fall back to doing the standard name comparison.
|
||||||
*/
|
*/
|
||||||
static int msdos_cmp(const struct dentry *parent, const struct dentry *dentry,
|
static int msdos_cmp(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct fat_mount_options *options = &MSDOS_SB(dentry->d_sb)->options;
|
struct fat_mount_options *options = &MSDOS_SB(dentry->d_sb)->options;
|
||||||
|
@ -138,7 +138,7 @@ static int vfat_hashi(const struct dentry *dentry, struct qstr *qstr)
|
|||||||
/*
|
/*
|
||||||
* Case insensitive compare of two vfat names.
|
* Case insensitive compare of two vfat names.
|
||||||
*/
|
*/
|
||||||
static int vfat_cmpi(const struct dentry *parent, const struct dentry *dentry,
|
static int vfat_cmpi(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct nls_table *t = MSDOS_SB(dentry->d_sb)->nls_io;
|
struct nls_table *t = MSDOS_SB(dentry->d_sb)->nls_io;
|
||||||
@ -157,7 +157,7 @@ static int vfat_cmpi(const struct dentry *parent, const struct dentry *dentry,
|
|||||||
/*
|
/*
|
||||||
* Case sensitive compare of two vfat names.
|
* Case sensitive compare of two vfat names.
|
||||||
*/
|
*/
|
||||||
static int vfat_cmp(const struct dentry *parent, const struct dentry *dentry,
|
static int vfat_cmp(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
unsigned int alen, blen;
|
unsigned int alen, blen;
|
||||||
|
@ -233,7 +233,7 @@ extern const struct dentry_operations hfs_dentry_operations;
|
|||||||
extern int hfs_hash_dentry(const struct dentry *, struct qstr *);
|
extern int hfs_hash_dentry(const struct dentry *, struct qstr *);
|
||||||
extern int hfs_strcmp(const unsigned char *, unsigned int,
|
extern int hfs_strcmp(const unsigned char *, unsigned int,
|
||||||
const unsigned char *, unsigned int);
|
const unsigned char *, unsigned int);
|
||||||
extern int hfs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
extern int hfs_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name);
|
unsigned int len, const char *str, const struct qstr *name);
|
||||||
|
|
||||||
/* trans.c */
|
/* trans.c */
|
||||||
|
@ -92,7 +92,7 @@ int hfs_strcmp(const unsigned char *s1, unsigned int len1,
|
|||||||
* Test for equality of two strings in the HFS filename character ordering.
|
* Test for equality of two strings in the HFS filename character ordering.
|
||||||
* return 1 on failure and 0 on success
|
* return 1 on failure and 0 on success
|
||||||
*/
|
*/
|
||||||
int hfs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
int hfs_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
const unsigned char *n1, *n2;
|
const unsigned char *n1, *n2;
|
||||||
|
@ -520,8 +520,7 @@ int hfsplus_uni2asc(struct super_block *sb, const struct hfsplus_unistr *ustr,
|
|||||||
int hfsplus_asc2uni(struct super_block *sb, struct hfsplus_unistr *ustr,
|
int hfsplus_asc2uni(struct super_block *sb, struct hfsplus_unistr *ustr,
|
||||||
int max_unistr_len, const char *astr, int len);
|
int max_unistr_len, const char *astr, int len);
|
||||||
int hfsplus_hash_dentry(const struct dentry *dentry, struct qstr *str);
|
int hfsplus_hash_dentry(const struct dentry *dentry, struct qstr *str);
|
||||||
int hfsplus_compare_dentry(const struct dentry *parent,
|
int hfsplus_compare_dentry(const struct dentry *dentry, unsigned int len,
|
||||||
const struct dentry *dentry, unsigned int len,
|
|
||||||
const char *str, const struct qstr *name);
|
const char *str, const struct qstr *name);
|
||||||
|
|
||||||
/* wrapper.c */
|
/* wrapper.c */
|
||||||
|
@ -385,7 +385,7 @@ int hfsplus_hash_dentry(const struct dentry *dentry, struct qstr *str)
|
|||||||
* Composed unicode characters are decomposed and case-folding is performed
|
* Composed unicode characters are decomposed and case-folding is performed
|
||||||
* if the appropriate bits are (un)set on the superblock.
|
* if the appropriate bits are (un)set on the superblock.
|
||||||
*/
|
*/
|
||||||
int hfsplus_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
int hfsplus_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct super_block *sb = dentry->d_sb;
|
struct super_block *sb = dentry->d_sb;
|
||||||
|
@ -34,7 +34,7 @@ static int hpfs_hash_dentry(const struct dentry *dentry, struct qstr *qstr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hpfs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
static int hpfs_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
unsigned al = len;
|
unsigned al = len;
|
||||||
|
@ -29,18 +29,15 @@
|
|||||||
#define BEQUIET
|
#define BEQUIET
|
||||||
|
|
||||||
static int isofs_hashi(const struct dentry *parent, struct qstr *qstr);
|
static int isofs_hashi(const struct dentry *parent, struct qstr *qstr);
|
||||||
static int isofs_dentry_cmpi(const struct dentry *parent,
|
static int isofs_dentry_cmpi(const struct dentry *dentry,
|
||||||
const struct dentry *dentry,
|
|
||||||
unsigned int len, const char *str, const struct qstr *name);
|
unsigned int len, const char *str, const struct qstr *name);
|
||||||
|
|
||||||
#ifdef CONFIG_JOLIET
|
#ifdef CONFIG_JOLIET
|
||||||
static int isofs_hashi_ms(const struct dentry *parent, struct qstr *qstr);
|
static int isofs_hashi_ms(const struct dentry *parent, struct qstr *qstr);
|
||||||
static int isofs_hash_ms(const struct dentry *parent, struct qstr *qstr);
|
static int isofs_hash_ms(const struct dentry *parent, struct qstr *qstr);
|
||||||
static int isofs_dentry_cmpi_ms(const struct dentry *parent,
|
static int isofs_dentry_cmpi_ms(const struct dentry *dentry,
|
||||||
const struct dentry *dentry,
|
|
||||||
unsigned int len, const char *str, const struct qstr *name);
|
unsigned int len, const char *str, const struct qstr *name);
|
||||||
static int isofs_dentry_cmp_ms(const struct dentry *parent,
|
static int isofs_dentry_cmp_ms(const struct dentry *dentry,
|
||||||
const struct dentry *dentry,
|
|
||||||
unsigned int len, const char *str, const struct qstr *name);
|
unsigned int len, const char *str, const struct qstr *name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -235,7 +232,7 @@ isofs_hashi(const struct dentry *dentry, struct qstr *qstr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isofs_dentry_cmpi(const struct dentry *parent, const struct dentry *dentry,
|
isofs_dentry_cmpi(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
return isofs_dentry_cmp_common(len, str, name, 0, 1);
|
return isofs_dentry_cmp_common(len, str, name, 0, 1);
|
||||||
@ -276,14 +273,14 @@ isofs_hashi_ms(const struct dentry *dentry, struct qstr *qstr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isofs_dentry_cmp_ms(const struct dentry *parent, const struct dentry *dentry,
|
isofs_dentry_cmp_ms(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
return isofs_dentry_cmp_common(len, str, name, 1, 0);
|
return isofs_dentry_cmp_common(len, str, name, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isofs_dentry_cmpi_ms(const struct dentry *parent, const struct dentry *dentry,
|
isofs_dentry_cmpi_ms(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
return isofs_dentry_cmp_common(len, str, name, 1, 1);
|
return isofs_dentry_cmp_common(len, str, name, 1, 1);
|
||||||
|
@ -22,7 +22,7 @@ isofs_cmp(struct dentry *dentry, const char *compare, int dlen)
|
|||||||
qstr.len = dlen;
|
qstr.len = dlen;
|
||||||
if (likely(!dentry->d_op))
|
if (likely(!dentry->d_op))
|
||||||
return dentry->d_name.len != dlen || memcmp(dentry->d_name.name, compare, dlen);
|
return dentry->d_name.len != dlen || memcmp(dentry->d_name.name, compare, dlen);
|
||||||
return dentry->d_op->d_compare(NULL, NULL, dentry->d_name.len, dentry->d_name.name, &qstr);
|
return dentry->d_op->d_compare(NULL, dentry->d_name.len, dentry->d_name.name, &qstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1572,7 +1572,7 @@ static int jfs_ci_hash(const struct dentry *dir, struct qstr *this)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int jfs_ci_compare(const struct dentry *parent, const struct dentry *dentry,
|
static int jfs_ci_compare(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
int i, result = 1;
|
int i, result = 1;
|
||||||
|
@ -74,7 +74,7 @@ const struct inode_operations ncp_dir_inode_operations =
|
|||||||
*/
|
*/
|
||||||
static int ncp_lookup_validate(struct dentry *, unsigned int);
|
static int ncp_lookup_validate(struct dentry *, unsigned int);
|
||||||
static int ncp_hash_dentry(const struct dentry *, struct qstr *);
|
static int ncp_hash_dentry(const struct dentry *, struct qstr *);
|
||||||
static int ncp_compare_dentry(const struct dentry *, const struct dentry *,
|
static int ncp_compare_dentry(const struct dentry *,
|
||||||
unsigned int, const char *, const struct qstr *);
|
unsigned int, const char *, const struct qstr *);
|
||||||
static int ncp_delete_dentry(const struct dentry *);
|
static int ncp_delete_dentry(const struct dentry *);
|
||||||
static void ncp_d_prune(struct dentry *dentry);
|
static void ncp_d_prune(struct dentry *dentry);
|
||||||
@ -154,7 +154,7 @@ ncp_hash_dentry(const struct dentry *dentry, struct qstr *this)
|
|||||||
* the callers will handle races.
|
* the callers will handle races.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
ncp_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
ncp_compare_dentry(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct inode *pinode;
|
struct inode *pinode;
|
||||||
@ -162,7 +162,7 @@ ncp_compare_dentry(const struct dentry *parent, const struct dentry *dentry,
|
|||||||
if (len != name->len)
|
if (len != name->len)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
pinode = d_inode_rcu(parent);
|
pinode = d_inode_rcu(dentry->d_parent);
|
||||||
if (!pinode)
|
if (!pinode)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -834,7 +834,7 @@ static int sysctl_is_seen(struct ctl_table_header *p)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int proc_sys_compare(const struct dentry *parent, const struct dentry *dentry,
|
static int proc_sys_compare(const struct dentry *dentry,
|
||||||
unsigned int len, const char *str, const struct qstr *name)
|
unsigned int len, const char *str, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct ctl_table_header *head;
|
struct ctl_table_header *head;
|
||||||
|
@ -130,7 +130,7 @@ struct dentry_operations {
|
|||||||
int (*d_revalidate)(struct dentry *, unsigned int);
|
int (*d_revalidate)(struct dentry *, unsigned int);
|
||||||
int (*d_weak_revalidate)(struct dentry *, unsigned int);
|
int (*d_weak_revalidate)(struct dentry *, unsigned int);
|
||||||
int (*d_hash)(const struct dentry *, struct qstr *);
|
int (*d_hash)(const struct dentry *, struct qstr *);
|
||||||
int (*d_compare)(const struct dentry *, const struct dentry *,
|
int (*d_compare)(const struct dentry *,
|
||||||
unsigned int, const char *, const struct qstr *);
|
unsigned int, const char *, const struct qstr *);
|
||||||
int (*d_delete)(const struct dentry *);
|
int (*d_delete)(const struct dentry *);
|
||||||
int (*d_init)(struct dentry *);
|
int (*d_init)(struct dentry *);
|
||||||
|
Loading…
Reference in New Issue
Block a user