fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / fs / jfs / resize.c
index 71f6753..79d625f 100644 (file)
@@ -1,23 +1,24 @@
 /*
- *   Copyright (C) International Business Machines  Corp., 2000-2003
+ *   Copyright (C) International Business Machines  Corp., 2000-2004
  *
  *   This program is free software;  you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or 
+ *   the Free Software Foundation; either version 2 of the License, or
  *   (at your option) any later version.
- * 
+ *
  *   This program is distributed in the hope that it will be useful,
  *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  *   the GNU General Public License for more details.
  *
  *   You should have received a copy of the GNU General Public License
- *   along with this program;  if not, write to the Free Software 
+ *   along with this program;  if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
 
 #include <linux/fs.h>
 #include <linux/buffer_head.h>
+#include <linux/quotaops.h>
 #include "jfs_incore.h"
 #include "jfs_filsys.h"
 #include "jfs_metapage.h"
@@ -208,6 +209,9 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
         */
        txQuiesce(sb);
 
+       /* Reset size of direct inode */
+       sbi->direct_inode->i_size =  sb->s_bdev->bd_inode->i_size;
+
        if (sbi->mntflag & JFS_INLINELOG) {
                /*
                 * deactivate old inline log
@@ -372,8 +376,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
         * by txCommit();
         */
        filemap_fdatawait(ipbmap->i_mapping);
-       filemap_fdatawrite(ipbmap->i_mapping);
-       filemap_fdatawait(ipbmap->i_mapping);
+       filemap_write_and_wait(ipbmap->i_mapping);
        diWriteSpecial(ipbmap, 0);
 
        newPage = nPages;       /* first new page number */
@@ -390,7 +393,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
        }
        /* update bmap file size */
        ipbmap->i_size += xlen << sbi->l2bsize;
-       ipbmap->i_blocks += LBLK2PBLK(sb, xlen);
+       inode_add_bytes(ipbmap, xlen << sbi->l2bsize);
 
        iplist[0] = ipbmap;
        rc = txCommit(tid, 1, &iplist[0], COMMIT_FORCE);