diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-05-18 10:10:34 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-06-23 18:02:01 -0400 |
commit | dc3f4198eac14e52a98dfc79cd84b45e280f59cd (patch) | |
tree | 1fa6e8ec571132471e903a6a1d34accacfa9ad33 | |
parent | 5d754ced150e392c7b5dbf73ed2feddb60cd579a (diff) |
make simple_positive() public
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 2 | ||||
-rw-r--r-- | arch/s390/hypfs/inode.c | 7 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_debugfs.c | 10 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_fs.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/hw/qib/qib_fs.c | 2 | ||||
-rw-r--r-- | fs/autofs4/autofs_i.h | 5 | ||||
-rw-r--r-- | fs/ceph/dir.c | 2 | ||||
-rw-r--r-- | fs/configfs/inode.c | 2 | ||||
-rw-r--r-- | fs/debugfs/inode.c | 11 | ||||
-rw-r--r-- | fs/libfs.c | 5 | ||||
-rw-r--r-- | fs/nfs/dir.c | 2 | ||||
-rw-r--r-- | fs/tracefs/inode.c | 11 | ||||
-rw-r--r-- | include/linux/dcache.h | 5 | ||||
-rw-r--r-- | security/inode.c | 19 |
14 files changed, 25 insertions, 60 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 1ba6307be4db..11634fa7ab3c 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir) | |||
166 | mutex_lock(&d_inode(dir)->i_mutex); | 166 | mutex_lock(&d_inode(dir)->i_mutex); |
167 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { | 167 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { |
168 | spin_lock(&dentry->d_lock); | 168 | spin_lock(&dentry->d_lock); |
169 | if (!(d_unhashed(dentry)) && d_really_is_positive(dentry)) { | 169 | if (simple_positive(dentry)) { |
170 | dget_dlock(dentry); | 170 | dget_dlock(dentry); |
171 | __d_drop(dentry); | 171 | __d_drop(dentry); |
172 | spin_unlock(&dentry->d_lock); | 172 | spin_unlock(&dentry->d_lock); |
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c index d3f896a35b98..8ffad5437232 100644 --- a/arch/s390/hypfs/inode.c +++ b/arch/s390/hypfs/inode.c | |||
@@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct dentry *dentry) | |||
62 | hypfs_last_dentry = dentry; | 62 | hypfs_last_dentry = dentry; |
63 | } | 63 | } |
64 | 64 | ||
65 | static inline int hypfs_positive(struct dentry *dentry) | ||
66 | { | ||
67 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
68 | } | ||
69 | |||
70 | static void hypfs_remove(struct dentry *dentry) | 65 | static void hypfs_remove(struct dentry *dentry) |
71 | { | 66 | { |
72 | struct dentry *parent; | 67 | struct dentry *parent; |
73 | 68 | ||
74 | parent = dentry->d_parent; | 69 | parent = dentry->d_parent; |
75 | mutex_lock(&d_inode(parent)->i_mutex); | 70 | mutex_lock(&d_inode(parent)->i_mutex); |
76 | if (hypfs_positive(dentry)) { | 71 | if (simple_positive(dentry)) { |
77 | if (d_is_dir(dentry)) | 72 | if (d_is_dir(dentry)) |
78 | simple_rmdir(d_inode(parent), dentry); | 73 | simple_rmdir(d_inode(parent), dentry); |
79 | else | 74 | else |
diff --git a/drivers/block/drbd/drbd_debugfs.c b/drivers/block/drbd/drbd_debugfs.c index a6ee3d750c30..6b88a35fb048 100644 --- a/drivers/block/drbd/drbd_debugfs.c +++ b/drivers/block/drbd/drbd_debugfs.c | |||
@@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos) | |||
419 | return 0; | 419 | return 0; |
420 | } | 420 | } |
421 | 421 | ||
422 | /* simple_positive(file->f_path.dentry) respectively debugfs_positive(), | ||
423 | * but neither is "reachable" from here. | ||
424 | * So we have our own inline version of it above. :-( */ | ||
425 | static inline int debugfs_positive(struct dentry *dentry) | ||
426 | { | ||
427 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
428 | } | ||
429 | |||
430 | /* make sure at *open* time that the respective object won't go away. */ | 422 | /* make sure at *open* time that the respective object won't go away. */ |
431 | static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, void *), | 423 | static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, void *), |
432 | void *data, struct kref *kref, | 424 | void *data, struct kref *kref, |
@@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo | |||
444 | /* serialize with d_delete() */ | 436 | /* serialize with d_delete() */ |
445 | mutex_lock(&d_inode(parent)->i_mutex); | 437 | mutex_lock(&d_inode(parent)->i_mutex); |
446 | /* Make sure the object is still alive */ | 438 | /* Make sure the object is still alive */ |
447 | if (debugfs_positive(file->f_path.dentry) | 439 | if (simple_positive(file->f_path.dentry) |
448 | && kref_get_unless_zero(kref)) | 440 | && kref_get_unless_zero(kref)) |
449 | ret = 0; | 441 | ret = 0; |
450 | mutex_unlock(&d_inode(parent)->i_mutex); | 442 | mutex_unlock(&d_inode(parent)->i_mutex); |
diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c index 1ca8e32a9592..25422a3a7238 100644 --- a/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/drivers/infiniband/hw/ipath/ipath_fs.c | |||
@@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name) | |||
277 | } | 277 | } |
278 | 278 | ||
279 | spin_lock(&tmp->d_lock); | 279 | spin_lock(&tmp->d_lock); |
280 | if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { | 280 | if (simple_positive(tmp)) { |
281 | dget_dlock(tmp); | 281 | dget_dlock(tmp); |
282 | __d_drop(tmp); | 282 | __d_drop(tmp); |
283 | spin_unlock(&tmp->d_lock); | 283 | spin_unlock(&tmp->d_lock); |
diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c index bdd5d3857203..13ef22bd9459 100644 --- a/drivers/infiniband/hw/qib/qib_fs.c +++ b/drivers/infiniband/hw/qib/qib_fs.c | |||
@@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name) | |||
455 | } | 455 | } |
456 | 456 | ||
457 | spin_lock(&tmp->d_lock); | 457 | spin_lock(&tmp->d_lock); |
458 | if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { | 458 | if (simple_positive(tmp)) { |
459 | __d_drop(tmp); | 459 | __d_drop(tmp); |
460 | spin_unlock(&tmp->d_lock); | 460 | spin_unlock(&tmp->d_lock); |
461 | simple_unlink(d_inode(parent), tmp); | 461 | simple_unlink(d_inode(parent), tmp); |
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h index 5b700ef1e59d..c37149b929be 100644 --- a/fs/autofs4/autofs_i.h +++ b/fs/autofs4/autofs_i.h | |||
@@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi) | |||
238 | return d_inode(sbi->sb->s_root)->i_ino; | 238 | return d_inode(sbi->sb->s_root)->i_ino; |
239 | } | 239 | } |
240 | 240 | ||
241 | static inline int simple_positive(struct dentry *dentry) | ||
242 | { | ||
243 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
244 | } | ||
245 | |||
246 | static inline void __autofs4_add_expiring(struct dentry *dentry) | 241 | static inline void __autofs4_add_expiring(struct dentry *dentry) |
247 | { | 242 | { |
248 | struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); | 243 | struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); |
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index 4248307fea90..edbb8da02a6a 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c | |||
@@ -161,7 +161,7 @@ more: | |||
161 | } | 161 | } |
162 | spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); | 162 | spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); |
163 | if (di->lease_shared_gen == shared_gen && | 163 | if (di->lease_shared_gen == shared_gen && |
164 | !d_unhashed(dentry) && d_really_is_positive(dentry) && | 164 | simple_positive(dentry) && |
165 | ceph_snap(d_inode(dentry)) != CEPH_SNAPDIR && | 165 | ceph_snap(d_inode(dentry)) != CEPH_SNAPDIR && |
166 | ceph_ino(d_inode(dentry)) != CEPH_INO_CEPH && | 166 | ceph_ino(d_inode(dentry)) != CEPH_INO_CEPH && |
167 | fpos_cmp(ctx->pos, di->offset) <= 0) | 167 | fpos_cmp(ctx->pos, di->offset) <= 0) |
diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c index 8d89f5fd0331..eae87575e681 100644 --- a/fs/configfs/inode.c +++ b/fs/configfs/inode.c | |||
@@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent) | |||
236 | 236 | ||
237 | if (dentry) { | 237 | if (dentry) { |
238 | spin_lock(&dentry->d_lock); | 238 | spin_lock(&dentry->d_lock); |
239 | if (!d_unhashed(dentry) && d_really_is_positive(dentry)) { | 239 | if (simple_positive(dentry)) { |
240 | dget_dlock(dentry); | 240 | dget_dlock(dentry); |
241 | __d_drop(dentry); | 241 | __d_drop(dentry); |
242 | spin_unlock(&dentry->d_lock); | 242 | spin_unlock(&dentry->d_lock); |
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index 7eaec88ea970..ef86ad6bdc3e 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c | |||
@@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb) | |||
44 | return inode; | 44 | return inode; |
45 | } | 45 | } |
46 | 46 | ||
47 | static inline int debugfs_positive(struct dentry *dentry) | ||
48 | { | ||
49 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
50 | } | ||
51 | |||
52 | struct debugfs_mount_opts { | 47 | struct debugfs_mount_opts { |
53 | kuid_t uid; | 48 | kuid_t uid; |
54 | kgid_t gid; | 49 | kgid_t gid; |
@@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent) | |||
522 | { | 517 | { |
523 | int ret = 0; | 518 | int ret = 0; |
524 | 519 | ||
525 | if (debugfs_positive(dentry)) { | 520 | if (simple_positive(dentry)) { |
526 | dget(dentry); | 521 | dget(dentry); |
527 | if (d_is_dir(dentry)) | 522 | if (d_is_dir(dentry)) |
528 | ret = simple_rmdir(d_inode(parent), dentry); | 523 | ret = simple_rmdir(d_inode(parent), dentry); |
@@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry) | |||
602 | */ | 597 | */ |
603 | spin_lock(&parent->d_lock); | 598 | spin_lock(&parent->d_lock); |
604 | list_for_each_entry(child, &parent->d_subdirs, d_child) { | 599 | list_for_each_entry(child, &parent->d_subdirs, d_child) { |
605 | if (!debugfs_positive(child)) | 600 | if (!simple_positive(child)) |
606 | continue; | 601 | continue; |
607 | 602 | ||
608 | /* perhaps simple_empty(child) makes more sense */ | 603 | /* perhaps simple_empty(child) makes more sense */ |
@@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry) | |||
623 | * from d_subdirs. When releasing the parent->d_lock we can | 618 | * from d_subdirs. When releasing the parent->d_lock we can |
624 | * no longer trust that the next pointer is valid. | 619 | * no longer trust that the next pointer is valid. |
625 | * Restart the loop. We'll skip this one with the | 620 | * Restart the loop. We'll skip this one with the |
626 | * debugfs_positive() check. | 621 | * simple_positive() check. |
627 | */ | 622 | */ |
628 | goto loop; | 623 | goto loop; |
629 | } | 624 | } |
diff --git a/fs/libfs.c b/fs/libfs.c index 65e1feca8b98..4d9e6c118fe1 100644 --- a/fs/libfs.c +++ b/fs/libfs.c | |||
@@ -20,11 +20,6 @@ | |||
20 | 20 | ||
21 | #include "internal.h" | 21 | #include "internal.h" |
22 | 22 | ||
23 | static inline int simple_positive(struct dentry *dentry) | ||
24 | { | ||
25 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
26 | } | ||
27 | |||
28 | int simple_getattr(struct vfsmount *mnt, struct dentry *dentry, | 23 | int simple_getattr(struct vfsmount *mnt, struct dentry *dentry, |
29 | struct kstat *stat) | 24 | struct kstat *stat) |
30 | { | 25 | { |
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index b2c8b31b2be7..b9108f4254a7 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c | |||
@@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir); | |||
1771 | 1771 | ||
1772 | static void nfs_dentry_handle_enoent(struct dentry *dentry) | 1772 | static void nfs_dentry_handle_enoent(struct dentry *dentry) |
1773 | { | 1773 | { |
1774 | if (d_really_is_positive(dentry) && !d_unhashed(dentry)) | 1774 | if (simple_positive(dentry)) |
1775 | d_delete(dentry); | 1775 | d_delete(dentry); |
1776 | } | 1776 | } |
1777 | 1777 | ||
diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c index d92bdf3b079a..6e8a1400d662 100644 --- a/fs/tracefs/inode.c +++ b/fs/tracefs/inode.c | |||
@@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare | |||
496 | return dentry; | 496 | return dentry; |
497 | } | 497 | } |
498 | 498 | ||
499 | static inline int tracefs_positive(struct dentry *dentry) | ||
500 | { | ||
501 | return dentry->d_inode && !d_unhashed(dentry); | ||
502 | } | ||
503 | |||
504 | static int __tracefs_remove(struct dentry *dentry, struct dentry *parent) | 499 | static int __tracefs_remove(struct dentry *dentry, struct dentry *parent) |
505 | { | 500 | { |
506 | int ret = 0; | 501 | int ret = 0; |
507 | 502 | ||
508 | if (tracefs_positive(dentry)) { | 503 | if (simple_positive(dentry)) { |
509 | if (dentry->d_inode) { | 504 | if (dentry->d_inode) { |
510 | dget(dentry); | 505 | dget(dentry); |
511 | switch (dentry->d_inode->i_mode & S_IFMT) { | 506 | switch (dentry->d_inode->i_mode & S_IFMT) { |
@@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry) | |||
582 | */ | 577 | */ |
583 | spin_lock(&parent->d_lock); | 578 | spin_lock(&parent->d_lock); |
584 | list_for_each_entry(child, &parent->d_subdirs, d_child) { | 579 | list_for_each_entry(child, &parent->d_subdirs, d_child) { |
585 | if (!tracefs_positive(child)) | 580 | if (!simple_positive(child)) |
586 | continue; | 581 | continue; |
587 | 582 | ||
588 | /* perhaps simple_empty(child) makes more sense */ | 583 | /* perhaps simple_empty(child) makes more sense */ |
@@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry) | |||
603 | * from d_subdirs. When releasing the parent->d_lock we can | 598 | * from d_subdirs. When releasing the parent->d_lock we can |
604 | * no longer trust that the next pointer is valid. | 599 | * no longer trust that the next pointer is valid. |
605 | * Restart the loop. We'll skip this one with the | 600 | * Restart the loop. We'll skip this one with the |
606 | * tracefs_positive() check. | 601 | * simple_positive() check. |
607 | */ | 602 | */ |
608 | goto loop; | 603 | goto loop; |
609 | } | 604 | } |
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 167ec0934049..d2d50249b7b2 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
@@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry) | |||
507 | return dentry->d_inode != NULL; | 507 | return dentry->d_inode != NULL; |
508 | } | 508 | } |
509 | 509 | ||
510 | static inline int simple_positive(struct dentry *dentry) | ||
511 | { | ||
512 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
513 | } | ||
514 | |||
510 | extern void d_set_fallthru(struct dentry *dentry); | 515 | extern void d_set_fallthru(struct dentry *dentry); |
511 | 516 | ||
512 | static inline bool d_is_fallthru(const struct dentry *dentry) | 517 | static inline bool d_is_fallthru(const struct dentry *dentry) |
diff --git a/security/inode.c b/security/inode.c index 91503b79c5f8..6df0d8dae1e0 100644 --- a/security/inode.c +++ b/security/inode.c | |||
@@ -25,11 +25,6 @@ | |||
25 | static struct vfsmount *mount; | 25 | static struct vfsmount *mount; |
26 | static int mount_count; | 26 | static int mount_count; |
27 | 27 | ||
28 | static inline int positive(struct dentry *dentry) | ||
29 | { | ||
30 | return d_really_is_positive(dentry) && !d_unhashed(dentry); | ||
31 | } | ||
32 | |||
33 | static int fill_super(struct super_block *sb, void *data, int silent) | 28 | static int fill_super(struct super_block *sb, void *data, int silent) |
34 | { | 29 | { |
35 | static struct tree_descr files[] = {{""}}; | 30 | static struct tree_descr files[] = {{""}}; |
@@ -201,14 +196,12 @@ void securityfs_remove(struct dentry *dentry) | |||
201 | return; | 196 | return; |
202 | 197 | ||
203 | mutex_lock(&d_inode(parent)->i_mutex); | 198 | mutex_lock(&d_inode(parent)->i_mutex); |
204 | if (positive(dentry)) { | 199 | if (simple_positive(dentry)) { |
205 | if (d_really_is_positive(dentry)) { | 200 | if (d_is_dir(dentry)) |
206 | if (d_is_dir(dentry)) | 201 | simple_rmdir(d_inode(parent), dentry); |
207 | simple_rmdir(d_inode(parent), dentry); | 202 | else |
208 | else | 203 | simple_unlink(d_inode(parent), dentry); |
209 | simple_unlink(d_inode(parent), dentry); | 204 | dput(dentry); |
210 | dput(dentry); | ||
211 | } | ||
212 | } | 205 | } |
213 | mutex_unlock(&d_inode(parent)->i_mutex); | 206 | mutex_unlock(&d_inode(parent)->i_mutex); |
214 | simple_release_fs(&mount, &mount_count); | 207 | simple_release_fs(&mount, &mount_count); |