Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
[pandora-kernel.git] / fs / ext4 / resize.c
index c60bfed..1e95780 100644 (file)
@@ -27,7 +27,7 @@ static int verify_group_input(struct super_block *sb,
 {
        struct ext4_sb_info *sbi = EXT4_SB(sb);
        struct ext4_super_block *es = sbi->s_es;
-       ext4_fsblk_t start = le32_to_cpu(es->s_blocks_count);
+       ext4_fsblk_t start = ext4_blocks_count(es);
        ext4_fsblk_t end = start + input->blocks_count;
        unsigned group = input->group;
        ext4_fsblk_t itend = input->inode_table + sbi->s_itb_per_group;
@@ -64,48 +64,48 @@ static int verify_group_input(struct super_block *sb,
                             input->blocks_count);
        else if (!(bh = sb_bread(sb, end - 1)))
                ext4_warning(sb, __FUNCTION__,
-                            "Cannot read last block ("E3FSBLK")",
+                            "Cannot read last block (%llu)",
                             end - 1);
        else if (outside(input->block_bitmap, start, end))
                ext4_warning(sb, __FUNCTION__,
-                            "Block bitmap not in group (block %u)",
+                            "Block bitmap not in group (block %llu)",
                             input->block_bitmap);
        else if (outside(input->inode_bitmap, start, end))
                ext4_warning(sb, __FUNCTION__,
-                            "Inode bitmap not in group (block %u)",
+                            "Inode bitmap not in group (block %llu)",
                             input->inode_bitmap);
        else if (outside(input->inode_table, start, end) ||
                 outside(itend - 1, start, end))
                ext4_warning(sb, __FUNCTION__,
-                            "Inode table not in group (blocks %u-"E3FSBLK")",
+                            "Inode table not in group (blocks %llu-%llu)",
                             input->inode_table, itend - 1);
        else if (input->inode_bitmap == input->block_bitmap)
                ext4_warning(sb, __FUNCTION__,
-                            "Block bitmap same as inode bitmap (%u)",
+                            "Block bitmap same as inode bitmap (%llu)",
                             input->block_bitmap);
        else if (inside(input->block_bitmap, input->inode_table, itend))
                ext4_warning(sb, __FUNCTION__,
-                            "Block bitmap (%u) in inode table (%u-"E3FSBLK")",
+                            "Block bitmap (%llu) in inode table (%llu-%llu)",
                             input->block_bitmap, input->inode_table, itend-1);
        else if (inside(input->inode_bitmap, input->inode_table, itend))
                ext4_warning(sb, __FUNCTION__,
-                            "Inode bitmap (%u) in inode table (%u-"E3FSBLK")",
+                            "Inode bitmap (%llu) in inode table (%llu-%llu)",
                             input->inode_bitmap, input->inode_table, itend-1);
        else if (inside(input->block_bitmap, start, metaend))
                ext4_warning(sb, __FUNCTION__,
-                            "Block bitmap (%u) in GDT table"
-                            " ("E3FSBLK"-"E3FSBLK")",
+                            "Block bitmap (%llu) in GDT table"
+                            " (%llu-%llu)",
                             input->block_bitmap, start, metaend - 1);
        else if (inside(input->inode_bitmap, start, metaend))
                ext4_warning(sb, __FUNCTION__,
-                            "Inode bitmap (%u) in GDT table"
-                            " ("E3FSBLK"-"E3FSBLK")",
+                            "Inode bitmap (%llu) in GDT table"
+                            " (%llu-%llu)",
                             input->inode_bitmap, start, metaend - 1);
        else if (inside(input->inode_table, start, metaend) ||
                 inside(itend - 1, start, metaend))
                ext4_warning(sb, __FUNCTION__,
-                            "Inode table (%u-"E3FSBLK") overlaps"
-                            "GDT table ("E3FSBLK"-"E3FSBLK")",
+                            "Inode table (%llu-%llu) overlaps"
+                            "GDT table (%llu-%llu)",
                             input->inode_table, itend - 1, start, metaend - 1);
        else
                err = 0;
@@ -286,6 +286,7 @@ exit_journal:
        return err;
 }
 
+
 /*
  * Iterate through the groups which hold BACKUP superblock/GDT copies in an
  * ext4 filesystem.  The counters should be initialized to 1, 5, and 7 before
@@ -340,12 +341,15 @@ static int verify_reserved_gdb(struct super_block *sb,
        int gdbackups = 0;
 
        while ((grp = ext4_list_backups(sb, &three, &five, &seven)) < end) {
-               if (le32_to_cpu(*p++) != grp * EXT4_BLOCKS_PER_GROUP(sb) + blk){
+               if (le32_to_cpu(*p++) !=
+                   grp * EXT4_BLOCKS_PER_GROUP(sb) + blk){
                        ext4_warning(sb, __FUNCTION__,
-                                    "reserved GDT "E3FSBLK
-                                    " missing grp %d ("E3FSBLK")",
+                                    "reserved GDT %llu"
+                                    " missing grp %d (%llu)",
                                     blk, grp,
-                                    grp * EXT4_BLOCKS_PER_GROUP(sb) + blk);
+                                    grp *
+                                    (ext4_fsblk_t)EXT4_BLOCKS_PER_GROUP(sb) +
+                                    blk);
                        return -EINVAL;
                }
                if (++gdbackups > EXT4_ADDR_PER_BLOCK(sb))
@@ -420,7 +424,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
        data = (__le32 *)dind->b_data;
        if (le32_to_cpu(data[gdb_num % EXT4_ADDR_PER_BLOCK(sb)]) != gdblock) {
                ext4_warning(sb, __FUNCTION__,
-                            "new group %u GDT block "E3FSBLK" not reserved",
+                            "new group %u GDT block %llu not reserved",
                             input->group, gdblock);
                err = -EINVAL;
                goto exit_dind;
@@ -543,7 +547,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode,
        for (res = 0; res < reserved_gdb; res++, blk++) {
                if (le32_to_cpu(*data) != blk) {
                        ext4_warning(sb, __FUNCTION__,
-                                    "reserved block "E3FSBLK
+                                    "reserved block %llu"
                                     " not at offset %ld",
                                     blk,
                                     (long)(data - (__le32 *)dind->b_data));
@@ -731,8 +735,8 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
                return -EPERM;
        }
 
-       if (le32_to_cpu(es->s_blocks_count) + input->blocks_count <
-           le32_to_cpu(es->s_blocks_count)) {
+       if (ext4_blocks_count(es) + input->blocks_count <
+           ext4_blocks_count(es)) {
                ext4_warning(sb, __FUNCTION__, "blocks_count overflow\n");
                return -EINVAL;
        }
@@ -830,9 +834,9 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
        /* Update group descriptor block for new group */
        gdp = (struct ext4_group_desc *)primary->b_data + gdb_off;
 
-       gdp->bg_block_bitmap = cpu_to_le32(input->block_bitmap);
-       gdp->bg_inode_bitmap = cpu_to_le32(input->inode_bitmap);
-       gdp->bg_inode_table = cpu_to_le32(input->inode_table);
+       ext4_block_bitmap_set(sb, gdp, input->block_bitmap); /* LV FIXME */
+       ext4_inode_bitmap_set(sb, gdp, input->inode_bitmap); /* LV FIXME */
+       ext4_inode_table_set(sb, gdp, input->inode_table); /* LV FIXME */
        gdp->bg_free_blocks_count = cpu_to_le16(input->free_blocks_count);
        gdp->bg_free_inodes_count = cpu_to_le16(EXT4_INODES_PER_GROUP(sb));
 
@@ -846,7 +850,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
         * blocks/inodes before the group is live won't actually let us
         * allocate the new space yet.
         */
-       es->s_blocks_count = cpu_to_le32(le32_to_cpu(es->s_blocks_count) +
+       ext4_blocks_count_set(es, ext4_blocks_count(es) +
                input->blocks_count);
        es->s_inodes_count = cpu_to_le32(le32_to_cpu(es->s_inodes_count) +
                EXT4_INODES_PER_GROUP(sb));
@@ -882,7 +886,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
 
        /* Update the reserved block counts only once the new group is
         * active. */
-       es->s_r_blocks_count = cpu_to_le32(le32_to_cpu(es->s_r_blocks_count) +
+       ext4_r_blocks_count_set(es, ext4_r_blocks_count(es) +
                input->reserved_blocks);
 
        /* Update the free space counts */
@@ -933,11 +937,11 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
        /* We don't need to worry about locking wrt other resizers just
         * yet: we're going to revalidate es->s_blocks_count after
         * taking lock_super() below. */
-       o_blocks_count = le32_to_cpu(es->s_blocks_count);
+       o_blocks_count = ext4_blocks_count(es);
        o_groups_count = EXT4_SB(sb)->s_groups_count;
 
        if (test_opt(sb, DEBUG))
-               printk(KERN_DEBUG "EXT4-fs: extending last group from "E3FSBLK" uto "E3FSBLK" blocks\n",
+               printk(KERN_DEBUG "EXT4-fs: extending last group from %llu uto %llu blocks\n",
                       o_blocks_count, n_blocks_count);
 
        if (n_blocks_count == 0 || n_blocks_count == o_blocks_count)
@@ -945,7 +949,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
 
        if (n_blocks_count > (sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
                printk(KERN_ERR "EXT4-fs: filesystem on %s:"
-                       " too large to resize to "E3FSBLK" blocks safely\n",
+                       " too large to resize to %llu blocks safely\n",
                        sb->s_id, n_blocks_count);
                if (sizeof(sector_t) < 8)
                        ext4_warning(sb, __FUNCTION__,
@@ -980,7 +984,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
 
        if (o_blocks_count + add < n_blocks_count)
                ext4_warning(sb, __FUNCTION__,
-                            "will only finish group ("E3FSBLK
+                            "will only finish group (%llu"
                             " blocks, %u new)",
                             o_blocks_count + add, add);
 
@@ -1004,7 +1008,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
        }
 
        lock_super(sb);
-       if (o_blocks_count != le32_to_cpu(es->s_blocks_count)) {
+       if (o_blocks_count != ext4_blocks_count(es)) {
                ext4_warning(sb, __FUNCTION__,
                             "multiple resizers run on filesystem!");
                unlock_super(sb);
@@ -1020,20 +1024,20 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
                ext4_journal_stop(handle);
                goto exit_put;
        }
-       es->s_blocks_count = cpu_to_le32(o_blocks_count + add);
+       ext4_blocks_count_set(es, o_blocks_count + add);
        ext4_journal_dirty_metadata(handle, EXT4_SB(sb)->s_sbh);
        sb->s_dirt = 1;
        unlock_super(sb);
-       ext4_debug("freeing blocks %lu through "E3FSBLK"\n", o_blocks_count,
+       ext4_debug("freeing blocks %lu through %llu\n", o_blocks_count,
                   o_blocks_count + add);
        ext4_free_blocks_sb(handle, sb, o_blocks_count, add, &freed_blocks);
-       ext4_debug("freed blocks "E3FSBLK" through "E3FSBLK"\n", o_blocks_count,
+       ext4_debug("freed blocks %llu through %llu\n", o_blocks_count,
                   o_blocks_count + add);
        if ((err = ext4_journal_stop(handle)))
                goto exit_put;
        if (test_opt(sb, DEBUG))
-               printk(KERN_DEBUG "EXT4-fs: extended group to %u blocks\n",
-                      le32_to_cpu(es->s_blocks_count));
+               printk(KERN_DEBUG "EXT4-fs: extended group to %llu blocks\n",
+                      ext4_blocks_count(es));
        update_backups(sb, EXT4_SB(sb)->s_sbh->b_blocknr, (char *)es,
                       sizeof(struct ext4_super_block));
 exit_put: