]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/linux/dcache.h
fs: name case update method
[mv-sheeva.git] / include / linux / dcache.h
index 6a4aea30aa09db016c11ceabcdc8c4cafb0a9c19..6cdf4995c90a4a34d1807ff5fda10cbe9fc84e3d 100644 (file)
@@ -133,30 +133,24 @@ enum dentry_d_lock_class
 
 struct dentry_operations {
        int (*d_revalidate)(struct dentry *, struct nameidata *);
-       int (*d_hash) (struct dentry *, struct qstr *);
-       int (*d_compare) (struct dentry *, struct qstr *, struct qstr *);
-       int (*d_delete)(struct dentry *);
+       int (*d_hash)(struct dentry *, struct qstr *);
+       int (*d_compare)(struct dentry *, struct qstr *, struct qstr *);
+       int (*d_delete)(const struct dentry *);
        void (*d_release)(struct dentry *);
        void (*d_iput)(struct dentry *, struct inode *);
        char *(*d_dname)(struct dentry *, char *, int);
 };
 
-/* the dentry parameter passed to d_hash and d_compare is the parent
+/*
+ * Locking rules for dentry_operations callbacks are to be found in
+ * Documentation/filesystems/Locking. Keep it updated!
+ *
+ * the dentry parameter passed to d_hash and d_compare is the parent
  * directory of the entries to be compared. It is used in case these
  * functions need any directory specific information for determining
  * equivalency classes.  Using the dentry itself might not work, as it
  * might be a negative dentry which has no information associated with
- * it */
-
-/*
-locking rules:
-               big lock        dcache_lock     d_lock   may block
-d_revalidate:  no              no              no       yes
-d_hash         no              no              no       yes
-d_compare:     no              yes             yes      no
-d_delete:      no              yes             no       no
-d_release:     no              no              no       yes
-d_iput:                no              no              no       yes
+ * it.
  */
 
 /* d_flags entries */
@@ -296,6 +290,8 @@ static inline struct dentry *d_add_unique(struct dentry *entry, struct inode *in
        return res;
 }
 
+extern void dentry_update_name_case(struct dentry *, struct qstr *);
+
 /* used for rename() and baskets */
 extern void d_move(struct dentry *, struct dentry *);
 extern struct dentry *d_ancestor(struct dentry *, struct dentry *);