[XFS] Don't double count reserved block changes on UP.
authorDavid Chinner <dgc@sgi.com>
Tue, 29 Apr 2008 02:53:15 +0000 (12:53 +1000)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Tue, 29 Apr 2008 05:58:27 +0000 (15:58 +1000)
On uniprocessor machines, the incore superblock is used for all in memory
accounting of free blocks. in this situation, changes to the reserved
block count are accounted twice; once directly and once via
xfs_mod_incore_sb(). Seeing as the modification on SMP is done via
xfs_mod_incore_sb(), make this the only update mechanism that UP uses as
well.

SGI-PV: 980654
SGI-Modid: xfs-linux-melb:xfs-kern:30997a

Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
fs/xfs/xfs_fsops.c

index 5d5e9b34dd023a5eed298bfff2440dec13b830cb..381ebda4f7bc606c484d504e665769ab45a08377 100644 (file)
@@ -552,11 +552,8 @@ retry:
                        mp->m_resblks += free;
                        mp->m_resblks_avail += free;
                        fdblks_delta = -free;
-                       mp->m_sb.sb_fdblocks = XFS_ALLOC_SET_ASIDE(mp);
                } else {
                        fdblks_delta = -delta;
-                       mp->m_sb.sb_fdblocks =
-                               lcounter + XFS_ALLOC_SET_ASIDE(mp);
                        mp->m_resblks = request;
                        mp->m_resblks_avail += delta;
                }
@@ -587,7 +584,6 @@ out:
                if (error == ENOSPC)
                        goto retry;
        }
-
        return 0;
 }