xfs: use XFS_B_TO_FSB in xfs_ioctl_setattr
[linux-2.6-microblaze.git] / fs / xfs / xfs_ioctl.c
index 99dfe89..7909e46 100644 (file)
@@ -1117,13 +1117,14 @@ xfs_fill_fsxattr(
        bool                    attr,
        struct fsxattr          *fa)
 {
+       struct xfs_mount        *mp = ip->i_mount;
        struct xfs_ifork        *ifp = attr ? ip->i_afp : &ip->i_df;
 
        simple_fill_fsxattr(fa, xfs_ip2xflags(ip));
-       fa->fsx_extsize = ip->i_d.di_extsize << ip->i_mount->m_sb.sb_blocklog;
-       fa->fsx_cowextsize = ip->i_d.di_cowextsize <<
-                       ip->i_mount->m_sb.sb_blocklog;
-       fa->fsx_projid = ip->i_d.di_projid;
+
+       fa->fsx_extsize = XFS_FSB_TO_B(mp, ip->i_extsize);
+       fa->fsx_cowextsize = XFS_FSB_TO_B(mp, ip->i_cowextsize);
+       fa->fsx_projid = ip->i_projid;
        if (ifp && (ifp->if_flags & XFS_IFEXTENTS))
                fa->fsx_nextents = xfs_iext_count(ifp);
        else
@@ -1223,7 +1224,7 @@ xfs_ioctl_setattr_xflags(
        /* If realtime flag is set then must have realtime device */
        if (fa->fsx_xflags & FS_XFLAG_REALTIME) {
                if (mp->m_sb.sb_rblocks == 0 || mp->m_sb.sb_rextsize == 0 ||
-                   (ip->i_d.di_extsize % mp->m_sb.sb_rextsize))
+                   (ip->i_extsize % mp->m_sb.sb_rextsize))
                        return -EINVAL;
        }
 
@@ -1347,7 +1348,7 @@ xfs_ioctl_setattr_check_extsize(
        xfs_fsblock_t           extsize_fsb;
 
        if (S_ISREG(VFS_I(ip)->i_mode) && ip->i_df.if_nextents &&
-           ((ip->i_d.di_extsize << mp->m_sb.sb_blocklog) != fa->fsx_extsize))
+           ((ip->i_extsize << mp->m_sb.sb_blocklog) != fa->fsx_extsize))
                return -EINVAL;
 
        if (fa->fsx_extsize == 0)
@@ -1505,12 +1506,12 @@ xfs_ioctl_setattr(
                VFS_I(ip)->i_mode &= ~(S_ISUID|S_ISGID);
 
        /* Change the ownerships and register project quota modifications */
-       if (ip->i_d.di_projid != fa->fsx_projid) {
+       if (ip->i_projid != fa->fsx_projid) {
                if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_PQUOTA_ON(mp)) {
                        olddquot = xfs_qm_vop_chown(tp, ip,
                                                &ip->i_pdquot, pdqp);
                }
-               ip->i_d.di_projid = fa->fsx_projid;
+               ip->i_projid = fa->fsx_projid;
        }
 
        /*
@@ -1519,15 +1520,14 @@ xfs_ioctl_setattr(
         * are set on the inode then unconditionally clear the extent size hint.
         */
        if (ip->i_d.di_flags & (XFS_DIFLAG_EXTSIZE | XFS_DIFLAG_EXTSZINHERIT))
-               ip->i_d.di_extsize = fa->fsx_extsize >> mp->m_sb.sb_blocklog;
+               ip->i_extsize = XFS_B_TO_FSB(mp, fa->fsx_extsize);
        else
-               ip->i_d.di_extsize = 0;
+               ip->i_extsize = 0;
        if (xfs_sb_version_has_v3inode(&mp->m_sb) &&
            (ip->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE))
-               ip->i_d.di_cowextsize = fa->fsx_cowextsize >>
-                               mp->m_sb.sb_blocklog;
+               ip->i_cowextsize = XFS_B_TO_FSB(mp, fa->fsx_cowextsize);
        else
-               ip->i_d.di_cowextsize = 0;
+               ip->i_cowextsize = 0;
 
        error = xfs_trans_commit(tp);