git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[pandora-kernel.git]
/
fs
/
jfs
/
resize.c
diff --git
a/fs/jfs/resize.c
b/fs/jfs/resize.c
index
79d625f
..
1aba003
100644
(file)
--- a/
fs/jfs/resize.c
+++ b/
fs/jfs/resize.c
@@
-29,17
+29,17
@@
#include "jfs_txnmgr.h"
#include "jfs_debug.h"
#include "jfs_txnmgr.h"
#include "jfs_debug.h"
-#define BITSPERPAGE
(PSIZE << 3)
-#define L2MEGABYTE
20
-#define MEGABYTE
(1 << L2MEGABYTE)
-#define MEGABYTE32 (MEGABYTE << 5)
+#define BITSPERPAGE (PSIZE << 3)
+#define L2MEGABYTE 20
+#define MEGABYTE (1 << L2MEGABYTE)
+#define MEGABYTE32 (MEGABYTE << 5)
/* convert block number to bmap file page number */
#define BLKTODMAPN(b)\
/* convert block number to bmap file page number */
#define BLKTODMAPN(b)\
-
(((b) >> 13) + ((b) >> 23) + ((b) >> 33) + 3 + 1)
+ (((b) >> 13) + ((b) >> 23) + ((b) >> 33) + 3 + 1)
/*
/*
- *
jfs_extendfs()
+ * jfs_extendfs()
*
* function: extend file system;
*
*
* function: extend file system;
*
@@
-48,9
+48,9
@@
* workspace space
*
* input:
* workspace space
*
* input:
- *
new LVSize: in LV blocks (required)
- *
new LogSize: in LV blocks (optional)
- *
new FSSize: in LV blocks (optional)
+ * new LVSize: in LV blocks (required)
+ * new LogSize: in LV blocks (optional)
+ * new FSSize: in LV blocks (optional)
*
* new configuration:
* 1. set new LogSize as specified or default from new LVSize;
*
* new configuration:
* 1. set new LogSize as specified or default from new LVSize;
@@
-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;
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 */
struct buffer_head *bh, *bh2;
/* If the volume hasn't grown, get out now */
@@
-125,8
+126,8
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
}
/*
}
/*
- * reconfigure LV spaces
- * ---------------------
+ * reconfigure LV spaces
+ * ---------------------
*
* validate new size, or, if not specified, determine new size
*/
*
* validate new size, or, if not specified, determine new size
*/
@@
-172,7
+173,7
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
*/
t64 = ((newLVSize - newLogSize + BPERDMAP - 1) >> L2BPERDMAP)
<< L2BPERDMAP;
*/
t64 = ((newLVSize - newLogSize + BPERDMAP - 1) >> L2BPERDMAP)
<< L2BPERDMAP;
- t32 =
((t64 + (BITSPERPAGE - 1)) /
BITSPERPAGE) + 1 + 50;
+ t32 =
DIV_ROUND_UP(t64,
BITSPERPAGE) + 1 + 50;
newFSCKSize = t32 << sbi->l2nbperpage;
newFSCKAddress = newLogAddress - newFSCKSize;
newFSCKSize = t32 << sbi->l2nbperpage;
newFSCKAddress = newLogAddress - newFSCKSize;
@@
-198,7
+199,7
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
log_formatted = 1;
}
/*
log_formatted = 1;
}
/*
- * quiesce file system
+ * quiesce file system
*
* (prepare to move the inline log and to prevent map update)
*
*
* (prepare to move the inline log and to prevent map update)
*
@@
-270,8
+271,8
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
}
/*
}
/*
- * extend block allocation map
- * ---------------------------
+ * extend block allocation map
+ * ---------------------------
*
* extendfs() for new extension, retry after crash recovery;
*
*
* extendfs() for new extension, retry after crash recovery;
*
@@
-283,7
+284,7
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
* s_size: aggregate size in physical blocks;
*/
/*
* s_size: aggregate size in physical blocks;
*/
/*
- * compute the new block allocation map configuration
+ * compute the new block allocation map configuration
*
* map dinode:
* di_size: map file size in byte;
*
* map dinode:
* di_size: map file size in byte;
@@
-301,7
+302,7
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
newNpages = BLKTODMAPN(t64) + 1;
/*
newNpages = BLKTODMAPN(t64) + 1;
/*
- * extend map from current map (WITHOUT growing mapfile)
+ * extend map from current map (WITHOUT growing mapfile)
*
* map new extension with unmapped part of the last partial
* dmap page, if applicable, and extra page(s) allocated
*
* map new extension with unmapped part of the last partial
* dmap page, if applicable, and extra page(s) allocated
@@
-333,6
+334,9
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
*/
if ((rc = dbExtendFS(ipbmap, XAddress, nblocks)))
goto error_out;
*/
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;
/*
* the map now has extended to cover additional nblocks:
* dn_mapsize = oldMapsize + nblocks;
@@
-341,8
+345,8
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
XSize -= nblocks;
/*
XSize -= nblocks;
/*
- * grow map file to cover remaining extension
- * and/or one extra dmap page for next extendfs();
+ * grow map file to cover remaining extension
+ * and/or one extra dmap page for next extendfs();
*
* allocate new map pages and its backing blocks, and
* update map file xtree
*
* allocate new map pages and its backing blocks, and
* update map file xtree
@@
-422,8
+426,8
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
dbFinalizeBmap(ipbmap);
/*
dbFinalizeBmap(ipbmap);
/*
- * update inode allocation map
- * ---------------------------
+ * update inode allocation map
+ * ---------------------------
*
* move iag lists from old to new iag;
* agstart field is not updated for logredo() to reconstruct
*
* move iag lists from old to new iag;
* agstart field is not updated for logredo() to reconstruct
@@
-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! */
* 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;
if ((rc = diExtendFS(ipimap, ipbmap)))
goto error_out;
@@
-442,8
+446,8
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
}
/*
}
/*
- * finalize
- * --------
+ * finalize
+ * --------
*
* extension is committed when on-disk super block is
* updated with new descriptors: logredo will recover
*
* extension is committed when on-disk super block is
* updated with new descriptors: logredo will recover
@@
-480,7
+484,7
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
diFreeSpecial(ipbmap2);
/*
diFreeSpecial(ipbmap2);
/*
- * update superblock
+ * update superblock
*/
if ((rc = readSuper(sb, &bh)))
goto error_out;
*/
if ((rc = readSuper(sb, &bh)))
goto error_out;
@@
-530,7
+534,7
@@
int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
resume:
/*
resume:
/*
- * resume file system transactions
+ * resume file system transactions
*/
txResume(sb);
*/
txResume(sb);