Skip to content

Commit

Permalink
jfs: fix diAllocExt error in resizing filesystem
Browse files Browse the repository at this point in the history
Resizing the filesystem would result in an diAllocExt error in some
instances because changes in bmp->db_agsize would not get noticed if
goto extendBmap was called.

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Cc: jfs-discussion@lists.sourceforge.net
Cc: linux-kernel@vger.kernel.org
  • Loading branch information
Bill Pemberton authored and Dave Kleikamp committed Apr 16, 2010
1 parent d7eecb4 commit 2b0b395
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion fs/jfs/resize.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
struct inode *iplist[1];
struct jfs_superblock *j_sb, *j_sb2;
uint old_agsize;
int agsizechanged = 0;
struct buffer_head *bh, *bh2;

/* If the volume hasn't grown, get out now */
Expand Down Expand Up @@ -333,6 +334,9 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
*/
if ((rc = dbExtendFS(ipbmap, XAddress, nblocks)))
goto error_out;

agsizechanged |= (bmp->db_agsize != old_agsize);

/*
* the map now has extended to cover additional nblocks:
* dn_mapsize = oldMapsize + nblocks;
Expand Down Expand Up @@ -432,7 +436,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
* will correctly identify the new ag);
*/
/* if new AG size the same as old AG size, done! */
if (bmp->db_agsize != old_agsize) {
if (agsizechanged) {
if ((rc = diExtendFS(ipimap, ipbmap)))
goto error_out;

Expand Down

0 comments on commit 2b0b395

Please sign in to comment.