Unified · Split
| @@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir) · 165 unmodified lines | ||
| 166 | 166 | mutex_lock(&d_inode(dir)->i_mutex); |
| 167 | 167 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { |
| 168 | 168 | spin_lock(&dentry->d_lock); |
| 169 | − if (!(d_unhashed(dentry)) && d_really_is_positive(dentry)) { | |
| 169 | + if (simple_positive(dentry)) { | |
| 170 | 170 | dget_dlock(dentry); |
| 171 | 171 | __d_drop(dentry); |
| 172 | 172 | spin_unlock(&dentry->d_lock); |
| @@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct dentry *dentry) · 61 unmodified lines | ||
| 62 | 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 | 65 | static void hypfs_remove(struct dentry *dentry) |
| 71 | 66 | { |
| 72 | 67 | struct dentry *parent; |
| 73 | 68 | |
| 74 | 69 | parent = dentry->d_parent; |
| 75 | 70 | mutex_lock(&d_inode(parent)->i_mutex); |
| 76 | − if (hypfs_positive(dentry)) { | |
| 71 | + if (simple_positive(dentry)) { | |
| 77 | 72 | if (d_is_dir(dentry)) |
| 78 | 73 | simple_rmdir(d_inode(parent), dentry); |
| 79 | 74 | else |
| @@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos) · 418 unmodified lines | ||
| 419 | 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 | 422 | /* make sure at *open* time that the respective object won't go away. */ |
| 431 | 423 | static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, void *), |
| 432 | 424 | void *data, struct kref *kref, |
| @@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo · 11 unmodified lines | ||
| 444 | 436 | /* serialize with d_delete() */ |
| 445 | 437 | mutex_lock(&d_inode(parent)->i_mutex); |
| 446 | 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 | 440 | && kref_get_unless_zero(kref)) |
| 449 | 441 | ret = 0; |
| 450 | 442 | mutex_unlock(&d_inode(parent)->i_mutex); |
| @@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name) · 276 unmodified lines | ||
| 277 | 277 | } |
| 278 | 278 | |
| 279 | 279 | spin_lock(&tmp->d_lock); |
| 280 | − if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { | |
| 280 | + if (simple_positive(tmp)) { | |
| 281 | 281 | dget_dlock(tmp); |
| 282 | 282 | __d_drop(tmp); |
| 283 | 283 | spin_unlock(&tmp->d_lock); |
| @@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name) · 454 unmodified lines | ||
| 455 | 455 | } |
| 456 | 456 | |
| 457 | 457 | spin_lock(&tmp->d_lock); |
| 458 | − if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { | |
| 458 | + if (simple_positive(tmp)) { | |
| 459 | 459 | __d_drop(tmp); |
| 460 | 460 | spin_unlock(&tmp->d_lock); |
| 461 | 461 | simple_unlink(d_inode(parent), tmp); |
| @@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi) · 237 unmodified lines | ||
| 238 | 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 | 241 | static inline void __autofs4_add_expiring(struct dentry *dentry) |
| 247 | 242 | { |
| 248 | 243 | struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); |
| @@ -161,7 +161,7 @@ more: · 160 unmodified lines | ||
| 161 | 161 | } |
| 162 | 162 | spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); |
| 163 | 163 | if (di->lease_shared_gen == shared_gen && |
| 164 | − !d_unhashed(dentry) && d_really_is_positive(dentry) && | |
| 164 | + simple_positive(dentry) && | |
| 165 | 165 | ceph_snap(d_inode(dentry)) != CEPH_SNAPDIR && |
| 166 | 166 | ceph_ino(d_inode(dentry)) != CEPH_INO_CEPH && |
| 167 | 167 | fpos_cmp(ctx->pos, di->offset) <= 0) |
| @@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent) · 235 unmodified lines | ||
| 236 | 236 | |
| 237 | 237 | if (dentry) { |
| 238 | 238 | spin_lock(&dentry->d_lock); |
| 239 | − if (!d_unhashed(dentry) && d_really_is_positive(dentry)) { | |
| 239 | + if (simple_positive(dentry)) { | |
| 240 | 240 | dget_dlock(dentry); |
| 241 | 241 | __d_drop(dentry); |
| 242 | 242 | spin_unlock(&dentry->d_lock); |
| @@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb) · 43 unmodified lines | ||
| 44 | 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 | 47 | struct debugfs_mount_opts { |
| 53 | 48 | kuid_t uid; |
| 54 | 49 | kgid_t gid; |
| @@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent) · 467 unmodified lines | ||
| 522 | 517 | { |
| 523 | 518 | int ret = 0; |
| 524 | 519 | |
| 525 | − if (debugfs_positive(dentry)) { | |
| 520 | + if (simple_positive(dentry)) { | |
| 526 | 521 | dget(dentry); |
| 527 | 522 | if (d_is_dir(dentry)) |
| 528 | 523 | ret = simple_rmdir(d_inode(parent), dentry); |
| @@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry) · 73 unmodified lines | ||
| 602 | 597 | */ |
| 603 | 598 | spin_lock(&parent->d_lock); |
| 604 | 599 | list_for_each_entry(child, &parent->d_subdirs, d_child) { |
| 605 | − if (!debugfs_positive(child)) | |
| 600 | + if (!simple_positive(child)) | |
| 606 | 601 | continue; |
| 607 | 602 | |
| 608 | 603 | /* perhaps simple_empty(child) makes more sense */ |
| @@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry) · 14 unmodified lines | ||
| 623 | 618 | * from d_subdirs. When releasing the parent->d_lock we can |
| 624 | 619 | * no longer trust that the next pointer is valid. |
| 625 | 620 | * Restart the loop. We'll skip this one with the |
| 626 | − * debugfs_positive() check. | |
| 621 | + * simple_positive() check. | |
| 627 | 622 | */ |
| 628 | 623 | goto loop; |
| 629 | 624 | } |
| @@ -20,11 +20,6 @@ · 19 unmodified lines | ||
| 20 | 20 | |
| 21 | 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 | 23 | int simple_getattr(struct vfsmount *mnt, struct dentry *dentry, |
| 29 | 24 | struct kstat *stat) |
| 30 | 25 | { |
| @@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir); · 1770 unmodified lines | ||
| 1771 | 1771 | |
| 1772 | 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 | 1775 | d_delete(dentry); |
| 1776 | 1776 | } |
| 1777 | 1777 | |
| @@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare · 495 unmodified lines | ||
| 496 | 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 | 499 | static int __tracefs_remove(struct dentry *dentry, struct dentry *parent) |
| 505 | 500 | { |
| 506 | 501 | int ret = 0; |
| 507 | 502 | |
| 508 | − if (tracefs_positive(dentry)) { | |
| 503 | + if (simple_positive(dentry)) { | |
| 509 | 504 | if (dentry->d_inode) { |
| 510 | 505 | dget(dentry); |
| 511 | 506 | switch (dentry->d_inode->i_mode & S_IFMT) { |
| @@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry) · 70 unmodified lines | ||
| 582 | 577 | */ |
| 583 | 578 | spin_lock(&parent->d_lock); |
| 584 | 579 | list_for_each_entry(child, &parent->d_subdirs, d_child) { |
| 585 | − if (!tracefs_positive(child)) | |
| 580 | + if (!simple_positive(child)) | |
| 586 | 581 | continue; |
| 587 | 582 | |
| 588 | 583 | /* perhaps simple_empty(child) makes more sense */ |
| @@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry) · 14 unmodified lines | ||
| 603 | 598 | * from d_subdirs. When releasing the parent->d_lock we can |
| 604 | 599 | * no longer trust that the next pointer is valid. |
| 605 | 600 | * Restart the loop. We'll skip this one with the |
| 606 | − * tracefs_positive() check. | |
| 601 | + * simple_positive() check. | |
| 607 | 602 | */ |
| 608 | 603 | goto loop; |
| 609 | 604 | } |
| @@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry) · 506 unmodified lines | ||
| 507 | 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 | 515 | extern void d_set_fallthru(struct dentry *dentry); |
| 511 | 516 | |
| 512 | 517 | static inline bool d_is_fallthru(const struct dentry *dentry) |
| @@ -25,11 +25,6 @@ · 24 unmodified lines | ||
| 25 | 25 | static struct vfsmount *mount; |
| 26 | 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 | 28 | static int fill_super(struct super_block *sb, void *data, int silent) |
| 34 | 29 | { |
| 35 | 30 | static struct tree_descr files[] = {{""}}; |
| @@ -201,14 +196,12 @@ void securityfs_remove(struct dentry *dentry) · 165 unmodified lines | ||
| 201 | 196 | return; |
| 202 | 197 | |
| 203 | 198 | mutex_lock(&d_inode(parent)->i_mutex); |
| 204 | − if (positive(dentry)) { | |
| 205 | − if (d_really_is_positive(dentry)) { | |
| 206 | − if (d_is_dir(dentry)) | |
| 207 | − simple_rmdir(d_inode(parent), dentry); | |
| 208 | − else | |
| 209 | − simple_unlink(d_inode(parent), dentry); | |
| 210 | − dput(dentry); | |
| 211 | − } | |
| 199 | + if (simple_positive(dentry)) { | |
| 200 | + if (d_is_dir(dentry)) | |
| 201 | + simple_rmdir(d_inode(parent), dentry); | |
| 202 | + else | |
| 203 | + simple_unlink(d_inode(parent), dentry); | |
| 204 | + dput(dentry); | |
| 212 | 205 | } |
| 213 | 206 | mutex_unlock(&d_inode(parent)->i_mutex); |
| 214 | 207 | simple_release_fs(&mount, &mount_count); |