Skip to content

Commit

Permalink
make simple_positive() public
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Jun 23, 2015

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 5d754ce commit dc3f419
Showing 14 changed files with 25 additions and 60 deletions.
2 changes: 1 addition & 1 deletion arch/powerpc/platforms/cell/spufs/inode.c
Original file line number Diff line number Diff line change
@@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir)
mutex_lock(&d_inode(dir)->i_mutex);
list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
spin_lock(&dentry->d_lock);
if (!(d_unhashed(dentry)) && d_really_is_positive(dentry)) {
if (simple_positive(dentry)) {
dget_dlock(dentry);
__d_drop(dentry);
spin_unlock(&dentry->d_lock);
7 changes: 1 addition & 6 deletions arch/s390/hypfs/inode.c
Original file line number Diff line number Diff line change
@@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct 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)
{
struct dentry *parent;

parent = dentry->d_parent;
mutex_lock(&d_inode(parent)->i_mutex);
if (hypfs_positive(dentry)) {
if (simple_positive(dentry)) {
if (d_is_dir(dentry))
simple_rmdir(d_inode(parent), dentry);
else
10 changes: 1 addition & 9 deletions drivers/block/drbd/drbd_debugfs.c
Original file line number Diff line number Diff line change
@@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos)
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. */
static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, void *),
void *data, struct kref *kref,
@@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo
/* serialize with d_delete() */
mutex_lock(&d_inode(parent)->i_mutex);
/* 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))
ret = 0;
mutex_unlock(&d_inode(parent)->i_mutex);
2 changes: 1 addition & 1 deletion drivers/infiniband/hw/ipath/ipath_fs.c
Original file line number Diff line number Diff line change
@@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name)
}

spin_lock(&tmp->d_lock);
if (!d_unhashed(tmp) && d_really_is_positive(tmp)) {
if (simple_positive(tmp)) {
dget_dlock(tmp);
__d_drop(tmp);
spin_unlock(&tmp->d_lock);
2 changes: 1 addition & 1 deletion drivers/infiniband/hw/qib/qib_fs.c
Original file line number Diff line number Diff line change
@@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name)
}

spin_lock(&tmp->d_lock);
if (!d_unhashed(tmp) && d_really_is_positive(tmp)) {
if (simple_positive(tmp)) {
__d_drop(tmp);
spin_unlock(&tmp->d_lock);
simple_unlink(d_inode(parent), tmp);
5 changes: 0 additions & 5 deletions fs/autofs4/autofs_i.h
Original file line number Diff line number Diff line change
@@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi)
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)
{
struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb);
2 changes: 1 addition & 1 deletion fs/ceph/dir.c
Original file line number Diff line number Diff line change
@@ -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);
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_ino(d_inode(dentry)) != CEPH_INO_CEPH &&
fpos_cmp(ctx->pos, di->offset) <= 0)
2 changes: 1 addition & 1 deletion fs/configfs/inode.c
Original file line number Diff line number Diff line change
@@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent)

if (dentry) {
spin_lock(&dentry->d_lock);
if (!d_unhashed(dentry) && d_really_is_positive(dentry)) {
if (simple_positive(dentry)) {
dget_dlock(dentry);
__d_drop(dentry);
spin_unlock(&dentry->d_lock);
11 changes: 3 additions & 8 deletions fs/debugfs/inode.c
Original file line number Diff line number Diff line change
@@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb)
return inode;
}

static inline int debugfs_positive(struct dentry *dentry)
{
return d_really_is_positive(dentry) && !d_unhashed(dentry);
}

struct debugfs_mount_opts {
kuid_t uid;
kgid_t gid;
@@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent)
{
int ret = 0;

if (debugfs_positive(dentry)) {
if (simple_positive(dentry)) {
dget(dentry);
if (d_is_dir(dentry))
ret = simple_rmdir(d_inode(parent), dentry);
@@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
*/
spin_lock(&parent->d_lock);
list_for_each_entry(child, &parent->d_subdirs, d_child) {
if (!debugfs_positive(child))
if (!simple_positive(child))
continue;

/* perhaps simple_empty(child) makes more sense */
@@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
* from d_subdirs. When releasing the parent->d_lock we can
* no longer trust that the next pointer is valid.
* Restart the loop. We'll skip this one with the
* debugfs_positive() check.
* simple_positive() check.
*/
goto loop;
}
5 changes: 0 additions & 5 deletions fs/libfs.c
Original file line number Diff line number Diff line change
@@ -20,11 +20,6 @@

#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,
struct kstat *stat)
{
2 changes: 1 addition & 1 deletion fs/nfs/dir.c
Original file line number Diff line number Diff line change
@@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir);

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);
}

11 changes: 3 additions & 8 deletions fs/tracefs/inode.c
Original file line number Diff line number Diff line change
@@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare
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)
{
int ret = 0;

if (tracefs_positive(dentry)) {
if (simple_positive(dentry)) {
if (dentry->d_inode) {
dget(dentry);
switch (dentry->d_inode->i_mode & S_IFMT) {
@@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
*/
spin_lock(&parent->d_lock);
list_for_each_entry(child, &parent->d_subdirs, d_child) {
if (!tracefs_positive(child))
if (!simple_positive(child))
continue;

/* perhaps simple_empty(child) makes more sense */
@@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
* from d_subdirs. When releasing the parent->d_lock we can
* no longer trust that the next pointer is valid.
* Restart the loop. We'll skip this one with the
* tracefs_positive() check.
* simple_positive() check.
*/
goto loop;
}
5 changes: 5 additions & 0 deletions include/linux/dcache.h
Original file line number Diff line number Diff line change
@@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry)
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);

static inline bool d_is_fallthru(const struct dentry *dentry)
19 changes: 6 additions & 13 deletions security/inode.c
Original file line number Diff line number Diff line change
@@ -25,11 +25,6 @@
static struct vfsmount *mount;
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 struct tree_descr files[] = {{""}};
@@ -201,14 +196,12 @@ void securityfs_remove(struct dentry *dentry)
return;

mutex_lock(&d_inode(parent)->i_mutex);
if (positive(dentry)) {
if (d_really_is_positive(dentry)) {
if (d_is_dir(dentry))
simple_rmdir(d_inode(parent), dentry);
else
simple_unlink(d_inode(parent), dentry);
dput(dentry);
}
if (simple_positive(dentry)) {
if (d_is_dir(dentry))
simple_rmdir(d_inode(parent), dentry);
else
simple_unlink(d_inode(parent), dentry);
dput(dentry);
}
mutex_unlock(&d_inode(parent)->i_mutex);
simple_release_fs(&mount, &mount_count);

0 comments on commit dc3f419

Please sign in to comment.