Commit dc3f4198 authored by Al Viro's avatar Al Viro

make simple_positive() public

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 5d754ced
...@@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir) ...@@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir)
mutex_lock(&d_inode(dir)->i_mutex); mutex_lock(&d_inode(dir)->i_mutex);
list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
spin_lock(&dentry->d_lock); spin_lock(&dentry->d_lock);
if (!(d_unhashed(dentry)) && d_really_is_positive(dentry)) { if (simple_positive(dentry)) {
dget_dlock(dentry); dget_dlock(dentry);
__d_drop(dentry); __d_drop(dentry);
spin_unlock(&dentry->d_lock); spin_unlock(&dentry->d_lock);
......
...@@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct dentry *dentry) ...@@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct dentry *dentry)
hypfs_last_dentry = dentry; hypfs_last_dentry = dentry;
} }
static inline int hypfs_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
static void hypfs_remove(struct dentry *dentry) static void hypfs_remove(struct dentry *dentry)
{ {
struct dentry *parent; struct dentry *parent;
parent = dentry->d_parent; parent = dentry->d_parent;
mutex_lock(&d_inode(parent)->i_mutex); mutex_lock(&d_inode(parent)->i_mutex);
if (hypfs_positive(dentry)) { if (simple_positive(dentry)) {
if (d_is_dir(dentry)) if (d_is_dir(dentry))
simple_rmdir(d_inode(parent), dentry); simple_rmdir(d_inode(parent), dentry);
else else
......
...@@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos) ...@@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos)
return 0; return 0;
} }
/* simple_positive(file->f_path.dentry) respectively debugfs_positive(),
* but neither is "reachable" from here.
* So we have our own inline version of it above. :-( */
static inline int debugfs_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
/* make sure at *open* time that the respective object won't go away. */ /* make sure at *open* time that the respective object won't go away. */
static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, void *), static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, void *),
void *data, struct kref *kref, void *data, struct kref *kref,
...@@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo ...@@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo
/* serialize with d_delete() */ /* serialize with d_delete() */
mutex_lock(&d_inode(parent)->i_mutex); mutex_lock(&d_inode(parent)->i_mutex);
/* Make sure the object is still alive */ /* Make sure the object is still alive */
if (debugfs_positive(file->f_path.dentry) if (simple_positive(file->f_path.dentry)
&& kref_get_unless_zero(kref)) && kref_get_unless_zero(kref))
ret = 0; ret = 0;
mutex_unlock(&d_inode(parent)->i_mutex); mutex_unlock(&d_inode(parent)->i_mutex);
......
...@@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name) ...@@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name)
} }
spin_lock(&tmp->d_lock); spin_lock(&tmp->d_lock);
if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { if (simple_positive(tmp)) {
dget_dlock(tmp); dget_dlock(tmp);
__d_drop(tmp); __d_drop(tmp);
spin_unlock(&tmp->d_lock); spin_unlock(&tmp->d_lock);
......
...@@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name) ...@@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name)
} }
spin_lock(&tmp->d_lock); spin_lock(&tmp->d_lock);
if (!d_unhashed(tmp) && d_really_is_positive(tmp)) { if (simple_positive(tmp)) {
__d_drop(tmp); __d_drop(tmp);
spin_unlock(&tmp->d_lock); spin_unlock(&tmp->d_lock);
simple_unlink(d_inode(parent), tmp); simple_unlink(d_inode(parent), tmp);
......
...@@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi) ...@@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi)
return d_inode(sbi->sb->s_root)->i_ino; return d_inode(sbi->sb->s_root)->i_ino;
} }
static inline int simple_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
static inline void __autofs4_add_expiring(struct dentry *dentry) static inline void __autofs4_add_expiring(struct dentry *dentry)
{ {
struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb); struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb);
......
...@@ -161,7 +161,7 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx, ...@@ -161,7 +161,7 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx,
} }
spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
if (di->lease_shared_gen == shared_gen && if (di->lease_shared_gen == shared_gen &&
!d_unhashed(dentry) && d_really_is_positive(dentry) && simple_positive(dentry) &&
ceph_snap(d_inode(dentry)) != CEPH_SNAPDIR && ceph_snap(d_inode(dentry)) != CEPH_SNAPDIR &&
ceph_ino(d_inode(dentry)) != CEPH_INO_CEPH && ceph_ino(d_inode(dentry)) != CEPH_INO_CEPH &&
fpos_cmp(ctx->pos, di->offset) <= 0) fpos_cmp(ctx->pos, di->offset) <= 0)
......
...@@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent) ...@@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent)
if (dentry) { if (dentry) {
spin_lock(&dentry->d_lock); spin_lock(&dentry->d_lock);
if (!d_unhashed(dentry) && d_really_is_positive(dentry)) { if (simple_positive(dentry)) {
dget_dlock(dentry); dget_dlock(dentry);
__d_drop(dentry); __d_drop(dentry);
spin_unlock(&dentry->d_lock); spin_unlock(&dentry->d_lock);
......
...@@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb) ...@@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb)
return inode; return inode;
} }
static inline int debugfs_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
struct debugfs_mount_opts { struct debugfs_mount_opts {
kuid_t uid; kuid_t uid;
kgid_t gid; kgid_t gid;
...@@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent) ...@@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent)
{ {
int ret = 0; int ret = 0;
if (debugfs_positive(dentry)) { if (simple_positive(dentry)) {
dget(dentry); dget(dentry);
if (d_is_dir(dentry)) if (d_is_dir(dentry))
ret = simple_rmdir(d_inode(parent), dentry); ret = simple_rmdir(d_inode(parent), dentry);
...@@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry) ...@@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
*/ */
spin_lock(&parent->d_lock); spin_lock(&parent->d_lock);
list_for_each_entry(child, &parent->d_subdirs, d_child) { list_for_each_entry(child, &parent->d_subdirs, d_child) {
if (!debugfs_positive(child)) if (!simple_positive(child))
continue; continue;
/* perhaps simple_empty(child) makes more sense */ /* perhaps simple_empty(child) makes more sense */
...@@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry) ...@@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
* from d_subdirs. When releasing the parent->d_lock we can * from d_subdirs. When releasing the parent->d_lock we can
* no longer trust that the next pointer is valid. * no longer trust that the next pointer is valid.
* Restart the loop. We'll skip this one with the * Restart the loop. We'll skip this one with the
* debugfs_positive() check. * simple_positive() check.
*/ */
goto loop; goto loop;
} }
......
...@@ -20,11 +20,6 @@ ...@@ -20,11 +20,6 @@
#include "internal.h" #include "internal.h"
static inline int simple_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
int simple_getattr(struct vfsmount *mnt, struct dentry *dentry, int simple_getattr(struct vfsmount *mnt, struct dentry *dentry,
struct kstat *stat) struct kstat *stat)
{ {
......
...@@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir); ...@@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir);
static void nfs_dentry_handle_enoent(struct dentry *dentry) static void nfs_dentry_handle_enoent(struct dentry *dentry)
{ {
if (d_really_is_positive(dentry) && !d_unhashed(dentry)) if (simple_positive(dentry))
d_delete(dentry); d_delete(dentry);
} }
......
...@@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare ...@@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare
return dentry; return dentry;
} }
static inline int tracefs_positive(struct dentry *dentry)
{
return dentry->d_inode && !d_unhashed(dentry);
}
static int __tracefs_remove(struct dentry *dentry, struct dentry *parent) static int __tracefs_remove(struct dentry *dentry, struct dentry *parent)
{ {
int ret = 0; int ret = 0;
if (tracefs_positive(dentry)) { if (simple_positive(dentry)) {
if (dentry->d_inode) { if (dentry->d_inode) {
dget(dentry); dget(dentry);
switch (dentry->d_inode->i_mode & S_IFMT) { switch (dentry->d_inode->i_mode & S_IFMT) {
...@@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry) ...@@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
*/ */
spin_lock(&parent->d_lock); spin_lock(&parent->d_lock);
list_for_each_entry(child, &parent->d_subdirs, d_child) { list_for_each_entry(child, &parent->d_subdirs, d_child) {
if (!tracefs_positive(child)) if (!simple_positive(child))
continue; continue;
/* perhaps simple_empty(child) makes more sense */ /* perhaps simple_empty(child) makes more sense */
...@@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry) ...@@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
* from d_subdirs. When releasing the parent->d_lock we can * from d_subdirs. When releasing the parent->d_lock we can
* no longer trust that the next pointer is valid. * no longer trust that the next pointer is valid.
* Restart the loop. We'll skip this one with the * Restart the loop. We'll skip this one with the
* tracefs_positive() check. * simple_positive() check.
*/ */
goto loop; goto loop;
} }
......
...@@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry) ...@@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry)
return dentry->d_inode != NULL; return dentry->d_inode != NULL;
} }
static inline int simple_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
extern void d_set_fallthru(struct dentry *dentry); extern void d_set_fallthru(struct dentry *dentry);
static inline bool d_is_fallthru(const struct dentry *dentry) static inline bool d_is_fallthru(const struct dentry *dentry)
......
...@@ -25,11 +25,6 @@ ...@@ -25,11 +25,6 @@
static struct vfsmount *mount; static struct vfsmount *mount;
static int mount_count; static int mount_count;
static inline int positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}
static int fill_super(struct super_block *sb, void *data, int silent) static int fill_super(struct super_block *sb, void *data, int silent)
{ {
static struct tree_descr files[] = {{""}}; static struct tree_descr files[] = {{""}};
...@@ -201,15 +196,13 @@ void securityfs_remove(struct dentry *dentry) ...@@ -201,15 +196,13 @@ void securityfs_remove(struct dentry *dentry)
return; return;
mutex_lock(&d_inode(parent)->i_mutex); mutex_lock(&d_inode(parent)->i_mutex);
if (positive(dentry)) { if (simple_positive(dentry)) {
if (d_really_is_positive(dentry)) {
if (d_is_dir(dentry)) if (d_is_dir(dentry))
simple_rmdir(d_inode(parent), dentry); simple_rmdir(d_inode(parent), dentry);
else else
simple_unlink(d_inode(parent), dentry); simple_unlink(d_inode(parent), dentry);
dput(dentry); dput(dentry);
} }
}
mutex_unlock(&d_inode(parent)->i_mutex); mutex_unlock(&d_inode(parent)->i_mutex);
simple_release_fs(&mount, &mount_count); simple_release_fs(&mount, &mount_count);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment