···1212 int (*d_revalidate)(struct dentry *, unsigned int);1313 int (*d_weak_revalidate)(struct dentry *, unsigned int);1414 int (*d_hash)(const struct dentry *, struct qstr *);1515- int (*d_compare)(const struct dentry *, const struct dentry *,1515+ int (*d_compare)(const struct dentry *,1616 unsigned int, const char *, const struct qstr *);1717 int (*d_delete)(struct dentry *);1818 int (*d_init)(struct dentry *);
+7
Documentation/filesystems/porting
···585585 in the instances. Rationale: !@#!@# security_d_instantiate() needs to be586586 called before we attach dentry to inode and !@#!@##!@$!$#!@#$!@$!@$ smack587587 ->d_instantiate() uses not just ->getxattr() but ->setxattr() as well.588588+--589589+[mandatory]590590+ ->d_compare() doesn't get parent as a separate argument anymore. If you591591+ used it for finding the struct super_block involved, dentry->d_sb will592592+ work just as well; if it's something more complicated, use dentry->d_parent.593593+ Just be careful not to assume that fetching it more than once will yield594594+ the same value - in RCU mode it could change under you.
+1-1
Documentation/filesystems/vfs.txt
···931931 int (*d_revalidate)(struct dentry *, unsigned int);932932 int (*d_weak_revalidate)(struct dentry *, unsigned int);933933 int (*d_hash)(const struct dentry *, struct qstr *);934934- int (*d_compare)(const struct dentry *, const struct dentry *,934934+ int (*d_compare)(const struct dentry *,935935 unsigned int, const char *, const struct qstr *);936936 int (*d_delete)(const struct dentry *);937937 int (*d_init)(struct dentry *);
+1-1
drivers/staging/lustre/lustre/llite/dcache.c
···7878 * INVALID) so d_lookup() matches it, but we have no lock on it (so7979 * lock_match() fails) and we spin around real_lookup().8080 */8181-static int ll_dcompare(const struct dentry *parent, const struct dentry *dentry,8181+static int ll_dcompare(const struct dentry *dentry,8282 unsigned int len, const char *str,8383 const struct qstr *name)8484{
+1-1
fs/adfs/dir.c
···227227 * requirements of the underlying filesystem.228228 */229229static int230230-adfs_compare(const struct dentry *parent, const struct dentry *dentry,230230+adfs_compare(const struct dentry *dentry,231231 unsigned int len, const char *str, const struct qstr *name)232232{233233 int i;
···4545 * So we need to perform a case-sensitive match on part 1 and a4646 * case-insensitive match on part 2.4747 */4848-static int efivarfs_d_compare(const struct dentry *parent,4949- const struct dentry *dentry,4848+static int efivarfs_d_compare(const struct dentry *dentry,5049 unsigned int len, const char *str,5150 const struct qstr *name)5251{
+1-1
fs/fat/namei_msdos.c
···162162 * Compare two msdos names. If either of the names are invalid,163163 * we fall back to doing the standard name comparison.164164 */165165-static int msdos_cmp(const struct dentry *parent, const struct dentry *dentry,165165+static int msdos_cmp(const struct dentry *dentry,166166 unsigned int len, const char *str, const struct qstr *name)167167{168168 struct fat_mount_options *options = &MSDOS_SB(dentry->d_sb)->options;
+2-2
fs/fat/namei_vfat.c
···138138/*139139 * Case insensitive compare of two vfat names.140140 */141141-static int vfat_cmpi(const struct dentry *parent, const struct dentry *dentry,141141+static int vfat_cmpi(const struct dentry *dentry,142142 unsigned int len, const char *str, const struct qstr *name)143143{144144 struct nls_table *t = MSDOS_SB(dentry->d_sb)->nls_io;···157157/*158158 * Case sensitive compare of two vfat names.159159 */160160-static int vfat_cmp(const struct dentry *parent, const struct dentry *dentry,160160+static int vfat_cmp(const struct dentry *dentry,161161 unsigned int len, const char *str, const struct qstr *name)162162{163163 unsigned int alen, blen;
+1-1
fs/hfs/hfs_fs.h
···233233extern int hfs_hash_dentry(const struct dentry *, struct qstr *);234234extern int hfs_strcmp(const unsigned char *, unsigned int,235235 const unsigned char *, unsigned int);236236-extern int hfs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,236236+extern int hfs_compare_dentry(const struct dentry *dentry,237237 unsigned int len, const char *str, const struct qstr *name);238238239239/* trans.c */
+1-1
fs/hfs/string.c
···9292 * Test for equality of two strings in the HFS filename character ordering.9393 * return 1 on failure and 0 on success9494 */9595-int hfs_compare_dentry(const struct dentry *parent, const struct dentry *dentry,9595+int hfs_compare_dentry(const struct dentry *dentry,9696 unsigned int len, const char *str, const struct qstr *name)9797{9898 const unsigned char *n1, *n2;