Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4ca488eb45692520f745f96abc00ea4e268a87d4
Commit:     4ca488eb45692520f745f96abc00ea4e268a87d4
Parent:     c43f408795c3210c9f5c925e4a49dbb93d41bb57
Author:     Christoph Hellwig <[EMAIL PROTECTED]>
AuthorDate: Thu Oct 11 18:09:40 2007 +1000
Committer:  Lachlan McIlroy <[EMAIL PROTECTED]>
CommitDate: Thu Feb 7 16:53:27 2008 +1100

    [XFS] Kill off xfs_statvfs.
    
    We were already filling the Linux struct statfs anyway, and doing this
    trivial task directly in xfs_fs_statfs makes the code quite a bit cleaner.
    While I was at it I also moved copying attributes that don't change over
    the lifetime of the filesystem outside the superblock lock.
    
    xfs_fs_fill_super used to get the magic number and blocksize through
    xfs_statvfs, but assigning them directly is a lot cleaner and will save
    some stack space during mount.
    
    SGI-PV: 971186
    SGI-Modid: xfs-linux-melb:xfs-kern:29802a
    
    Signed-off-by: Christoph Hellwig <[EMAIL PROTECTED]>
    Signed-off-by: Tim Shimmin <[EMAIL PROTECTED]>
---
 fs/xfs/linux-2.6/xfs_linux.h |    4 ---
 fs/xfs/linux-2.6/xfs_super.c |   51 ++++++++++++++++++++++++++++++++--------
 fs/xfs/xfs_vfsops.c          |   53 ------------------------------------------
 fs/xfs/xfs_vfsops.h          |    2 -
 4 files changed, 41 insertions(+), 69 deletions(-)

diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
index ec51ecd..9bf4f7e 100644
--- a/fs/xfs/linux-2.6/xfs_linux.h
+++ b/fs/xfs/linux-2.6/xfs_linux.h
@@ -207,10 +207,6 @@
 #define xfs_stack_trace()      dump_stack()
 #define xfs_itruncate_data(ip, off)    \
        (-vmtruncate(vn_to_inode(XFS_ITOV(ip)), (off)))
-#define xfs_statvfs_fsid(statp, mp)    \
-       ({ u64 id = huge_encode_dev((mp)->m_ddev_targp->bt_dev); \
-          __kernel_fsid_t *fsid = &(statp)->f_fsid;    \
-       (fsid->val[0] = (u32)id, fsid->val[1] = (u32)(id >> 32)); })
 
 
 /* Move the kernel do_div definition off to one side */
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index 400ed2f..c054973 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -681,8 +681,44 @@ xfs_fs_statfs(
        struct dentry           *dentry,
        struct kstatfs          *statp)
 {
-       return -xfs_statvfs(XFS_M(dentry->d_sb), statp,
-                               vn_from_inode(dentry->d_inode));
+       struct xfs_mount        *mp = XFS_M(dentry->d_sb);
+       xfs_sb_t                *sbp = &mp->m_sb;
+       __uint64_t              fakeinos, id;
+       xfs_extlen_t            lsize;
+
+       statp->f_type = XFS_SB_MAGIC;
+       statp->f_namelen = MAXNAMELEN - 1;
+
+       id = huge_encode_dev(mp->m_ddev_targp->bt_dev);
+       statp->f_fsid.val[0] = (u32)id;
+       statp->f_fsid.val[1] = (u32)(id >> 32);
+
+       xfs_icsb_sync_counters_flags(mp, XFS_ICSB_LAZY_COUNT);
+
+       spin_lock(&mp->m_sb_lock);
+       statp->f_bsize = sbp->sb_blocksize;
+       lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0;
+       statp->f_blocks = sbp->sb_dblocks - lsize;
+       statp->f_bfree = statp->f_bavail =
+                               sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
+       fakeinos = statp->f_bfree << sbp->sb_inopblog;
+#if XFS_BIG_INUMS
+       fakeinos += mp->m_inoadd;
+#endif
+       statp->f_files =
+           MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER);
+       if (mp->m_maxicount)
+#if XFS_BIG_INUMS
+               if (!mp->m_inoadd)
+#endif
+                       statp->f_files = min_t(typeof(statp->f_files),
+                                               statp->f_files,
+                                               mp->m_maxicount);
+       statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree);
+       spin_unlock(&mp->m_sb_lock);
+
+       XFS_QM_DQSTATVFS(XFS_I(dentry->d_inode), statp);
+       return 0;
 }
 
 STATIC int
