Loading fs/dcache.c +12 −6 Original line number Diff line number Diff line Loading @@ -588,13 +588,9 @@ static void __dentry_kill(struct dentry *dentry) dentry_free(dentry); } static inline struct dentry *lock_parent(struct dentry *dentry) static struct dentry *__lock_parent(struct dentry *dentry) { struct dentry *parent = dentry->d_parent; if (IS_ROOT(dentry)) return NULL; if (likely(spin_trylock(&parent->d_lock))) return parent; struct dentry *parent; rcu_read_lock(); spin_unlock(&dentry->d_lock); again: Loading @@ -620,6 +616,16 @@ static inline struct dentry *lock_parent(struct dentry *dentry) return parent; } static inline struct dentry *lock_parent(struct dentry *dentry) { struct dentry *parent = dentry->d_parent; if (IS_ROOT(dentry)) return NULL; if (likely(spin_trylock(&parent->d_lock))) return parent; return __lock_parent(dentry); } /* * Finish off a dentry we've decided to kill. * dentry->d_lock must be held, returns with it unlocked. Loading Loading
fs/dcache.c +12 −6 Original line number Diff line number Diff line Loading @@ -588,13 +588,9 @@ static void __dentry_kill(struct dentry *dentry) dentry_free(dentry); } static inline struct dentry *lock_parent(struct dentry *dentry) static struct dentry *__lock_parent(struct dentry *dentry) { struct dentry *parent = dentry->d_parent; if (IS_ROOT(dentry)) return NULL; if (likely(spin_trylock(&parent->d_lock))) return parent; struct dentry *parent; rcu_read_lock(); spin_unlock(&dentry->d_lock); again: Loading @@ -620,6 +616,16 @@ static inline struct dentry *lock_parent(struct dentry *dentry) return parent; } static inline struct dentry *lock_parent(struct dentry *dentry) { struct dentry *parent = dentry->d_parent; if (IS_ROOT(dentry)) return NULL; if (likely(spin_trylock(&parent->d_lock))) return parent; return __lock_parent(dentry); } /* * Finish off a dentry we've decided to kill. * dentry->d_lock must be held, returns with it unlocked. Loading