Skip to content

Commit

Permalink
helper for reading ->d_count
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Jul 5, 2013
1 parent 74b9272 commit 84d08fa
Show file tree
Hide file tree
Showing 12 changed files with 22 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ truncate_complete_page(struct address_space *mapping, struct page *page)
ll_delete_from_page_cache(page);
}

# define d_refcount(d) ((d)->d_count)
# define d_refcount(d) d_count(d)

#ifdef ATTR_OPEN
# define ATTR_FROM_OPEN ATTR_OPEN
Expand Down
8 changes: 4 additions & 4 deletions fs/autofs4/expire.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,

spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
/* Already gone or negative dentry (under construction) - try next */
if (q->d_count == 0 || !simple_positive(q)) {
if (!d_count(q) || !simple_positive(q)) {
spin_unlock(&q->d_lock);
next = q->d_u.d_child.next;
goto cont;
Expand Down Expand Up @@ -267,7 +267,7 @@ static int autofs4_tree_busy(struct vfsmount *mnt,
else
ino_count++;

if (p->d_count > ino_count) {
if (d_count(p) > ino_count) {
top_ino->last_used = jiffies;
dput(p);
return 1;
Expand Down Expand Up @@ -409,7 +409,7 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb,
if (!exp_leaves) {
/* Path walk currently on this dentry? */
ino_count = atomic_read(&ino->count) + 1;
if (dentry->d_count > ino_count)
if (d_count(dentry) > ino_count)
goto next;

if (!autofs4_tree_busy(mnt, dentry, timeout, do_now)) {
Expand All @@ -423,7 +423,7 @@ struct dentry *autofs4_expire_indirect(struct super_block *sb,
} else {
/* Path walk currently on this dentry? */
ino_count = atomic_read(&ino->count) + 1;
if (dentry->d_count > ino_count)
if (d_count(dentry) > ino_count)
goto next;

expired = autofs4_check_leaves(mnt, dentry, timeout, do_now);
Expand Down
2 changes: 1 addition & 1 deletion fs/autofs4/root.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ static struct dentry *autofs4_lookup_active(struct dentry *dentry)
spin_lock(&active->d_lock);

/* Already gone? */
if (active->d_count == 0)
if (!d_count(active))
goto next;

qstr = &active->d_name;
Expand Down
4 changes: 2 additions & 2 deletions fs/ceph/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -903,8 +903,8 @@ static struct dentry *splice_dentry(struct dentry *dn, struct inode *in,
} else if (realdn) {
dout("dn %p (%d) spliced with %p (%d) "
"inode %p ino %llx.%llx\n",
dn, dn->d_count,
realdn, realdn->d_count,
dn, d_count(dn),
realdn, d_count(realdn),
realdn->d_inode, ceph_vinop(realdn->d_inode));
dput(dn);
dn = realdn;
Expand Down
2 changes: 1 addition & 1 deletion fs/ceph/mds_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -1553,7 +1553,7 @@ char *ceph_mdsc_build_path(struct dentry *dentry, int *plen, u64 *base,
*base = ceph_ino(temp->d_inode);
*plen = len;
dout("build_path on %p %d built %llx '%.*s'\n",
dentry, dentry->d_count, *base, len, path);
dentry, d_count(dentry), *base, len, path);
return path;
}

Expand Down
2 changes: 1 addition & 1 deletion fs/coda/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ static int coda_dentry_revalidate(struct dentry *de, unsigned int flags)
if (cii->c_flags & C_FLUSH)
coda_flag_inode_children(inode, C_FLUSH);

if (de->d_count > 1)
if (d_count(de) > 1)
/* pretend it's valid, but don't change the flags */
goto out;

Expand Down
2 changes: 1 addition & 1 deletion fs/ecryptfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ static int ecryptfs_lookup_interpose(struct dentry *dentry,

lower_mnt = mntget(ecryptfs_dentry_to_lower_mnt(dentry->d_parent));
fsstack_copy_attr_atime(dir_inode, lower_dentry->d_parent->d_inode);
BUG_ON(!lower_dentry->d_count);
BUG_ON(!d_count(lower_dentry));

ecryptfs_set_dentry_private(dentry, dentry_info);
ecryptfs_set_dentry_lower(dentry, lower_dentry);
Expand Down
2 changes: 1 addition & 1 deletion fs/locks.c
Original file line number Diff line number Diff line change
Expand Up @@ -1454,7 +1454,7 @@ static int generic_add_lease(struct file *filp, long arg, struct file_lock **flp
if ((arg == F_RDLCK) && (atomic_read(&inode->i_writecount) > 0))
goto out;
if ((arg == F_WRLCK)
&& ((dentry->d_count > 1)
&& ((d_count(dentry) > 1)
|| (atomic_read(&inode->i_count) > 1)))
goto out;

Expand Down
6 changes: 3 additions & 3 deletions fs/nfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1721,7 +1721,7 @@ int nfs_unlink(struct inode *dir, struct dentry *dentry)
dir->i_ino, dentry->d_name.name);

spin_lock(&dentry->d_lock);
if (dentry->d_count > 1) {
if (d_count(dentry) > 1) {
spin_unlock(&dentry->d_lock);
/* Start asynchronous writeout of the inode */
write_inode_now(dentry->d_inode, 0);
Expand Down Expand Up @@ -1866,7 +1866,7 @@ int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,
dfprintk(VFS, "NFS: rename(%s/%s -> %s/%s, ct=%d)\n",
old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
new_dentry->d_parent->d_name.name, new_dentry->d_name.name,
new_dentry->d_count);
d_count(new_dentry));

/*
* For non-directories, check whether the target is busy and if so,
Expand All @@ -1884,7 +1884,7 @@ int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,
rehash = new_dentry;
}

if (new_dentry->d_count > 2) {
if (d_count(new_dentry) > 2) {
int err;

/* copy the target dentry's name */
Expand Down
2 changes: 1 addition & 1 deletion fs/nfs/unlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ nfs_sillyrename(struct inode *dir, struct dentry *dentry)

dfprintk(VFS, "NFS: silly-rename(%s/%s, ct=%d)\n",
dentry->d_parent->d_name.name, dentry->d_name.name,
dentry->d_count);
d_count(dentry));
nfs_inc_stats(dir, NFSIOS_SILLYRENAME);

/*
Expand Down
2 changes: 1 addition & 1 deletion fs/nilfs2/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,7 @@ static int nilfs_attach_snapshot(struct super_block *s, __u64 cno,

static int nilfs_tree_was_touched(struct dentry *root_dentry)
{
return root_dentry->d_count > 1;
return d_count(root_dentry) > 1;
}

/**
Expand Down
5 changes: 5 additions & 0 deletions include/linux/dcache.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,11 @@ static inline int __d_rcu_to_refcount(struct dentry *dentry, unsigned seq)
return ret;
}

static inline unsigned d_count(struct dentry *dentry)
{
return dentry->d_count;
}

/* validate "insecure" dentry pointer */
extern int d_validate(struct dentry *, struct dentry *);

Expand Down

0 comments on commit 84d08fa

Please sign in to comment.