lkml.org 
[lkml]   [2013]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v3 08/25] auto-fs: Change how dentry's d_lock and d_count fields are accessed
Date
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@hp.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


\
 
 \ /
  Last update: 2013-07-04 00:21    [W:1.252 / U:1.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site