helper for reading ->d_count
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 5 Jul 2013 14:59:33 +0000 (18:59 +0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 5 Jul 2013 14:59:33 +0000 (18:59 +0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
12 files changed:
drivers/staging/lustre/lustre/include/linux/lustre_patchless_compat.h
fs/autofs4/expire.c
fs/autofs4/root.c
fs/ceph/inode.c
fs/ceph/mds_client.c
fs/coda/dir.c
fs/ecryptfs/inode.c
fs/locks.c
fs/nfs/dir.c
fs/nfs/unlink.c
fs/nilfs2/super.c
include/linux/dcache.h

index f0508084e8c554dcfecbf9d57712ed6bf18d2e35..6367f4cc7361282d2120e28dfe15e2e6785b42fd 100644 (file)
@@ -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
index 13ddec92341cdaaa63cf811ee1037a2038994191..3d9d3f5d5dda688bcd9bfc666210553ffa73be0d 100644 (file)
@@ -109,7 +109,7 @@ cont:
 
        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;
@@ -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;
@@ -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)) {
@@ -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);
index ca8e55548d9893eebf82e4261e79dc84c3b06409..92ef341ba0cf35c1bd1b5f001b9b39068979f6ff 100644 (file)
@@ -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;
index be0f7e20d62ed230186019d65297e8f45f2f4ab2..bd2289a4f40dfbcabc17287ed854d154f96609d1 100644 (file)
@@ -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;
index 74fd2898b2ab43012ab1c3fbf25f619fbd7df3b2..99890b02a10be7b08955353190af317d8eb21a69 100644 (file)
@@ -1553,7 +1553,7 @@ retry:
        *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;
 }
 
index 14a14808320cf1e555d8ca14fdd604590d8b723f..190effc6a6fae2e09f0826979c201c532003b1b8 100644 (file)
@@ -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;
 
index a2f2bb2c256dd24cf8a9e597cbbe7f97a290f282..67e9b6339691f9cc01a378564fa5aa0527da1977 100644 (file)
@@ -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);
index 04e2c1fdb157afeb0bc8fe278a74909cd239126b..c98e1a1431eaed1e94cb9f9b2ba5ff490d2119bb 100644 (file)
@@ -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;
 
index d7ed697133f0b6c6ac667c4e3e334646a6a67b63..c933bdfbcb1f7b3f15be78f9f261db42de9385fb 100644 (file)
@@ -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);
@@ -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,
@@ -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 */
index 1f1f38f0c5d58703ca66c8477d551b708d9cab7b..60395ad3a2e475076ee3382e05b221aacdcaa60b 100644 (file)
@@ -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);
 
        /*
index 1427de5ebf4d7d2a66d05d3ef0b164ef4a9312d5..af3ba0478cdf5d7acedd8fba777f9217ae00f986 100644 (file)
@@ -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;
 }
 
 /**
index f42dbe1454793870dba2d4afd456f51bc2c8b2a5..3092df3614ae4651a867571ccbaa1d670e97c314 100644 (file)
@@ -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 *);