diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-10-26 19:19:16 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-11-03 15:20:29 -0500 |
commit | 946e51f2bf37f1656916eb75bd0742ba33983c28 (patch) | |
tree | e3d2672edeec1117ceda1e8e195eaa8d1c0f5135 /fs/ceph | |
parent | a7400222e3eb7d5ce3820d2234905bbeafabd171 (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/ceph')
-rw-r--r-- | fs/ceph/dir.c | 8 | ||||
-rw-r--r-- | fs/ceph/inode.c | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index e6d63f8f98c0..695e7888fef8 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c | |||
@@ -111,7 +111,7 @@ static int fpos_cmp(loff_t l, loff_t r) | |||
111 | /* | 111 | /* |
112 | * When possible, we try to satisfy a readdir by peeking at the | 112 | * When possible, we try to satisfy a readdir by peeking at the |
113 | * dcache. We make this work by carefully ordering dentries on | 113 | * dcache. We make this work by carefully ordering dentries on |
114 | * d_u.d_child when we initially get results back from the MDS, and | 114 | * d_child when we initially get results back from the MDS, and |
115 | * falling back to a "normal" sync readdir if any dentries in the dir | 115 | * falling back to a "normal" sync readdir if any dentries in the dir |
116 | * are dropped. | 116 | * are dropped. |
117 | * | 117 | * |
@@ -147,11 +147,11 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx, | |||
147 | p = parent->d_subdirs.prev; | 147 | p = parent->d_subdirs.prev; |
148 | dout(" initial p %p/%p\n", p->prev, p->next); | 148 | dout(" initial p %p/%p\n", p->prev, p->next); |
149 | } else { | 149 | } else { |
150 | p = last->d_u.d_child.prev; | 150 | p = last->d_child.prev; |
151 | } | 151 | } |
152 | 152 | ||
153 | more: | 153 | more: |
154 | dentry = list_entry(p, struct dentry, d_u.d_child); | 154 | dentry = list_entry(p, struct dentry, d_child); |
155 | di = ceph_dentry(dentry); | 155 | di = ceph_dentry(dentry); |
156 | while (1) { | 156 | while (1) { |
157 | dout(" p %p/%p %s d_subdirs %p/%p\n", p->prev, p->next, | 157 | dout(" p %p/%p %s d_subdirs %p/%p\n", p->prev, p->next, |
@@ -174,7 +174,7 @@ more: | |||
174 | !dentry->d_inode ? " null" : ""); | 174 | !dentry->d_inode ? " null" : ""); |
175 | spin_unlock(&dentry->d_lock); | 175 | spin_unlock(&dentry->d_lock); |
176 | p = p->prev; | 176 | p = p->prev; |
177 | dentry = list_entry(p, struct dentry, d_u.d_child); | 177 | dentry = list_entry(p, struct dentry, d_child); |
178 | di = ceph_dentry(dentry); | 178 | di = ceph_dentry(dentry); |
179 | } | 179 | } |
180 | 180 | ||
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 7b6139004401..7a1df90c7771 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c | |||
@@ -1399,7 +1399,7 @@ retry_lookup: | |||
1399 | /* reorder parent's d_subdirs */ | 1399 | /* reorder parent's d_subdirs */ |
1400 | spin_lock(&parent->d_lock); | 1400 | spin_lock(&parent->d_lock); |
1401 | spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED); | 1401 | spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED); |
1402 | list_move(&dn->d_u.d_child, &parent->d_subdirs); | 1402 | list_move(&dn->d_child, &parent->d_subdirs); |
1403 | spin_unlock(&dn->d_lock); | 1403 | spin_unlock(&dn->d_lock); |
1404 | spin_unlock(&parent->d_lock); | 1404 | spin_unlock(&parent->d_lock); |
1405 | } | 1405 | } |