diff options
Diffstat (limited to 'fs/ext3/super.c')
-rw-r--r-- | fs/ext3/super.c | 110 |
1 files changed, 56 insertions, 54 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 3559086eee5f..8bfd56ef18ca 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -45,7 +45,7 @@ | |||
45 | static int ext3_load_journal(struct super_block *, struct ext3_super_block *, | 45 | static int ext3_load_journal(struct super_block *, struct ext3_super_block *, |
46 | unsigned long journal_devnum); | 46 | unsigned long journal_devnum); |
47 | static int ext3_create_journal(struct super_block *, struct ext3_super_block *, | 47 | static int ext3_create_journal(struct super_block *, struct ext3_super_block *, |
48 | int); | 48 | unsigned int); |
49 | static void ext3_commit_super (struct super_block * sb, | 49 | static void ext3_commit_super (struct super_block * sb, |
50 | struct ext3_super_block * es, | 50 | struct ext3_super_block * es, |
51 | int sync); | 51 | int sync); |
@@ -62,13 +62,13 @@ static void ext3_unlockfs(struct super_block *sb); | |||
62 | static void ext3_write_super (struct super_block * sb); | 62 | static void ext3_write_super (struct super_block * sb); |
63 | static void ext3_write_super_lockfs(struct super_block *sb); | 63 | static void ext3_write_super_lockfs(struct super_block *sb); |
64 | 64 | ||
65 | /* | 65 | /* |
66 | * Wrappers for journal_start/end. | 66 | * Wrappers for journal_start/end. |
67 | * | 67 | * |
68 | * The only special thing we need to do here is to make sure that all | 68 | * The only special thing we need to do here is to make sure that all |
69 | * journal_end calls result in the superblock being marked dirty, so | 69 | * journal_end calls result in the superblock being marked dirty, so |
70 | * that sync() will call the filesystem's write_super callback if | 70 | * that sync() will call the filesystem's write_super callback if |
71 | * appropriate. | 71 | * appropriate. |
72 | */ | 72 | */ |
73 | handle_t *ext3_journal_start_sb(struct super_block *sb, int nblocks) | 73 | handle_t *ext3_journal_start_sb(struct super_block *sb, int nblocks) |
74 | { | 74 | { |
@@ -90,11 +90,11 @@ handle_t *ext3_journal_start_sb(struct super_block *sb, int nblocks) | |||
90 | return journal_start(journal, nblocks); | 90 | return journal_start(journal, nblocks); |
91 | } | 91 | } |
92 | 92 | ||
93 | /* | 93 | /* |
94 | * The only special thing we need to do here is to make sure that all | 94 | * The only special thing we need to do here is to make sure that all |
95 | * journal_stop calls result in the superblock being marked dirty, so | 95 | * journal_stop calls result in the superblock being marked dirty, so |
96 | * that sync() will call the filesystem's write_super callback if | 96 | * that sync() will call the filesystem's write_super callback if |
97 | * appropriate. | 97 | * appropriate. |
98 | */ | 98 | */ |
99 | int __ext3_journal_stop(const char *where, handle_t *handle) | 99 | int __ext3_journal_stop(const char *where, handle_t *handle) |
100 | { | 100 | { |
@@ -159,20 +159,21 @@ static void ext3_handle_error(struct super_block *sb) | |||
159 | if (sb->s_flags & MS_RDONLY) | 159 | if (sb->s_flags & MS_RDONLY) |
160 | return; | 160 | return; |
161 | 161 | ||
162 | if (test_opt (sb, ERRORS_RO)) { | 162 | if (!test_opt (sb, ERRORS_CONT)) { |
163 | printk (KERN_CRIT "Remounting filesystem read-only\n"); | ||
164 | sb->s_flags |= MS_RDONLY; | ||
165 | } else { | ||
166 | journal_t *journal = EXT3_SB(sb)->s_journal; | 163 | journal_t *journal = EXT3_SB(sb)->s_journal; |
167 | 164 | ||
168 | EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT; | 165 | EXT3_SB(sb)->s_mount_opt |= EXT3_MOUNT_ABORT; |
169 | if (journal) | 166 | if (journal) |
170 | journal_abort(journal, -EIO); | 167 | journal_abort(journal, -EIO); |
171 | } | 168 | } |
169 | if (test_opt (sb, ERRORS_RO)) { | ||
170 | printk (KERN_CRIT "Remounting filesystem read-only\n"); | ||
171 | sb->s_flags |= MS_RDONLY; | ||
172 | } | ||
173 | ext3_commit_super(sb, es, 1); | ||
172 | if (test_opt(sb, ERRORS_PANIC)) | 174 | if (test_opt(sb, ERRORS_PANIC)) |
173 | panic("EXT3-fs (device %s): panic forced after error\n", | 175 | panic("EXT3-fs (device %s): panic forced after error\n", |
174 | sb->s_id); | 176 | sb->s_id); |
175 | ext3_commit_super(sb, es, 1); | ||
176 | } | 177 | } |
177 | 178 | ||
178 | void ext3_error (struct super_block * sb, const char * function, | 179 | void ext3_error (struct super_block * sb, const char * function, |
@@ -369,16 +370,16 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi) | |||
369 | { | 370 | { |
370 | struct list_head *l; | 371 | struct list_head *l; |
371 | 372 | ||
372 | printk(KERN_ERR "sb orphan head is %d\n", | 373 | printk(KERN_ERR "sb orphan head is %d\n", |
373 | le32_to_cpu(sbi->s_es->s_last_orphan)); | 374 | le32_to_cpu(sbi->s_es->s_last_orphan)); |
374 | 375 | ||
375 | printk(KERN_ERR "sb_info orphan list:\n"); | 376 | printk(KERN_ERR "sb_info orphan list:\n"); |
376 | list_for_each(l, &sbi->s_orphan) { | 377 | list_for_each(l, &sbi->s_orphan) { |
377 | struct inode *inode = orphan_list_entry(l); | 378 | struct inode *inode = orphan_list_entry(l); |
378 | printk(KERN_ERR " " | 379 | printk(KERN_ERR " " |
379 | "inode %s:%ld at %p: mode %o, nlink %d, next %d\n", | 380 | "inode %s:%lu at %p: mode %o, nlink %d, next %d\n", |
380 | inode->i_sb->s_id, inode->i_ino, inode, | 381 | inode->i_sb->s_id, inode->i_ino, inode, |
381 | inode->i_mode, inode->i_nlink, | 382 | inode->i_mode, inode->i_nlink, |
382 | NEXT_ORPHAN(inode)); | 383 | NEXT_ORPHAN(inode)); |
383 | } | 384 | } |
384 | } | 385 | } |
@@ -475,7 +476,7 @@ static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags) | |||
475 | inode_init_once(&ei->vfs_inode); | 476 | inode_init_once(&ei->vfs_inode); |
476 | } | 477 | } |
477 | } | 478 | } |
478 | 479 | ||
479 | static int init_inodecache(void) | 480 | static int init_inodecache(void) |
480 | { | 481 | { |
481 | ext3_inode_cachep = kmem_cache_create("ext3_inode_cache", | 482 | ext3_inode_cachep = kmem_cache_create("ext3_inode_cache", |
@@ -490,8 +491,7 @@ static int init_inodecache(void) | |||
490 | 491 | ||
491 | static void destroy_inodecache(void) | 492 | static void destroy_inodecache(void) |
492 | { | 493 | { |
493 | if (kmem_cache_destroy(ext3_inode_cachep)) | 494 | kmem_cache_destroy(ext3_inode_cachep); |
494 | printk(KERN_INFO "ext3_inode_cache: not all structures were freed\n"); | ||
495 | } | 495 | } |
496 | 496 | ||
497 | static void ext3_clear_inode(struct inode *inode) | 497 | static void ext3_clear_inode(struct inode *inode) |
@@ -733,8 +733,8 @@ static match_table_t tokens = { | |||
733 | 733 | ||
734 | static ext3_fsblk_t get_sb_block(void **data) | 734 | static ext3_fsblk_t get_sb_block(void **data) |
735 | { | 735 | { |
736 | ext3_fsblk_t sb_block; | 736 | ext3_fsblk_t sb_block; |
737 | char *options = (char *) *data; | 737 | char *options = (char *) *data; |
738 | 738 | ||
739 | if (!options || strncmp(options, "sb=", 3) != 0) | 739 | if (!options || strncmp(options, "sb=", 3) != 0) |
740 | return 1; /* Default location */ | 740 | return 1; /* Default location */ |
@@ -753,7 +753,7 @@ static ext3_fsblk_t get_sb_block(void **data) | |||
753 | } | 753 | } |
754 | 754 | ||
755 | static int parse_options (char *options, struct super_block *sb, | 755 | static int parse_options (char *options, struct super_block *sb, |
756 | unsigned long *inum, unsigned long *journal_devnum, | 756 | unsigned int *inum, unsigned long *journal_devnum, |
757 | ext3_fsblk_t *n_blocks_count, int is_remount) | 757 | ext3_fsblk_t *n_blocks_count, int is_remount) |
758 | { | 758 | { |
759 | struct ext3_sb_info *sbi = EXT3_SB(sb); | 759 | struct ext3_sb_info *sbi = EXT3_SB(sb); |
@@ -1174,7 +1174,8 @@ static int ext3_setup_super(struct super_block *sb, struct ext3_super_block *es, | |||
1174 | static int ext3_check_descriptors (struct super_block * sb) | 1174 | static int ext3_check_descriptors (struct super_block * sb) |
1175 | { | 1175 | { |
1176 | struct ext3_sb_info *sbi = EXT3_SB(sb); | 1176 | struct ext3_sb_info *sbi = EXT3_SB(sb); |
1177 | ext3_fsblk_t block = le32_to_cpu(sbi->s_es->s_first_data_block); | 1177 | ext3_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block); |
1178 | ext3_fsblk_t last_block; | ||
1178 | struct ext3_group_desc * gdp = NULL; | 1179 | struct ext3_group_desc * gdp = NULL; |
1179 | int desc_block = 0; | 1180 | int desc_block = 0; |
1180 | int i; | 1181 | int i; |
@@ -1183,12 +1184,17 @@ static int ext3_check_descriptors (struct super_block * sb) | |||
1183 | 1184 | ||
1184 | for (i = 0; i < sbi->s_groups_count; i++) | 1185 | for (i = 0; i < sbi->s_groups_count; i++) |
1185 | { | 1186 | { |
1187 | if (i == sbi->s_groups_count - 1) | ||
1188 | last_block = le32_to_cpu(sbi->s_es->s_blocks_count) - 1; | ||
1189 | else | ||
1190 | last_block = first_block + | ||
1191 | (EXT3_BLOCKS_PER_GROUP(sb) - 1); | ||
1192 | |||
1186 | if ((i % EXT3_DESC_PER_BLOCK(sb)) == 0) | 1193 | if ((i % EXT3_DESC_PER_BLOCK(sb)) == 0) |
1187 | gdp = (struct ext3_group_desc *) | 1194 | gdp = (struct ext3_group_desc *) |
1188 | sbi->s_group_desc[desc_block++]->b_data; | 1195 | sbi->s_group_desc[desc_block++]->b_data; |
1189 | if (le32_to_cpu(gdp->bg_block_bitmap) < block || | 1196 | if (le32_to_cpu(gdp->bg_block_bitmap) < first_block || |
1190 | le32_to_cpu(gdp->bg_block_bitmap) >= | 1197 | le32_to_cpu(gdp->bg_block_bitmap) > last_block) |
1191 | block + EXT3_BLOCKS_PER_GROUP(sb)) | ||
1192 | { | 1198 | { |
1193 | ext3_error (sb, "ext3_check_descriptors", | 1199 | ext3_error (sb, "ext3_check_descriptors", |
1194 | "Block bitmap for group %d" | 1200 | "Block bitmap for group %d" |
@@ -1197,9 +1203,8 @@ static int ext3_check_descriptors (struct super_block * sb) | |||
1197 | le32_to_cpu(gdp->bg_block_bitmap)); | 1203 | le32_to_cpu(gdp->bg_block_bitmap)); |
1198 | return 0; | 1204 | return 0; |
1199 | } | 1205 | } |
1200 | if (le32_to_cpu(gdp->bg_inode_bitmap) < block || | 1206 | if (le32_to_cpu(gdp->bg_inode_bitmap) < first_block || |
1201 | le32_to_cpu(gdp->bg_inode_bitmap) >= | 1207 | le32_to_cpu(gdp->bg_inode_bitmap) > last_block) |
1202 | block + EXT3_BLOCKS_PER_GROUP(sb)) | ||
1203 | { | 1208 | { |
1204 | ext3_error (sb, "ext3_check_descriptors", | 1209 | ext3_error (sb, "ext3_check_descriptors", |
1205 | "Inode bitmap for group %d" | 1210 | "Inode bitmap for group %d" |
@@ -1208,9 +1213,9 @@ static int ext3_check_descriptors (struct super_block * sb) | |||
1208 | le32_to_cpu(gdp->bg_inode_bitmap)); | 1213 | le32_to_cpu(gdp->bg_inode_bitmap)); |
1209 | return 0; | 1214 | return 0; |
1210 | } | 1215 | } |
1211 | if (le32_to_cpu(gdp->bg_inode_table) < block || | 1216 | if (le32_to_cpu(gdp->bg_inode_table) < first_block || |
1212 | le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group >= | 1217 | le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group > |
1213 | block + EXT3_BLOCKS_PER_GROUP(sb)) | 1218 | last_block) |
1214 | { | 1219 | { |
1215 | ext3_error (sb, "ext3_check_descriptors", | 1220 | ext3_error (sb, "ext3_check_descriptors", |
1216 | "Inode table for group %d" | 1221 | "Inode table for group %d" |
@@ -1219,7 +1224,7 @@ static int ext3_check_descriptors (struct super_block * sb) | |||
1219 | le32_to_cpu(gdp->bg_inode_table)); | 1224 | le32_to_cpu(gdp->bg_inode_table)); |
1220 | return 0; | 1225 | return 0; |
1221 | } | 1226 | } |
1222 | block += EXT3_BLOCKS_PER_GROUP(sb); | 1227 | first_block += EXT3_BLOCKS_PER_GROUP(sb); |
1223 | gdp++; | 1228 | gdp++; |
1224 | } | 1229 | } |
1225 | 1230 | ||
@@ -1301,17 +1306,17 @@ static void ext3_orphan_cleanup (struct super_block * sb, | |||
1301 | DQUOT_INIT(inode); | 1306 | DQUOT_INIT(inode); |
1302 | if (inode->i_nlink) { | 1307 | if (inode->i_nlink) { |
1303 | printk(KERN_DEBUG | 1308 | printk(KERN_DEBUG |
1304 | "%s: truncating inode %ld to %Ld bytes\n", | 1309 | "%s: truncating inode %lu to %Ld bytes\n", |
1305 | __FUNCTION__, inode->i_ino, inode->i_size); | 1310 | __FUNCTION__, inode->i_ino, inode->i_size); |
1306 | jbd_debug(2, "truncating inode %ld to %Ld bytes\n", | 1311 | jbd_debug(2, "truncating inode %lu to %Ld bytes\n", |
1307 | inode->i_ino, inode->i_size); | 1312 | inode->i_ino, inode->i_size); |
1308 | ext3_truncate(inode); | 1313 | ext3_truncate(inode); |
1309 | nr_truncates++; | 1314 | nr_truncates++; |
1310 | } else { | 1315 | } else { |
1311 | printk(KERN_DEBUG | 1316 | printk(KERN_DEBUG |
1312 | "%s: deleting unreferenced inode %ld\n", | 1317 | "%s: deleting unreferenced inode %lu\n", |
1313 | __FUNCTION__, inode->i_ino); | 1318 | __FUNCTION__, inode->i_ino); |
1314 | jbd_debug(2, "deleting unreferenced inode %ld\n", | 1319 | jbd_debug(2, "deleting unreferenced inode %lu\n", |
1315 | inode->i_ino); | 1320 | inode->i_ino); |
1316 | nr_orphans++; | 1321 | nr_orphans++; |
1317 | } | 1322 | } |
@@ -1390,7 +1395,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1390 | ext3_fsblk_t sb_block = get_sb_block(&data); | 1395 | ext3_fsblk_t sb_block = get_sb_block(&data); |
1391 | ext3_fsblk_t logic_sb_block; | 1396 | ext3_fsblk_t logic_sb_block; |
1392 | unsigned long offset = 0; | 1397 | unsigned long offset = 0; |
1393 | unsigned long journal_inum = 0; | 1398 | unsigned int journal_inum = 0; |
1394 | unsigned long journal_devnum = 0; | 1399 | unsigned long journal_devnum = 0; |
1395 | unsigned long def_mount_opts; | 1400 | unsigned long def_mount_opts; |
1396 | struct inode *root; | 1401 | struct inode *root; |
@@ -1401,11 +1406,10 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1401 | int needs_recovery; | 1406 | int needs_recovery; |
1402 | __le32 features; | 1407 | __le32 features; |
1403 | 1408 | ||
1404 | sbi = kmalloc(sizeof(*sbi), GFP_KERNEL); | 1409 | sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); |
1405 | if (!sbi) | 1410 | if (!sbi) |
1406 | return -ENOMEM; | 1411 | return -ENOMEM; |
1407 | sb->s_fs_info = sbi; | 1412 | sb->s_fs_info = sbi; |
1408 | memset(sbi, 0, sizeof(*sbi)); | ||
1409 | sbi->s_mount_opt = 0; | 1413 | sbi->s_mount_opt = 0; |
1410 | sbi->s_resuid = EXT3_DEF_RESUID; | 1414 | sbi->s_resuid = EXT3_DEF_RESUID; |
1411 | sbi->s_resgid = EXT3_DEF_RESGID; | 1415 | sbi->s_resgid = EXT3_DEF_RESGID; |
@@ -1483,7 +1487,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1483 | (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) || | 1487 | (EXT3_HAS_COMPAT_FEATURE(sb, ~0U) || |
1484 | EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) || | 1488 | EXT3_HAS_RO_COMPAT_FEATURE(sb, ~0U) || |
1485 | EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U))) | 1489 | EXT3_HAS_INCOMPAT_FEATURE(sb, ~0U))) |
1486 | printk(KERN_WARNING | 1490 | printk(KERN_WARNING |
1487 | "EXT3-fs warning: feature flags set on rev 0 fs, " | 1491 | "EXT3-fs warning: feature flags set on rev 0 fs, " |
1488 | "running e2fsck is recommended\n"); | 1492 | "running e2fsck is recommended\n"); |
1489 | /* | 1493 | /* |
@@ -1509,7 +1513,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1509 | 1513 | ||
1510 | if (blocksize < EXT3_MIN_BLOCK_SIZE || | 1514 | if (blocksize < EXT3_MIN_BLOCK_SIZE || |
1511 | blocksize > EXT3_MAX_BLOCK_SIZE) { | 1515 | blocksize > EXT3_MAX_BLOCK_SIZE) { |
1512 | printk(KERN_ERR | 1516 | printk(KERN_ERR |
1513 | "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n", | 1517 | "EXT3-fs: Unsupported filesystem blocksize %d on %s.\n", |
1514 | blocksize, sb->s_id); | 1518 | blocksize, sb->s_id); |
1515 | goto failed_mount; | 1519 | goto failed_mount; |
@@ -1533,14 +1537,14 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1533 | offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize; | 1537 | offset = (sb_block * EXT3_MIN_BLOCK_SIZE) % blocksize; |
1534 | bh = sb_bread(sb, logic_sb_block); | 1538 | bh = sb_bread(sb, logic_sb_block); |
1535 | if (!bh) { | 1539 | if (!bh) { |
1536 | printk(KERN_ERR | 1540 | printk(KERN_ERR |
1537 | "EXT3-fs: Can't read superblock on 2nd try.\n"); | 1541 | "EXT3-fs: Can't read superblock on 2nd try.\n"); |
1538 | goto failed_mount; | 1542 | goto failed_mount; |
1539 | } | 1543 | } |
1540 | es = (struct ext3_super_block *)(((char *)bh->b_data) + offset); | 1544 | es = (struct ext3_super_block *)(((char *)bh->b_data) + offset); |
1541 | sbi->s_es = es; | 1545 | sbi->s_es = es; |
1542 | if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) { | 1546 | if (es->s_magic != cpu_to_le16(EXT3_SUPER_MAGIC)) { |
1543 | printk (KERN_ERR | 1547 | printk (KERN_ERR |
1544 | "EXT3-fs: Magic mismatch, very weird !\n"); | 1548 | "EXT3-fs: Magic mismatch, very weird !\n"); |
1545 | goto failed_mount; | 1549 | goto failed_mount; |
1546 | } | 1550 | } |
@@ -1622,10 +1626,9 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1622 | 1626 | ||
1623 | if (EXT3_BLOCKS_PER_GROUP(sb) == 0) | 1627 | if (EXT3_BLOCKS_PER_GROUP(sb) == 0) |
1624 | goto cantfind_ext3; | 1628 | goto cantfind_ext3; |
1625 | sbi->s_groups_count = (le32_to_cpu(es->s_blocks_count) - | 1629 | sbi->s_groups_count = ((le32_to_cpu(es->s_blocks_count) - |
1626 | le32_to_cpu(es->s_first_data_block) + | 1630 | le32_to_cpu(es->s_first_data_block) - 1) |
1627 | EXT3_BLOCKS_PER_GROUP(sb) - 1) / | 1631 | / EXT3_BLOCKS_PER_GROUP(sb)) + 1; |
1628 | EXT3_BLOCKS_PER_GROUP(sb); | ||
1629 | db_count = (sbi->s_groups_count + EXT3_DESC_PER_BLOCK(sb) - 1) / | 1632 | db_count = (sbi->s_groups_count + EXT3_DESC_PER_BLOCK(sb) - 1) / |
1630 | EXT3_DESC_PER_BLOCK(sb); | 1633 | EXT3_DESC_PER_BLOCK(sb); |
1631 | sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *), | 1634 | sbi->s_group_desc = kmalloc(db_count * sizeof (struct buffer_head *), |
@@ -1820,7 +1823,7 @@ out_fail: | |||
1820 | /* | 1823 | /* |
1821 | * Setup any per-fs journal parameters now. We'll do this both on | 1824 | * Setup any per-fs journal parameters now. We'll do this both on |
1822 | * initial mount, once the journal has been initialised but before we've | 1825 | * initial mount, once the journal has been initialised but before we've |
1823 | * done any recovery; and again on any subsequent remount. | 1826 | * done any recovery; and again on any subsequent remount. |
1824 | */ | 1827 | */ |
1825 | static void ext3_init_journal_params(struct super_block *sb, journal_t *journal) | 1828 | static void ext3_init_journal_params(struct super_block *sb, journal_t *journal) |
1826 | { | 1829 | { |
@@ -1840,7 +1843,8 @@ static void ext3_init_journal_params(struct super_block *sb, journal_t *journal) | |||
1840 | spin_unlock(&journal->j_state_lock); | 1843 | spin_unlock(&journal->j_state_lock); |
1841 | } | 1844 | } |
1842 | 1845 | ||
1843 | static journal_t *ext3_get_journal(struct super_block *sb, int journal_inum) | 1846 | static journal_t *ext3_get_journal(struct super_block *sb, |
1847 | unsigned int journal_inum) | ||
1844 | { | 1848 | { |
1845 | struct inode *journal_inode; | 1849 | struct inode *journal_inode; |
1846 | journal_t *journal; | 1850 | journal_t *journal; |
@@ -1975,7 +1979,7 @@ static int ext3_load_journal(struct super_block *sb, | |||
1975 | unsigned long journal_devnum) | 1979 | unsigned long journal_devnum) |
1976 | { | 1980 | { |
1977 | journal_t *journal; | 1981 | journal_t *journal; |
1978 | int journal_inum = le32_to_cpu(es->s_journal_inum); | 1982 | unsigned int journal_inum = le32_to_cpu(es->s_journal_inum); |
1979 | dev_t journal_dev; | 1983 | dev_t journal_dev; |
1980 | int err = 0; | 1984 | int err = 0; |
1981 | int really_read_only; | 1985 | int really_read_only; |
@@ -2061,7 +2065,7 @@ static int ext3_load_journal(struct super_block *sb, | |||
2061 | 2065 | ||
2062 | static int ext3_create_journal(struct super_block * sb, | 2066 | static int ext3_create_journal(struct super_block * sb, |
2063 | struct ext3_super_block * es, | 2067 | struct ext3_super_block * es, |
2064 | int journal_inum) | 2068 | unsigned int journal_inum) |
2065 | { | 2069 | { |
2066 | journal_t *journal; | 2070 | journal_t *journal; |
2067 | 2071 | ||
@@ -2074,7 +2078,7 @@ static int ext3_create_journal(struct super_block * sb, | |||
2074 | if (!(journal = ext3_get_journal(sb, journal_inum))) | 2078 | if (!(journal = ext3_get_journal(sb, journal_inum))) |
2075 | return -EINVAL; | 2079 | return -EINVAL; |
2076 | 2080 | ||
2077 | printk(KERN_INFO "EXT3-fs: creating new journal on inode %d\n", | 2081 | printk(KERN_INFO "EXT3-fs: creating new journal on inode %u\n", |
2078 | journal_inum); | 2082 | journal_inum); |
2079 | 2083 | ||
2080 | if (journal_create(journal)) { | 2084 | if (journal_create(journal)) { |
@@ -2342,10 +2346,8 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data) | |||
2342 | */ | 2346 | */ |
2343 | ext3_clear_journal_err(sb, es); | 2347 | ext3_clear_journal_err(sb, es); |
2344 | sbi->s_mount_state = le16_to_cpu(es->s_state); | 2348 | sbi->s_mount_state = le16_to_cpu(es->s_state); |
2345 | if ((ret = ext3_group_extend(sb, es, n_blocks_count))) { | 2349 | if ((err = ext3_group_extend(sb, es, n_blocks_count))) |
2346 | err = ret; | ||
2347 | goto restore_opts; | 2350 | goto restore_opts; |
2348 | } | ||
2349 | if (!ext3_setup_super (sb, es, 0)) | 2351 | if (!ext3_setup_super (sb, es, 0)) |
2350 | sb->s_flags &= ~MS_RDONLY; | 2352 | sb->s_flags &= ~MS_RDONLY; |
2351 | } | 2353 | } |
@@ -2734,7 +2736,7 @@ static int __init init_ext3_fs(void) | |||
2734 | out: | 2736 | out: |
2735 | destroy_inodecache(); | 2737 | destroy_inodecache(); |
2736 | out1: | 2738 | out1: |
2737 | exit_ext3_xattr(); | 2739 | exit_ext3_xattr(); |
2738 | return err; | 2740 | return err; |
2739 | } | 2741 | } |
2740 | 2742 | ||