Loading fs/namei.c +14 −22 Original line number Original line Diff line number Diff line Loading @@ -751,7 +751,10 @@ static int unlazy_walk(struct nameidata *nd, struct dentry *dentry, unsigned seq static inline int d_revalidate(struct dentry *dentry, unsigned int flags) static inline int d_revalidate(struct dentry *dentry, unsigned int flags) { { if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) return dentry->d_op->d_revalidate(dentry, flags); return dentry->d_op->d_revalidate(dentry, flags); else return 1; } } /** /** Loading Loading @@ -1454,13 +1457,9 @@ static struct dentry *lookup_dcache(const struct qstr *name, struct dentry *dir, struct dentry *dir, unsigned int flags) unsigned int flags) { { struct dentry *dentry; struct dentry *dentry = d_lookup(dir, name); int error; dentry = d_lookup(dir, name); if (dentry) { if (dentry) { if (dentry->d_flags & DCACHE_OP_REVALIDATE) { int error = d_revalidate(dentry, flags); error = d_revalidate(dentry, flags); if (unlikely(error <= 0)) { if (unlikely(error <= 0)) { if (!error) if (!error) d_invalidate(dentry); d_invalidate(dentry); Loading @@ -1468,7 +1467,6 @@ static struct dentry *lookup_dcache(const struct qstr *name, return ERR_PTR(error); return ERR_PTR(error); } } } } } return dentry; return dentry; } } Loading Loading @@ -1556,7 +1554,6 @@ static int lookup_fast(struct nameidata *nd, return -ECHILD; return -ECHILD; *seqp = seq; *seqp = seq; if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) status = d_revalidate(dentry, nd->flags); status = d_revalidate(dentry, nd->flags); if (likely(status > 0)) { if (likely(status > 0)) { /* /* Loading @@ -1579,7 +1576,6 @@ static int lookup_fast(struct nameidata *nd, dentry = __d_lookup(parent, &nd->last); dentry = __d_lookup(parent, &nd->last); if (unlikely(!dentry)) if (unlikely(!dentry)) return 0; return 0; if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) status = d_revalidate(dentry, nd->flags); status = d_revalidate(dentry, nd->flags); } } if (unlikely(status <= 0)) { if (unlikely(status <= 0)) { Loading Loading @@ -1619,8 +1615,7 @@ static struct dentry *lookup_slow(const struct qstr *name, if (IS_ERR(dentry)) if (IS_ERR(dentry)) goto out; goto out; if (unlikely(!d_in_lookup(dentry))) { if (unlikely(!d_in_lookup(dentry))) { if ((dentry->d_flags & DCACHE_OP_REVALIDATE) && if (!(flags & LOOKUP_NO_REVAL)) { !(flags & LOOKUP_NO_REVAL)) { int error = d_revalidate(dentry, flags); int error = d_revalidate(dentry, flags); if (unlikely(error <= 0)) { if (unlikely(error <= 0)) { if (!error) { if (!error) { Loading Loading @@ -3057,9 +3052,6 @@ static int lookup_open(struct nameidata *nd, struct path *path, if (d_in_lookup(dentry)) if (d_in_lookup(dentry)) break; break; if (!(dentry->d_flags & DCACHE_OP_REVALIDATE)) break; error = d_revalidate(dentry, nd->flags); error = d_revalidate(dentry, nd->flags); if (likely(error > 0)) if (likely(error > 0)) break; break; Loading Loading
fs/namei.c +14 −22 Original line number Original line Diff line number Diff line Loading @@ -751,7 +751,10 @@ static int unlazy_walk(struct nameidata *nd, struct dentry *dentry, unsigned seq static inline int d_revalidate(struct dentry *dentry, unsigned int flags) static inline int d_revalidate(struct dentry *dentry, unsigned int flags) { { if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) return dentry->d_op->d_revalidate(dentry, flags); return dentry->d_op->d_revalidate(dentry, flags); else return 1; } } /** /** Loading Loading @@ -1454,13 +1457,9 @@ static struct dentry *lookup_dcache(const struct qstr *name, struct dentry *dir, struct dentry *dir, unsigned int flags) unsigned int flags) { { struct dentry *dentry; struct dentry *dentry = d_lookup(dir, name); int error; dentry = d_lookup(dir, name); if (dentry) { if (dentry) { if (dentry->d_flags & DCACHE_OP_REVALIDATE) { int error = d_revalidate(dentry, flags); error = d_revalidate(dentry, flags); if (unlikely(error <= 0)) { if (unlikely(error <= 0)) { if (!error) if (!error) d_invalidate(dentry); d_invalidate(dentry); Loading @@ -1468,7 +1467,6 @@ static struct dentry *lookup_dcache(const struct qstr *name, return ERR_PTR(error); return ERR_PTR(error); } } } } } return dentry; return dentry; } } Loading Loading @@ -1556,7 +1554,6 @@ static int lookup_fast(struct nameidata *nd, return -ECHILD; return -ECHILD; *seqp = seq; *seqp = seq; if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) status = d_revalidate(dentry, nd->flags); status = d_revalidate(dentry, nd->flags); if (likely(status > 0)) { if (likely(status > 0)) { /* /* Loading @@ -1579,7 +1576,6 @@ static int lookup_fast(struct nameidata *nd, dentry = __d_lookup(parent, &nd->last); dentry = __d_lookup(parent, &nd->last); if (unlikely(!dentry)) if (unlikely(!dentry)) return 0; return 0; if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) status = d_revalidate(dentry, nd->flags); status = d_revalidate(dentry, nd->flags); } } if (unlikely(status <= 0)) { if (unlikely(status <= 0)) { Loading Loading @@ -1619,8 +1615,7 @@ static struct dentry *lookup_slow(const struct qstr *name, if (IS_ERR(dentry)) if (IS_ERR(dentry)) goto out; goto out; if (unlikely(!d_in_lookup(dentry))) { if (unlikely(!d_in_lookup(dentry))) { if ((dentry->d_flags & DCACHE_OP_REVALIDATE) && if (!(flags & LOOKUP_NO_REVAL)) { !(flags & LOOKUP_NO_REVAL)) { int error = d_revalidate(dentry, flags); int error = d_revalidate(dentry, flags); if (unlikely(error <= 0)) { if (unlikely(error <= 0)) { if (!error) { if (!error) { Loading Loading @@ -3057,9 +3052,6 @@ static int lookup_open(struct nameidata *nd, struct path *path, if (d_in_lookup(dentry)) if (d_in_lookup(dentry)) break; break; if (!(dentry->d_flags & DCACHE_OP_REVALIDATE)) break; error = d_revalidate(dentry, nd->flags); error = d_revalidate(dentry, nd->flags); if (likely(error > 0)) if (likely(error > 0)) break; break; Loading