linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / xfs / linux-2.6 / xfs_fs_subr.c
index dc05628..4fa4b1a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2002,2005-2006 Silicon Graphics, Inc.
+ * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
  * All Rights Reserved.
  *
  * This program is free software; you can redistribute it and/or
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+
 #include "xfs.h"
 
-int  fs_noerr(void) { return 0; }
-int  fs_nosys(void) { return ENOSYS; }
-void fs_noval(void) { return; }
+/*
+ * Stub for no-op vnode operations that return error status.
+ */
+int
+fs_noerr(void)
+{
+       return 0;
+}
 
+/*
+ * Operation unsupported under this file system.
+ */
+int
+fs_nosys(void)
+{
+       return ENOSYS;
+}
+
+/*
+ * Stub for inactive, strategy, and read/write lock/unlock.  Does nothing.
+ */
+/* ARGSUSED */
+void
+fs_noval(void)
+{
+}
+
+/*
+ * vnode pcache layer for vnode_tosspages.
+ * 'last' parameter unused but left in for IRIX compatibility
+ */
 void
 fs_tosspages(
        bhv_desc_t      *bdp,
@@ -28,13 +56,18 @@ fs_tosspages(
        xfs_off_t       last,
        int             fiopt)
 {
-       bhv_vnode_t     *vp = BHV_TO_VNODE(bdp);
-       struct inode    *ip = vn_to_inode(vp);
+       vnode_t         *vp = BHV_TO_VNODE(bdp);
+       struct inode    *ip = LINVFS_GET_IP(vp);
 
        if (VN_CACHED(vp))
                truncate_inode_pages(ip->i_mapping, first);
 }
 
+
+/*
+ * vnode pcache layer for vnode_flushinval_pages.
+ * 'last' parameter unused but left in for IRIX compatibility
+ */
 void
 fs_flushinval_pages(
        bhv_desc_t      *bdp,
@@ -42,17 +75,20 @@ fs_flushinval_pages(
        xfs_off_t       last,
        int             fiopt)
 {
-       bhv_vnode_t     *vp = BHV_TO_VNODE(bdp);
-       struct inode    *ip = vn_to_inode(vp);
+       vnode_t         *vp = BHV_TO_VNODE(bdp);
+       struct inode    *ip = LINVFS_GET_IP(vp);
 
        if (VN_CACHED(vp)) {
-               if (VN_TRUNC(vp))
-                       VUNTRUNCATE(vp);
                filemap_write_and_wait(ip->i_mapping);
+
                truncate_inode_pages(ip->i_mapping, first);
        }
 }
 
+/*
+ * vnode pcache layer for vnode_flush_pages.
+ * 'last' parameter unused but left in for IRIX compatibility
+ */
 int
 fs_flush_pages(
        bhv_desc_t      *bdp,
@@ -61,16 +97,15 @@ fs_flush_pages(
        uint64_t        flags,
        int             fiopt)
 {
-       bhv_vnode_t     *vp = BHV_TO_VNODE(bdp);
-       struct inode    *ip = vn_to_inode(vp);
+       vnode_t         *vp = BHV_TO_VNODE(bdp);
+       struct inode    *ip = LINVFS_GET_IP(vp);
 
-       if (VN_DIRTY(vp)) {
-               if (VN_TRUNC(vp))
-                       VUNTRUNCATE(vp);
+       if (VN_CACHED(vp)) {
                filemap_fdatawrite(ip->i_mapping);
                if (flags & XFS_B_ASYNC)
                        return 0;
                filemap_fdatawait(ip->i_mapping);
        }
+
        return 0;
 }