[XFS] Remove the xfs_refcache
authorDonald Douwsma <donaldd@sgi.com>
Thu, 6 Mar 2008 02:43:20 +0000 (13:43 +1100)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Fri, 18 Apr 2008 01:36:55 +0000 (11:36 +1000)
Remove the xfs_refcache, it was only needed while we were still
building for 2.4 kernels.

SGI-PV: 971186
SGI-Modid: xfs-linux-melb:xfs-kern:30472a

Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
fs/xfs/linux-2.6/xfs_linux.h
fs/xfs/xfs_inode.h
fs/xfs/xfs_rename.c
fs/xfs/xfs_vfsops.c
fs/xfs/xfs_vnodeops.c

index 3ca39c4e5d2a7cdcf8dc02c0e668e1ef71646c28..e5143323e71f35ba82167013843539e19b34c15e 100644 (file)
@@ -99,7 +99,6 @@
 /*
  * Feature macros (disable/enable)
  */
-#undef  HAVE_REFCACHE  /* reference cache not needed for NFS in 2.6 */
 #define HAVE_SPLICE    /* a splice(2) exists in 2.6, but not in 2.4 */
 #ifdef CONFIG_SMP
 #define HAVE_PERCPU_SB /* per cpu superblock counters are a 2.6 feature */
index bfcd72cbaeea9f4e95b1892979d93768f8476d8a..eaa01895ff93ed42e59efa3ca0d238ba9511255f 100644 (file)
@@ -240,10 +240,6 @@ typedef struct xfs_inode {
        atomic_t                i_pincount;     /* inode pin count */
        wait_queue_head_t       i_ipin_wait;    /* inode pinning wait queue */
        spinlock_t              i_flags_lock;   /* inode i_flags lock */
-#ifdef HAVE_REFCACHE
-       struct xfs_inode        **i_refcache;   /* ptr to entry in ref cache */
-       struct xfs_inode        *i_release;     /* inode to unref */
-#endif
        /* Miscellaneous state. */
        unsigned short          i_flags;        /* see defined flags below */
        unsigned char           i_update_core;  /* timestamps/size is dirty */
index 7eb157a59f9eef5521babb49a5d8e082dc9f68d2..1c6d40ed6816b51dd78df0bd0115fb7b4f05d01b 100644 (file)
@@ -36,7 +36,6 @@
 #include "xfs_bmap.h"
 #include "xfs_error.h"
 #include "xfs_quota.h"
-#include "xfs_refcache.h"
 #include "xfs_utils.h"
 #include "xfs_trans_space.h"
 #include "xfs_vnodeops.h"
@@ -580,10 +579,8 @@ xfs_rename(
         * the vnode references.
         */
        error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES);
-       if (target_ip != NULL) {
-               xfs_refcache_purge_ip(target_ip);
+       if (target_ip != NULL)
                IRELE(target_ip);
-       }
        /*
         * Let interposed file systems know about removed links.
         */
index 7094caff13cff35acb33f8f2359632ed3f6c3a35..79bdfb3d6081ec060fe026da012ed5864cd3c3e6 100644 (file)
@@ -43,7 +43,6 @@
 #include "xfs_error.h"
 #include "xfs_bmap.h"
 #include "xfs_rw.h"
-#include "xfs_refcache.h"
 #include "xfs_buf_item.h"
 #include "xfs_log_priv.h"
 #include "xfs_dir2_trace.h"
@@ -157,7 +156,6 @@ xfs_cleanup(void)
 
        xfs_cleanup_procfs();
        xfs_sysctl_unregister();
-       xfs_refcache_destroy();
        xfs_filestream_uninit();
        xfs_mru_cache_uninit();
        xfs_acl_zone_destroy(xfs_acl_zone);
@@ -584,11 +582,6 @@ xfs_unmount(
                                        0 : DM_FLAGS_UNWANTED;
        }
 #endif
-       /*
-        * First blow any referenced inode from this file system
-        * out of the reference cache, and delete the timer.
-        */
-       xfs_refcache_purge_mp(mp);
 
        /*
         * Blow away any referenced inode in the filestreams cache.
@@ -652,7 +645,6 @@ xfs_quiesce_fs(
 {
        int                     count = 0, pincount;
 
-       xfs_refcache_purge_mp(mp);
        xfs_flush_buftarg(mp->m_ddev_targp, 0);
        xfs_finish_reclaim_all(mp, 0);
 
@@ -1322,18 +1314,6 @@ xfs_syncsub(
                }
        }
 
-       /*
-        * If this is the periodic sync, then kick some entries out of
-        * the reference cache.  This ensures that idle entries are
-        * eventually kicked out of the cache.
-        */
-       if (flags & SYNC_REFCACHE) {
-               if (flags & SYNC_WAIT)
-                       xfs_refcache_purge_mp(mp);
-               else
-                       xfs_refcache_purge_some(mp);
-       }
-
        /*
         * If asked, update the disk superblock with incore counter values if we
         * are using non-persistent counters so that they don't get too far out
index ce82a2d0acbe1f76eca5d4646c59f4aaf6cbadb9..35ac59dabf8bc126b80c64ebbc3abaf4627d6eff 100644 (file)
@@ -48,7 +48,6 @@
 #include "xfs_quota.h"
 #include "xfs_utils.h"
 #include "xfs_rtalloc.h"
-#include "xfs_refcache.h"
 #include "xfs_trans_space.h"
 #include "xfs_log_priv.h"
 #include "xfs_filestream.h"
@@ -1520,12 +1519,6 @@ xfs_release(
                        xfs_flush_pages(ip, 0, -1, XFS_B_ASYNC, FI_NONE);
        }
 
-#ifdef HAVE_REFCACHE
-       /* If we are in the NFS reference cache then don't do this now */
-       if (ip->i_refcache)
-               return 0;
-#endif
-
        if (ip->i_d.di_nlink != 0) {
                if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
                     ((ip->i_size > 0) || (VN_CACHED(vp) > 0 ||
@@ -2448,14 +2441,6 @@ xfs_remove(
                goto std_return;
        }
 
-       /*
-        * Before we drop our extra reference to the inode, purge it
-        * from the refcache if it is there.  By waiting until afterwards
-        * to do the IRELE, we ensure that we won't go inactive in the
-        * xfs_refcache_purge_ip routine (although that would be OK).
-        */
-       xfs_refcache_purge_ip(ip);
-
        /*
         * If we are using filestreams, kill the stream association.
         * If the file is still open it may get a new one but that
@@ -2495,14 +2480,6 @@ xfs_remove(
        cancel_flags |= XFS_TRANS_ABORT;
        xfs_trans_cancel(tp, cancel_flags);
 
-       /*
-        * Before we drop our extra reference to the inode, purge it
-        * from the refcache if it is there.  By waiting until afterwards
-        * to do the IRELE, we ensure that we won't go inactive in the
-        * xfs_refcache_purge_ip routine (although that would be OK).
-        */
-       xfs_refcache_purge_ip(ip);
-
        IRELE(ip);
 
        goto std_return;
@@ -3460,16 +3437,7 @@ xfs_rwunlock(
 {
        if (S_ISDIR(ip->i_d.di_mode))
                return;
-       if (locktype == VRWLOCK_WRITE) {
-               /*
-                * In the write case, we may have added a new entry to
-                * the reference cache.  This might store a pointer to
-                * an inode to be released in this inode.  If it is there,
-                * clear the pointer and release the inode after unlocking
-                * this one.
-                */
-               xfs_refcache_iunlock(ip, XFS_IOLOCK_EXCL);
-       } else {
+       if (locktype != VRWLOCK_WRITE) {
                ASSERT((locktype == VRWLOCK_READ) ||
                       (locktype == VRWLOCK_WRITE_DIRECT));
                xfs_iunlock(ip, XFS_IOLOCK_SHARED);