@@ -777,7 +813,6 @@ xfs_fs_fill_super(
        struct inode            *rootvp;
        struct xfs_mount        *mp = NULL;
        struct xfs_mount_args   *args = xfs_args_allocate(sb, silent);
-       struct kstatfs          statvfs;
        int                     error;
 
        mp = xfs_mount_init();
@@ -805,14 +840,10 @@ xfs_fs_fill_super(
        if (error)
                goto fail_vfsop;
 
-       error = xfs_statvfs(mp, &statvfs, NULL);
-       if (error)
-               goto fail_unmount;
-
        sb->s_dirt = 1;
-       sb->s_magic = statvfs.f_type;
-       sb->s_blocksize = statvfs.f_bsize;
-       sb->s_blocksize_bits = ffs(statvfs.f_bsize) - 1;
+       sb->s_magic = XFS_SB_MAGIC;
+       sb->s_blocksize = mp->m_sb.sb_blocksize;
+       sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
        sb->s_maxbytes = xfs_max_file_offset(sb->s_blocksize_bits);
        sb->s_time_gran = 1;
        set_posix_acl_flag(sb);
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c
index f584467..1249548 100644
--- a/fs/xfs/xfs_vfsops.c
+++ b/fs/xfs/xfs_vfsops.c
@@ -839,59 +839,6 @@ xfs_root(
 }
 
 /*
- * xfs_statvfs
- *
- * Fill in the statvfs structure for the given file system.  We use
- * the superblock lock in the mount structure to ensure a consistent
- * snapshot of the counters returned.
- */
-int
-xfs_statvfs(
-       xfs_mount_t     *mp,
-       bhv_statvfs_t   *statp,
-       bhv_vnode_t     *vp)
-{
-       __uint64_t      fakeinos;
-       xfs_extlen_t    lsize;
-       xfs_sb_t        *sbp;
-
-       sbp = &(mp->m_sb);
-
-       statp->f_type = XFS_SB_MAGIC;
-
-       xfs_icsb_sync_counters_flags(mp, XFS_ICSB_LAZY_COUNT);
-       spin_lock(&mp->m_sb_lock);
-       statp->f_bsize = sbp->sb_blocksize;
-       lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0;
-       statp->f_blocks = sbp->sb_dblocks - lsize;
-       statp->f_bfree = statp->f_bavail =
-                               sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
-       fakeinos = statp->f_bfree << sbp->sb_inopblog;
-#if XFS_BIG_INUMS
-       fakeinos += mp->m_inoadd;
-#endif
-       statp->f_files =
-           MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER);
-       if (mp->m_maxicount)
-#if XFS_BIG_INUMS
-               if (!mp->m_inoadd)
-#endif
-                       statp->f_files = min_t(typeof(statp->f_files),
-                                               statp->f_files,
-                                               mp->m_maxicount);
-       statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree);
-       spin_unlock(&mp->m_sb_lock);
-
-       xfs_statvfs_fsid(statp, mp);
-       statp->f_namelen = MAXNAMELEN - 1;
-
-       if (vp)
-               XFS_QM_DQSTATVFS(xfs_vtoi(vp), statp);
-       return 0;
-}
-
-
-/*
  * xfs_sync flushes any pending I/O to file system vfsp.
  *
  * This routine is called by vfs_sync() to make sure that things make it
diff --git a/fs/xfs/xfs_vfsops.h b/fs/xfs/xfs_vfsops.h
index a592fe0..ce3eb94 100644
--- a/fs/xfs/xfs_vfsops.h
+++ b/fs/xfs/xfs_vfsops.h
@@ -14,8 +14,6 @@ int xfs_unmount(struct xfs_mount *mp, int flags, struct cred 
*credp);
 int xfs_mntupdate(struct xfs_mount *mp, int *flags,
                struct xfs_mount_args *args);
 int xfs_root(struct xfs_mount *mp, bhv_vnode_t **vpp);
-int xfs_statvfs(struct xfs_mount *mp, struct kstatfs *statp,
-               bhv_vnode_t *vp);
 int xfs_sync(struct xfs_mount *mp, int flags);
 int xfs_vget(struct xfs_mount *mp, bhv_vnode_t **vpp, struct xfs_fid *xfid);
 int xfs_parseargs(struct xfs_mount *mp, char *options,
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to