aboutsummaryrefslogtreecommitdiffstats
path: root/fs/autofs4
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2014-10-26 19:19:16 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2014-11-03 15:20:29 -0500
commit946e51f2bf37f1656916eb75bd0742ba33983c28 (patch)
treee3d2672edeec1117ceda1e8e195eaa8d1c0f5135 /fs/autofs4
parenta7400222e3eb7d5ce3820d2234905bbeafabd171 (diff)
move d_rcu from overlapping d_child to overlapping d_alias
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/autofs4')
-rw-r--r--fs/autofs4/expire.c12
-rw-r--r--fs/autofs4/root.c2
2 files changed, 7 insertions, 7 deletions
diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
index 683a5b9ce22a..dcdec6fd33c6 100644
--- a/fs/autofs4/expire.c
+++ b/fs/autofs4/expire.c
@@ -85,7 +85,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,
85 spin_lock(&root->d_lock); 85 spin_lock(&root->d_lock);
86 86
87 if (prev) 87 if (prev)
88 next = prev->d_u.d_child.next; 88 next = prev->d_child.next;
89 else { 89 else {
90 prev = dget_dlock(root); 90 prev = dget_dlock(root);
91 next = prev->d_subdirs.next; 91 next = prev->d_subdirs.next;
@@ -99,13 +99,13 @@ cont:
99 return NULL; 99 return NULL;
100 } 100 }
101 101
102 q = list_entry(next, struct dentry, d_u.d_child); 102 q = list_entry(next, struct dentry, d_child);
103 103
104 spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED); 104 spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
105 /* Already gone or negative dentry (under construction) - try next */ 105 /* Already gone or negative dentry (under construction) - try next */
106 if (!d_count(q) || !simple_positive(q)) { 106 if (!d_count(q) || !simple_positive(q)) {
107 spin_unlock(&q->d_lock); 107 spin_unlock(&q->d_lock);
108 next = q->d_u.d_child.next; 108 next = q->d_child.next;
109 goto cont; 109 goto cont;
110 } 110 }
111 dget_dlock(q); 111 dget_dlock(q);
@@ -155,13 +155,13 @@ again:
155 goto relock; 155 goto relock;
156 } 156 }
157 spin_unlock(&p->d_lock); 157 spin_unlock(&p->d_lock);
158 next = p->d_u.d_child.next; 158 next = p->d_child.next;
159 p = parent; 159 p = parent;
160 if (next != &parent->d_subdirs) 160 if (next != &parent->d_subdirs)
161 break; 161 break;
162 } 162 }
163 } 163 }
164 ret = list_entry(next, struct dentry, d_u.d_child); 164 ret = list_entry(next, struct dentry, d_child);
165 165
166 spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED); 166 spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED);
167 /* Negative dentry - try next */ 167 /* Negative dentry - try next */
@@ -489,7 +489,7 @@ found:
489 spin_lock(&sbi->lookup_lock); 489 spin_lock(&sbi->lookup_lock);
490 spin_lock(&expired->d_parent->d_lock); 490 spin_lock(&expired->d_parent->d_lock);
491 spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED); 491 spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED);
492 list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child); 492 list_move(&expired->d_parent->d_subdirs, &expired->d_child);
493 spin_unlock(&expired->d_lock); 493 spin_unlock(&expired->d_lock);
494 spin_unlock(&expired->d_parent->d_lock); 494 spin_unlock(&expired->d_parent->d_lock);
495 spin_unlock(&sbi->lookup_lock); 495 spin_unlock(&sbi->lookup_lock);
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index d76d083f2f06..0822c9eacc56 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -687,7 +687,7 @@ static void autofs_clear_leaf_automount_flags(struct dentry *dentry)
687 /* only consider parents below dentrys in the root */ 687 /* only consider parents below dentrys in the root */
688 if (IS_ROOT(parent->d_parent)) 688 if (IS_ROOT(parent->d_parent))
689 return; 689 return;
690 d_child = &dentry->d_u.d_child; 690 d_child = &dentry->d_child;
691 /* Set parent managed if it's becoming empty */ 691 /* Set parent managed if it's becoming empty */
692 if (d_child->next == &parent->d_subdirs && 692 if (d_child->next == &parent->d_subdirs &&
693 d_child->prev == &parent->d_subdirs) 693 d_child->prev == &parent->d_subdirs)