Commit 8c13a676d5a56495c350f3141824a5ef6c6b4606
Committed by
Al Viro
1 parent
b5b801779d
Exists in
master
and in
4 other branches
autofs4: Remove unused code
Remove code that is not used due to the use of ->d_automount() and ->d_manage(). Signed-off-by: Ian Kent <raven@themaw.net> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Showing 2 changed files with 0 additions and 250 deletions Side-by-side Diff
fs/autofs4/autofs_i.h
... | ... | @@ -175,13 +175,6 @@ |
175 | 175 | return 0; |
176 | 176 | } |
177 | 177 | |
178 | -static inline void autofs4_copy_atime(struct file *src, struct file *dst) | |
179 | -{ | |
180 | - dst->f_path.dentry->d_inode->i_atime = | |
181 | - src->f_path.dentry->d_inode->i_atime; | |
182 | - return; | |
183 | -} | |
184 | - | |
185 | 178 | struct inode *autofs4_get_inode(struct super_block *, struct autofs_info *); |
186 | 179 | void autofs4_free_ino(struct autofs_info *); |
187 | 180 |
fs/autofs4/root.c
... | ... | @@ -36,9 +36,6 @@ |
36 | 36 | static int autofs4_dir_open(struct inode *inode, struct file *file); |
37 | 37 | static struct dentry *autofs4_lookup(struct inode *,struct dentry *, struct nameidata *); |
38 | 38 | |
39 | -#define TRIGGER_FLAGS (LOOKUP_CONTINUE | LOOKUP_DIRECTORY) | |
40 | -#define TRIGGER_INTENTS (LOOKUP_OPEN | LOOKUP_CREATE) | |
41 | - | |
42 | 39 | const struct file_operations autofs4_root_operations = { |
43 | 40 | .open = dcache_dir_open, |
44 | 41 | .release = dcache_dir_close, |
... | ... | @@ -114,14 +111,6 @@ |
114 | 111 | return; |
115 | 112 | } |
116 | 113 | |
117 | -static unsigned int autofs4_need_mount(unsigned int flags) | |
118 | -{ | |
119 | - unsigned int res = 0; | |
120 | - if (flags & (TRIGGER_FLAGS | TRIGGER_INTENTS)) | |
121 | - res = 1; | |
122 | - return res; | |
123 | -} | |
124 | - | |
125 | 114 | static int autofs4_dir_open(struct inode *inode, struct file *file) |
126 | 115 | { |
127 | 116 | struct dentry *dentry = file->f_path.dentry; |
... | ... | @@ -154,238 +143,6 @@ |
154 | 143 | |
155 | 144 | out: |
156 | 145 | return dcache_dir_open(inode, file); |
157 | -} | |
158 | - | |
159 | -static int try_to_fill_dentry(struct dentry *dentry, int flags) | |
160 | -{ | |
161 | - struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); | |
162 | - struct autofs_info *ino = autofs4_dentry_ino(dentry); | |
163 | - int status; | |
164 | - | |
165 | - DPRINTK("dentry=%p %.*s ino=%p", | |
166 | - dentry, dentry->d_name.len, dentry->d_name.name, dentry->d_inode); | |
167 | - | |
168 | - /* | |
169 | - * Wait for a pending mount, triggering one if there | |
170 | - * isn't one already | |
171 | - */ | |
172 | - if (dentry->d_inode == NULL) { | |
173 | - DPRINTK("waiting for mount name=%.*s", | |
174 | - dentry->d_name.len, dentry->d_name.name); | |
175 | - | |
176 | - status = autofs4_wait(sbi, dentry, NFY_MOUNT); | |
177 | - | |
178 | - DPRINTK("mount done status=%d", status); | |
179 | - | |
180 | - /* Turn this into a real negative dentry? */ | |
181 | - if (status == -ENOENT) { | |
182 | - spin_lock(&sbi->fs_lock); | |
183 | - ino->flags &= ~AUTOFS_INF_PENDING; | |
184 | - spin_unlock(&sbi->fs_lock); | |
185 | - return status; | |
186 | - } else if (status) { | |
187 | - /* Return a negative dentry, but leave it "pending" */ | |
188 | - return status; | |
189 | - } | |
190 | - /* Trigger mount for path component or follow link */ | |
191 | - } else if (ino->flags & AUTOFS_INF_PENDING || | |
192 | - autofs4_need_mount(flags)) { | |
193 | - DPRINTK("waiting for mount name=%.*s", | |
194 | - dentry->d_name.len, dentry->d_name.name); | |
195 | - | |
196 | - spin_lock(&sbi->fs_lock); | |
197 | - ino->flags |= AUTOFS_INF_PENDING; | |
198 | - spin_unlock(&sbi->fs_lock); | |
199 | - status = autofs4_wait(sbi, dentry, NFY_MOUNT); | |
200 | - | |
201 | - DPRINTK("mount done status=%d", status); | |
202 | - | |
203 | - if (status) { | |
204 | - spin_lock(&sbi->fs_lock); | |
205 | - ino->flags &= ~AUTOFS_INF_PENDING; | |
206 | - spin_unlock(&sbi->fs_lock); | |
207 | - return status; | |
208 | - } | |
209 | - } | |
210 | - | |
211 | - /* Initialize expiry counter after successful mount */ | |
212 | - ino->last_used = jiffies; | |
213 | - | |
214 | - spin_lock(&sbi->fs_lock); | |
215 | - ino->flags &= ~AUTOFS_INF_PENDING; | |
216 | - spin_unlock(&sbi->fs_lock); | |
217 | - | |
218 | - return 0; | |
219 | -} | |
220 | - | |
221 | -/* For autofs direct mounts the follow link triggers the mount */ | |
222 | -static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd) | |
223 | -{ | |
224 | - struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); | |
225 | - struct autofs_info *ino = autofs4_dentry_ino(dentry); | |
226 | - int oz_mode = autofs4_oz_mode(sbi); | |
227 | - unsigned int lookup_type; | |
228 | - int status; | |
229 | - | |
230 | - DPRINTK("dentry=%p %.*s oz_mode=%d nd->flags=%d", | |
231 | - dentry, dentry->d_name.len, dentry->d_name.name, oz_mode, | |
232 | - nd->flags); | |
233 | - /* | |
234 | - * For an expire of a covered direct or offset mount we need | |
235 | - * to break out of follow_down_one() at the autofs mount trigger | |
236 | - * (d_mounted--), so we can see the expiring flag, and manage | |
237 | - * the blocking and following here until the expire is completed. | |
238 | - */ | |
239 | - if (oz_mode) { | |
240 | - spin_lock(&sbi->fs_lock); | |
241 | - if (ino->flags & AUTOFS_INF_EXPIRING) { | |
242 | - spin_unlock(&sbi->fs_lock); | |
243 | - /* Follow down to our covering mount. */ | |
244 | - if (!follow_down_one(&nd->path)) | |
245 | - goto done; | |
246 | - goto follow; | |
247 | - } | |
248 | - spin_unlock(&sbi->fs_lock); | |
249 | - goto done; | |
250 | - } | |
251 | - | |
252 | - /* If an expire request is pending everyone must wait. */ | |
253 | - autofs4_expire_wait(dentry); | |
254 | - | |
255 | - /* We trigger a mount for almost all flags */ | |
256 | - lookup_type = autofs4_need_mount(nd->flags); | |
257 | - spin_lock(&sbi->fs_lock); | |
258 | - spin_lock(&autofs4_lock); | |
259 | - spin_lock(&dentry->d_lock); | |
260 | - if (!(lookup_type || ino->flags & AUTOFS_INF_PENDING)) { | |
261 | - spin_unlock(&dentry->d_lock); | |
262 | - spin_unlock(&autofs4_lock); | |
263 | - spin_unlock(&sbi->fs_lock); | |
264 | - goto follow; | |
265 | - } | |
266 | - | |
267 | - /* | |
268 | - * If the dentry contains directories then it is an autofs | |
269 | - * multi-mount with no root mount offset. So don't try to | |
270 | - * mount it again. | |
271 | - */ | |
272 | - if (ino->flags & AUTOFS_INF_PENDING || | |
273 | - (!d_mountpoint(dentry) && list_empty(&dentry->d_subdirs))) { | |
274 | - spin_unlock(&dentry->d_lock); | |
275 | - spin_unlock(&autofs4_lock); | |
276 | - spin_unlock(&sbi->fs_lock); | |
277 | - | |
278 | - status = try_to_fill_dentry(dentry, nd->flags); | |
279 | - if (status) | |
280 | - goto out_error; | |
281 | - | |
282 | - goto follow; | |
283 | - } | |
284 | - spin_unlock(&dentry->d_lock); | |
285 | - spin_unlock(&autofs4_lock); | |
286 | - spin_unlock(&sbi->fs_lock); | |
287 | -follow: | |
288 | - /* | |
289 | - * If there is no root mount it must be an autofs | |
290 | - * multi-mount with no root offset so we don't need | |
291 | - * to follow it. | |
292 | - */ | |
293 | - if (d_managed(dentry)) { | |
294 | - status = follow_down(&nd->path, false); | |
295 | - if (status < 0) | |
296 | - goto out_error; | |
297 | - } | |
298 | - | |
299 | -done: | |
300 | - return NULL; | |
301 | - | |
302 | -out_error: | |
303 | - path_put(&nd->path); | |
304 | - return ERR_PTR(status); | |
305 | -} | |
306 | - | |
307 | -/* | |
308 | - * Revalidate is called on every cache lookup. Some of those | |
309 | - * cache lookups may actually happen while the dentry is not | |
310 | - * yet completely filled in, and revalidate has to delay such | |
311 | - * lookups.. | |
312 | - */ | |
313 | -static int autofs4_revalidate(struct dentry *dentry, struct nameidata *nd) | |
314 | -{ | |
315 | - struct inode *dir; | |
316 | - struct autofs_sb_info *sbi; | |
317 | - int oz_mode; | |
318 | - int flags = nd ? nd->flags : 0; | |
319 | - int status = 1; | |
320 | - | |
321 | - if (flags & LOOKUP_RCU) | |
322 | - return -ECHILD; | |
323 | - | |
324 | - dir = dentry->d_parent->d_inode; | |
325 | - sbi = autofs4_sbi(dir->i_sb); | |
326 | - oz_mode = autofs4_oz_mode(sbi); | |
327 | - | |
328 | - /* Pending dentry */ | |
329 | - spin_lock(&sbi->fs_lock); | |
330 | - if (autofs4_ispending(dentry)) { | |
331 | - /* The daemon never causes a mount to trigger */ | |
332 | - spin_unlock(&sbi->fs_lock); | |
333 | - | |
334 | - if (oz_mode) | |
335 | - return 1; | |
336 | - | |
337 | - /* | |
338 | - * If the directory has gone away due to an expire | |
339 | - * we have been called as ->d_revalidate() and so | |
340 | - * we need to return false and proceed to ->lookup(). | |
341 | - */ | |
342 | - if (autofs4_expire_wait(dentry) == -EAGAIN) | |
343 | - return 0; | |
344 | - | |
345 | - /* | |
346 | - * A zero status is success otherwise we have a | |
347 | - * negative error code. | |
348 | - */ | |
349 | - status = try_to_fill_dentry(dentry, flags); | |
350 | - if (status == 0) | |
351 | - return 1; | |
352 | - | |
353 | - return status; | |
354 | - } | |
355 | - spin_unlock(&sbi->fs_lock); | |
356 | - | |
357 | - /* Negative dentry.. invalidate if "old" */ | |
358 | - if (dentry->d_inode == NULL) | |
359 | - return 0; | |
360 | - | |
361 | - /* Check for a non-mountpoint directory with no contents */ | |
362 | - spin_lock(&autofs4_lock); | |
363 | - spin_lock(&dentry->d_lock); | |
364 | - if (S_ISDIR(dentry->d_inode->i_mode) && | |
365 | - !d_mountpoint(dentry) && list_empty(&dentry->d_subdirs)) { | |
366 | - DPRINTK("dentry=%p %.*s, emptydir", | |
367 | - dentry, dentry->d_name.len, dentry->d_name.name); | |
368 | - spin_unlock(&dentry->d_lock); | |
369 | - spin_unlock(&autofs4_lock); | |
370 | - | |
371 | - /* The daemon never causes a mount to trigger */ | |
372 | - if (oz_mode) | |
373 | - return 1; | |
374 | - | |
375 | - /* | |
376 | - * A zero status is success otherwise we have a | |
377 | - * negative error code. | |
378 | - */ | |
379 | - status = try_to_fill_dentry(dentry, flags); | |
380 | - if (status == 0) | |
381 | - return 1; | |
382 | - | |
383 | - return status; | |
384 | - } | |
385 | - spin_unlock(&dentry->d_lock); | |
386 | - spin_unlock(&autofs4_lock); | |
387 | - | |
388 | - return 1; | |
389 | 146 | } |
390 | 147 | |
391 | 148 | void autofs4_dentry_release(struct dentry *de) |