[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1372882851-22781-1-git-send-email-Waiman.Long@hp.com>
Date: Wed, 3 Jul 2013 16:20:51 -0400
From: Waiman Long <Waiman.Long@...com>
To: Alexander Viro <viro@...iv.linux.org.uk>,
Jeff Layton <jlayton@...hat.com>,
Miklos Szeredi <mszeredi@...e.cz>,
Ingo Molnar <mingo@...hat.com>,
Thomas Gleixner <tglx@...utronix.de>
Cc: Ian Kent <raven@...maw.net>, autofs@...r.kernel.org,
Waiman Long <Waiman.Long@...com>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
Peter Zijlstra <peterz@...radead.org>,
Steven Rostedt <rostedt@...dmis.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Andi Kleen <andi@...stfloor.org>,
"Chandramouleeswaran, Aswin" <aswin@...com>,
"Norton, Scott J" <scott.norton@...com>
Subject: [PATCH v3 08/25] auto-fs: Change how dentry's d_lock and d_count fields are accessed
Because of the changes made in dcache.h header file, files that use
the d_lock and d_count fields of the dentry structure need to be
changed accordingly. All the d_lock's spin_lock() and spin_unlock()
calls are replaced by the corresponding d_lock() and d_unlock() calls.
References to d_count are replaced by the d_ret_count() calls.
There is no change in logic and everything should just work.
Signed-off-by: Waiman Long <Waiman.Long@...com>
---
fs/autofs4/autofs_i.h | 24 ++++++++++++------------
fs/autofs4/expire.c | 48 ++++++++++++++++++++++++------------------------
fs/autofs4/root.c | 14 +++++++-------
3 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
index 3f1128b..dc7df32 100644
--- a/fs/autofs4/autofs_i.h
+++ b/fs/autofs4/autofs_i.h
@@ -198,9 +198,9 @@ static inline void __managed_dentry_set_automount(struct dentry *dentry)
static inline void managed_dentry_set_automount(struct dentry *dentry)
{
- spin_lock(&dentry->d_lock);
+ d_lock(dentry);
__managed_dentry_set_automount(dentry);
- spin_unlock(&dentry->d_lock);
+ d_unlock(dentry);
}
static inline void __managed_dentry_clear_automount(struct dentry *dentry)
@@ -210,9 +210,9 @@ static inline void __managed_dentry_clear_automount(struct dentry *dentry)
static inline void managed_dentry_clear_automount(struct dentry *dentry)
{
- spin_lock(&dentry->d_lock);
+ d_lock(dentry);
__managed_dentry_clear_automount(dentry);
- spin_unlock(&dentry->d_lock);
+ d_unlock(dentry);
}
static inline void __managed_dentry_set_transit(struct dentry *dentry)
@@ -222,9 +222,9 @@ static inline void __managed_dentry_set_transit(struct dentry *dentry)
static inline void managed_dentry_set_transit(struct dentry *dentry)
{
- spin_lock(&dentry->d_lock);
+ d_lock(dentry);
__managed_dentry_set_transit(dentry);
- spin_unlock(&dentry->d_lock);
+ d_unlock(dentry);
}
static inline void __managed_dentry_clear_transit(struct dentry *dentry)
@@ -234,9 +234,9 @@ static inline void __managed_dentry_clear_transit(struct dentry *dentry)
static inline void managed_dentry_clear_transit(struct dentry *dentry)
{
- spin_lock(&dentry->d_lock);
+ d_lock(dentry);
__managed_dentry_clear_transit(dentry);
- spin_unlock(&dentry->d_lock);
+ d_unlock(dentry);
}
static inline void __managed_dentry_set_managed(struct dentry *dentry)
@@ -246,9 +246,9 @@ static inline void __managed_dentry_set_managed(struct dentry *dentry)
static inline void managed_dentry_set_managed(struct dentry *dentry)
{
- spin_lock(&dentry->d_lock);
+ d_lock(dentry);
__managed_dentry_set_managed(dentry);
- spin_unlock(&dentry->d_lock);
+ d_unlock(dentry);
}
static inline void __managed_dentry_clear_managed(struct dentry *dentry)
@@ -258,9 +258,9 @@ static inline void __managed_dentry_clear_managed(struct dentry *dentry)
static inline void managed_dentry_clear_managed(struct dentry *dentry)
{
- spin_lock(&dentry->d_lock);
+ d_lock(dentry);
__managed_dentry_clear_managed(dentry);
- spin_unlock(&dentry->d_lock);
+ d_unlock(dentry);
}
/* Initializing function */
diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
index 13ddec9..0a7287c 100644
--- a/fs/autofs4/expire.c
+++ b/fs/autofs4/expire.c
@@ -88,7 +88,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,
struct dentry *q;
spin_lock(&sbi->lookup_lock);
- spin_lock(&root->d_lock);
+ d_lock(root);
if (prev)
next = prev->d_u.d_child.next;
@@ -99,7 +99,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,
cont:
if (next == &root->d_subdirs) {
- spin_unlock(&root->d_lock);
+ d_unlock(root);
spin_unlock(&sbi->lookup_lock);
dput(prev);
return NULL;
@@ -107,16 +107,16 @@ cont:
q = list_entry(next, struct dentry, d_u.d_child);
- spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
+ d_lock_nested(q, DENTRY_D_LOCK_NESTED);
/* Already gone or negative dentry (under construction) - try next */
- if (q->d_count == 0 || !simple_positive(q)) {
- spin_unlock(&q->d_lock);
+ if (d_ret_count(q) == 0 || !simple_positive(q)) {
+ d_unlock(q);
next = q->d_u.d_child.next;
goto cont;
}
dget_dlock(q);
- spin_unlock(&q->d_lock);
- spin_unlock(&root->d_lock);
+ d_unlock(q);
+ d_unlock(root);
spin_unlock(&sbi->lookup_lock);
dput(prev);
@@ -140,7 +140,7 @@ static struct dentry *get_next_positive_dentry(struct dentry *prev,
spin_lock(&sbi->lookup_lock);
relock:
p = prev;
- spin_lock(&p->d_lock);
+ d_lock(p);
again:
next = p->d_subdirs.next;
if (next == &p->d_subdirs) {
@@ -148,19 +148,19 @@ again:
struct dentry *parent;
if (p == root) {
- spin_unlock(&p->d_lock);
+ d_unlock(p);
spin_unlock(&sbi->lookup_lock);
dput(prev);
return NULL;
}
parent = p->d_parent;
- if (!spin_trylock(&parent->d_lock)) {
- spin_unlock(&p->d_lock);
+ if (!d_trylock(parent)) {
+ d_unlock(p);
cpu_relax();
goto relock;
}
- spin_unlock(&p->d_lock);
+ d_unlock(p);
next = p->d_u.d_child.next;
p = parent;
if (next != &parent->d_subdirs)
@@ -169,17 +169,17 @@ again:
}
ret = list_entry(next, struct dentry, d_u.d_child);
- spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED);
+ d_lock_nested(ret, DENTRY_D_LOCK_NESTED);
/* Negative dentry - try next */
if (!simple_positive(ret)) {
- spin_unlock(&p->d_lock);
- lock_set_subclass(&ret->d_lock.dep_map, 0, _RET_IP_);
+ d_unlock(p);
+ lock_set_subclass(&d_ret_lock(ret).dep_map, 0, _RET_IP_);
p = ret;
goto again;
}
dget_dlock(ret);
- spin_unlock(&ret->d_lock);
- spin_unlock(&p->d_lock);
+ d_unlock(ret);
+ d_unlock(p);
spin_unlock(&sbi->lookup_lock);
dput(prev);
@@ -267,7 +267,7 @@ static int autofs4_tree_busy(struct vfsmount *mnt,
else
ino_count++;
- if (p->d_count > ino_count) {
+ if (d_ret_count(p) > ino_count) {
top_ino->last_used = jiffies;
dput(p);
return 1;
@@ -409,7 +409,7 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb,
if (!exp_leaves) {
/* Path walk currently on this dentry? */
ino_count = atomic_read(&ino->count) + 1;
- if (dentry->d_count > ino_count)
+ if (d_ret_count(dentry) > ino_count)
goto next;
if (!autofs4_tree_busy(mnt, dentry, timeout, do_now)) {
@@ -423,7 +423,7 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb,
} else {
/* Path walk currently on this dentry? */
ino_count = atomic_read(&ino->count) + 1;
- if (dentry->d_count > ino_count)
+ if (d_ret_count(dentry) > ino_count)
goto next;
expired = autofs4_check_leaves(mnt, dentry, timeout, do_now);
@@ -445,11 +445,11 @@ found:
init_completion(&ino->expire_complete);
spin_unlock(&sbi->fs_lock);
spin_lock(&sbi->lookup_lock);
- spin_lock(&expired->d_parent->d_lock);
- spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED);
+ d_lock(expired->d_parent);
+ d_lock_nested(expired, DENTRY_D_LOCK_NESTED);
list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
- spin_unlock(&expired->d_lock);
- spin_unlock(&expired->d_parent->d_lock);
+ d_unlock(expired);
+ d_unlock(expired->d_parent);
spin_unlock(&sbi->lookup_lock);
return expired;
}
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index 085da86..e33a0f6 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -176,10 +176,10 @@ static struct dentry *autofs4_lookup_active(struct dentry *dentry)
ino = list_entry(p, struct autofs_info, active);
active = ino->dentry;
- spin_lock(&active->d_lock);
+ d_lock(active);
/* Already gone? */
- if (active->d_count == 0)
+ if (d_ret_count(active) == 0)
goto next;
qstr = &active->d_name;
@@ -196,12 +196,12 @@ static struct dentry *autofs4_lookup_active(struct dentry *dentry)
if (d_unhashed(active)) {
dget_dlock(active);
- spin_unlock(&active->d_lock);
+ d_unlock(active);
spin_unlock(&sbi->lookup_lock);
return active;
}
next:
- spin_unlock(&active->d_lock);
+ d_unlock(active);
}
spin_unlock(&sbi->lookup_lock);
@@ -228,7 +228,7 @@ static struct dentry *autofs4_lookup_expiring(struct dentry *dentry)
ino = list_entry(p, struct autofs_info, expiring);
expiring = ino->dentry;
- spin_lock(&expiring->d_lock);
+ d_lock(expiring);
/* Bad luck, we've already been dentry_iput */
if (!expiring->d_inode)
@@ -248,12 +248,12 @@ static struct dentry *autofs4_lookup_expiring(struct dentry *dentry)
if (d_unhashed(expiring)) {
dget_dlock(expiring);
- spin_unlock(&expiring->d_lock);
+ d_unlock(expiring);
spin_unlock(&sbi->lookup_lock);
return expiring;
}
next:
- spin_unlock(&expiring->d_lock);
+ d_unlock(expiring);
}
spin_unlock(&sbi->lookup_lock);
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists