* [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs)
@ 2006-03-15 12:39 Takashi Sato
2006-03-17 21:19 ` [Ext2-devel] " Badari Pulavarty
2006-03-19 2:44 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) Theodore Ts'o
0 siblings, 2 replies; 10+ messages in thread
From: Takashi Sato @ 2006-03-15 12:39 UTC (permalink / raw)
To: ext2-devel, linux-kernel
This makes it possible to make ext2/3 with 4G-1(2^32-1) blocks by mke2fs
in e2fsprogs-1.38.
Signed-off-by: Takashi Sato sho@tnes.nec.co.jp
---
diff -uprN e2fsprogs-1.38.org/debugfs/debugfs.c e2fsprogs-1.38-4g/debugfs/debugfs.c
--- e2fsprogs-1.38.org/debugfs/debugfs.c 2005-05-06 22:04:36.000000000 +0900
+++ e2fsprogs-1.38-4g/debugfs/debugfs.c 2006-02-25 19:42:22.000000000 +0900
@@ -301,9 +301,9 @@ void do_show_super_stats(int argc, char
gdp = ¤t_fs->group_desc[0];
for (i = 0; i < current_fs->group_desc_count; i++, gdp++)
- fprintf(out, " Group %2d: block bitmap at %d, "
- "inode bitmap at %d, "
- "inode table at %d\n"
+ fprintf(out, " Group %2d: block bitmap at %u, "
+ "inode bitmap at %u, "
+ "inode table at %u\n"
" %d free %s, "
"%d free %s, "
"%d used %s\n",
@@ -351,9 +351,9 @@ static void finish_range(struct list_blo
else
fprintf(lb->f, ", ");
if (lb->first_block == lb->last_block)
- fprintf(lb->f, "(%lld):%d", lb->first_bcnt, lb->first_block);
+ fprintf(lb->f, "(%lld):%u", lb->first_bcnt, lb->first_block);
else
- fprintf(lb->f, "(%lld-%lld):%d-%d", lb->first_bcnt,
+ fprintf(lb->f, "(%lld-%lld):%u-%u", lb->first_bcnt,
lb->last_bcnt, lb->first_block, lb->last_block);
lb->first_block = 0;
}
@@ -395,11 +395,11 @@ static int list_blocks_proc(ext2_filsys
else
fprintf(lb->f, ", ");
if (blockcnt == -1)
- fprintf(lb->f, "(IND):%d", *blocknr);
+ fprintf(lb->f, "(IND):%u", *blocknr);
else if (blockcnt == -2)
- fprintf(lb->f, "(DIND):%d", *blocknr);
+ fprintf(lb->f, "(DIND):%u", *blocknr);
else if (blockcnt == -3)
- fprintf(lb->f, "(TIND):%d", *blocknr);
+ fprintf(lb->f, "(TIND):%u", *blocknr);
return 0;
}
@@ -431,7 +431,7 @@ void internal_dump_inode_extra(FILE *out
int storage_size;
int i;
- fprintf(out, "Size of extra inode fields: %d\n", inode->i_extra_isize);
+ fprintf(out, "Size of extra inode fields: %u\n", inode->i_extra_isize);
if (inode->i_extra_isize > EXT2_INODE_SIZE(current_fs->super) -
EXT2_GOOD_OLD_INODE_SIZE) {
fprintf(stderr, "invalid inode->i_extra_isize (%u)\n",
@@ -462,7 +462,7 @@ void internal_dump_inode_extra(FILE *out
fprintf(out, " = \"");
dump_xattr_string(out, start + entry->e_value_offs,
entry->e_value_size);
- fprintf(out, "\" (%d)\n", entry->e_value_size);
+ fprintf(out, "\" (%u)\n", entry->e_value_size);
entry = next;
}
}
@@ -525,7 +525,7 @@ void internal_dump_inode(FILE *out, cons
fprintf(out, "%sFile ACL: %d Directory ACL: %d\n",
prefix,
inode->i_file_acl, LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0);
- fprintf(out, "%sLinks: %d Blockcount: %d\n",
+ fprintf(out, "%sLinks: %d Blockcount: %u\n",
prefix, inode->i_links_count, inode->i_blocks);
switch (os) {
case EXT2_OS_LINUX:
@@ -704,7 +704,7 @@ void do_freeb(int argc, char *argv[])
return;
while (count-- > 0) {
if (!ext2fs_test_block_bitmap(current_fs->block_map,block))
- com_err(argv[0], 0, "Warning: block %d already clear",
+ com_err(argv[0], 0, "Warning: block %u already clear",
block);
ext2fs_unmark_block_bitmap(current_fs->block_map,block);
block++;
@@ -723,7 +723,7 @@ void do_setb(int argc, char *argv[])
return;
while (count-- > 0) {
if (ext2fs_test_block_bitmap(current_fs->block_map,block))
- com_err(argv[0], 0, "Warning: block %d already set",
+ com_err(argv[0], 0, "Warning: block %u already set",
block);
ext2fs_mark_block_bitmap(current_fs->block_map,block);
block++;
@@ -740,9 +740,9 @@ void do_testb(int argc, char *argv[])
return;
while (count-- > 0) {
if (ext2fs_test_block_bitmap(current_fs->block_map,block))
- printf("Block %d marked in use\n", block);
+ printf("Block %u marked in use\n", block);
else
- printf("Block %d not in use\n", block);
+ printf("Block %u not in use\n", block);
block++;
}
}
@@ -822,6 +822,7 @@ void do_modify_inode(int argc, char *arg
const char *hex_format = "0x%x";
const char *octal_format = "0%o";
const char *decimal_format = "%d";
+ const char *unsignedlong_format = "%lu";
if (common_inode_args_process(argc, argv, &inode_num, CHECK_FS_RW))
return;
@@ -834,13 +835,13 @@ void do_modify_inode(int argc, char *arg
modify_u16(argv[0], "Mode", octal_format, &inode.i_mode);
modify_u16(argv[0], "User ID", decimal_format, &inode.i_uid);
modify_u16(argv[0], "Group ID", decimal_format, &inode.i_gid);
- modify_u32(argv[0], "Size", decimal_format, &inode.i_size);
+ modify_u32(argv[0], "Size", unsignedlong_format, &inode.i_size);
modify_u32(argv[0], "Creation time", decimal_format, &inode.i_ctime);
modify_u32(argv[0], "Modification time", decimal_format, &inode.i_mtime);
modify_u32(argv[0], "Access time", decimal_format, &inode.i_atime);
modify_u32(argv[0], "Deletion time", decimal_format, &inode.i_dtime);
modify_u16(argv[0], "Link count", decimal_format, &inode.i_links_count);
- modify_u32(argv[0], "Block count", decimal_format, &inode.i_blocks);
+ modify_u32(argv[0], "Block count", unsignedlong_format, &inode.i_blocks);
modify_u32(argv[0], "File flags", hex_format, &inode.i_flags);
modify_u32(argv[0], "Generation", hex_format, &inode.i_generation);
#if 0
@@ -1151,7 +1152,7 @@ void do_find_free_block(int argc, char *
com_err("ext2fs_new_block", retval, "");
return;
} else
- printf("%d ", free_blk);
+ printf("%u ", free_blk);
}
printf("\n");
}
@@ -1660,10 +1661,10 @@ void do_bmap(int argc, char *argv[])
errcode = ext2fs_bmap(current_fs, ino, 0, 0, 0, blk, &pblk);
if (errcode) {
com_err("argv[0]", errcode,
- "while mapping logical block %d\n", blk);
+ "while mapping logical block %u\n", blk);
return;
}
- printf("%d\n", pblk);
+ printf("%u\n", pblk);
}
void do_imap(int argc, char *argv[])
diff -uprN e2fsprogs-1.38.org/debugfs/htree.c e2fsprogs-1.38-4g/debugfs/htree.c
--- e2fsprogs-1.38.org/debugfs/htree.c 2003-12-08 02:11:38.000000000 +0900
+++ e2fsprogs-1.38-4g/debugfs/htree.c 2006-02-25 19:41:29.000000000 +0900
@@ -43,14 +43,14 @@ static void htree_dump_leaf_node(ext2_fi
errcode = ext2fs_bmap(fs, ino, inode, buf, 0, blk, &pblk);
if (errcode) {
com_err("htree_dump_leaf_node", errcode,
- "while mapping logical block %d\n", blk);
+ "while mapping logical block %u\n", blk);
return;
}
errcode = ext2fs_read_dir_block2(current_fs, pblk, buf, 0);
if (errcode) {
com_err("htree_dump_leaf_node", errcode,
- "while reading block %d\n", blk);
+ "while reading block %u\n", blk);
return;
}
@@ -60,7 +60,7 @@ static void htree_dump_leaf_node(ext2_fi
(dirent->rec_len < 8) ||
((dirent->rec_len % 4) != 0) ||
(((dirent->name_len & 0xFF)+8) > dirent->rec_len)) {
- fprintf(pager, "Corrupted directory block (%d)!\n", blk);
+ fprintf(pager, "Corrupted directory block (%u)!\n", blk);
break;
}
thislen = ((dirent->name_len & 0xFF) < EXT2_NAME_LEN) ?
@@ -124,7 +124,7 @@ static void htree_dump_int_node(ext2_fil
for (i=0; i < limit.count; i++) {
e.hash = ext2fs_le32_to_cpu(ent[i].hash);
e.block = ext2fs_le32_to_cpu(ent[i].block);
- fprintf(pager, "Entry #%d: Hash 0x%08x, block %d\n", i,
+ fprintf(pager, "Entry #%d: Hash 0x%08x, block %u\n", i,
i ? e.hash : 0, e.block);
if (level)
htree_dump_int_block(fs, ino, inode, rootnode,
@@ -155,14 +155,14 @@ static void htree_dump_int_block(ext2_fi
errcode = ext2fs_bmap(fs, ino, inode, buf, 0, blk, &pblk);
if (errcode) {
com_err("htree_dump_int_block", errcode,
- "while mapping logical block %d\n", blk);
+ "while mapping logical block %u\n", blk);
return;
}
errcode = io_channel_read_blk(current_fs->io, pblk, 1, buf);
if (errcode) {
com_err("htree_dump_int_block", errcode,
- "while reading block %d\n", blk);
+ "while reading block %u\n", blk);
return;
}
@@ -241,7 +241,7 @@ void do_htree_dump(int argc, char *argv[
rootnode = (struct ext2_dx_root_info *) (buf + 24);
fprintf(pager, "Root node dump:\n");
- fprintf(pager, "\t Reserved zero: %d\n", rootnode->reserved_zero);
+ fprintf(pager, "\t Reserved zero: %u\n", rootnode->reserved_zero);
fprintf(pager, "\t Hash Version: %d\n", rootnode->hash_version);
fprintf(pager, "\t Info length: %d\n", rootnode->info_length);
fprintf(pager, "\t Indirect levels: %d\n", rootnode->indirect_levels);
@@ -372,9 +372,9 @@ static int search_dir_block(ext2_filsys
strncmp(p->search_name, dirent->name,
p->len) == 0) {
printf("Entry found at logical block %lld, "
- "phys %d, offset %d\n", blockcnt,
+ "phys %u, offset %u\n", blockcnt,
*blocknr, offset);
- printf("offset %d\n", offset);
+ printf("offset %u\n", offset);
return BLOCK_ABORT;
}
offset += dirent->rec_len;
diff -uprN e2fsprogs-1.38.org/debugfs/unused.c e2fsprogs-1.38-4g/debugfs/unused.c
--- e2fsprogs-1.38.org/debugfs/unused.c 2003-12-08 02:11:38.000000000 +0900
+++ e2fsprogs-1.38-4g/debugfs/unused.c 2006-02-25 19:41:29.000000000 +0900
@@ -45,7 +45,7 @@ void do_dump_unused(int argc EXT2FS_ATTR
break;
if (i >= current_fs->blocksize)
continue;
- printf("\nUnused block %ld contains non-zero data:\n\n",
+ printf("\nUnused block %lu contains non-zero data:\n\n",
blk);
for (i=0; i < current_fs->blocksize; i++)
fputc(buf[i], stdout);
diff -uprN e2fsprogs-1.38.org/e2fsck/emptydir.c e2fsprogs-1.38-4g/e2fsck/emptydir.c
--- e2fsprogs-1.38.org/e2fsck/emptydir.c 2003-12-08 02:11:38.000000000 +0900
+++ e2fsprogs-1.38-4g/e2fsck/emptydir.c 2006-02-25 19:41:29.000000000 +0900
@@ -94,7 +94,7 @@ void add_empty_dirblock(empty_dir_info e
if (db->ino == 11)
return; /* Inode number 11 is usually lost+found */
- printf(_("Empty directory block %d (#%d) in inode %d\n"),
+ printf(_("Empty directory block %u (#%d) in inode %d\n"),
db->blk, db->blockcnt, db->ino);
ext2fs_mark_block_bitmap(edi->empty_dir_blocks, db->blk);
diff -uprN e2fsprogs-1.38.org/e2fsck/message.c e2fsprogs-1.38-4g/e2fsck/message.c
--- e2fsprogs-1.38.org/e2fsck/message.c 2005-06-19 22:41:08.000000000 +0900
+++ e2fsprogs-1.38-4g/e2fsck/message.c 2006-02-25 19:41:29.000000000 +0900
@@ -418,7 +418,7 @@ static _INLINE_ void expand_percent_expr
print_pathname(fs, ctx->dir, ctx->ino);
break;
case 'S':
- printf("%d", get_backup_sb(NULL, fs, NULL, NULL));
+ printf("%u", get_backup_sb(NULL, fs, NULL, NULL));
break;
case 's':
printf("%s", ctx->str ? ctx->str : "NULL");
diff -uprN e2fsprogs-1.38.org/e2fsck/pass1b.c e2fsprogs-1.38-4g/e2fsck/pass1b.c
--- e2fsprogs-1.38.org/e2fsck/pass1b.c 2005-04-15 06:10:12.000000000 +0900
+++ e2fsprogs-1.38-4g/e2fsck/pass1b.c 2006-02-25 19:41:29.000000000 +0900
@@ -555,7 +555,7 @@ static int delete_file_block(ext2_filsys
decrement_badcount(ctx, *block_nr, p);
} else
com_err("delete_file_block", 0,
- _("internal error; can't find dup_blk for %d\n"),
+ _("internal error; can't find dup_blk for %u\n"),
*block_nr);
} else {
ext2fs_unmark_block_bitmap(ctx->block_found_map, *block_nr);
@@ -692,7 +692,7 @@ static int clone_file_block(ext2_filsys
return BLOCK_CHANGED;
} else
com_err("clone_file_block", 0,
- _("internal error; can't find dup_blk for %d\n"),
+ _("internal error; can't find dup_blk for %u\n"),
*block_nr);
}
return 0;
diff -uprN e2fsprogs-1.38.org/e2fsck/pass2.c e2fsprogs-1.38-4g/e2fsck/pass2.c
--- e2fsprogs-1.38.org/e2fsck/pass2.c 2005-04-15 03:06:09.000000000 +0900
+++ e2fsprogs-1.38-4g/e2fsck/pass2.c 2006-02-25 19:41:29.000000000 +0900
@@ -543,7 +543,7 @@ static void parse_int_node(ext2_filsys f
#ifdef DX_DEBUG
printf("Root node dump:\n");
- printf("\t Reserved zero: %d\n", root->reserved_zero);
+ printf("\t Reserved zero: %u\n", root->reserved_zero);
printf("\t Hash Version: %d\n", root->hash_version);
printf("\t Info length: %d\n", root->info_length);
printf("\t Indirect levels: %d\n", root->indirect_levels);
@@ -582,7 +582,7 @@ static void parse_int_node(ext2_filsys f
prev_hash = hash;
hash = i ? (ext2fs_le32_to_cpu(ent[i].hash) & ~1) : 0;
#ifdef DX_DEBUG
- printf("Entry #%d: Hash 0x%08x, block %d\n", i,
+ printf("Entry #%d: Hash 0x%08x, block %u\n", i,
hash, ext2fs_le32_to_cpu(ent[i].block));
#endif
blk = ext2fs_le32_to_cpu(ent[i].block) & 0x0ffffff;
diff -uprN e2fsprogs-1.38.org/e2fsck/recovery.c e2fsprogs-1.38-4g/e2fsck/recovery.c
--- e2fsprogs-1.38.org/e2fsck/recovery.c 2003-12-08 02:11:38.000000000 +0900
+++ e2fsprogs-1.38-4g/e2fsck/recovery.c 2006-02-25 19:41:29.000000000 +0900
@@ -435,7 +435,7 @@ static int do_one_pass(journal_t *journa
success = err;
printk (KERN_ERR
"JBD: IO error %d recovering "
- "block %ld in log\n",
+ "block %lu in log\n",
err, io_block);
} else {
unsigned long blocknr;
diff -uprN e2fsprogs-1.38.org/e2fsck/unix.c e2fsprogs-1.38-4g/e2fsck/unix.c
--- e2fsprogs-1.38.org/e2fsck/unix.c 2005-06-20 21:35:27.000000000 +0900
+++ e2fsprogs-1.38-4g/e2fsck/unix.c 2006-02-25 19:41:29.000000000 +0900
@@ -98,7 +98,8 @@ static void usage(e2fsck_t ctx)
static void show_stats(e2fsck_t ctx)
{
ext2_filsys fs = ctx->fs;
- int inodes, inodes_used, blocks, blocks_used;
+ int inodes, inodes_used;
+ blk_t blocks, blocks_used;
int dir_links;
int num_files, num_links;
int frag_percent;
@@ -117,7 +118,7 @@ static void show_stats(e2fsck_t ctx)
frag_percent = (frag_percent + 5) / 10;
if (!verbose) {
- printf(_("%s: %d/%d files (%0d.%d%% non-contiguous), %d/%d blocks\n"),
+ printf(_("%s: %d/%d files (%0d.%d%% non-contiguous), %u/%u blocks\n"),
ctx->device_name, inodes_used, inodes,
frag_percent / 10, frag_percent % 10,
blocks_used, blocks);
@@ -131,7 +132,7 @@ static void show_stats(e2fsck_t ctx)
ctx->fs_fragmented, frag_percent / 10, frag_percent % 10);
printf (_(" # of inodes with ind/dind/tind blocks: %d/%d/%d\n"),
ctx->fs_ind_count, ctx->fs_dind_count, ctx->fs_tind_count);
- printf (P_("%8d block used (%d%%)\n", "%8d blocks used (%d%%)\n",
+ printf (P_("%8u block used (%d%%)\n", "%8u blocks used (%d%%)\n",
blocks_used),
blocks_used, (int) ((long long) 100 * blocks_used / blocks));
printf (P_("%8d bad block\n", "%8d bad blocks\n",
@@ -289,7 +290,7 @@ static void check_if_skip(e2fsck_t ctx)
fputs(_(", check forced.\n"), stdout);
return;
}
- printf(_("%s: clean, %d/%d files, %d/%d blocks"), ctx->device_name,
+ printf(_("%s: clean, %d/%d files, %u/%u blocks"), ctx->device_name,
fs->super->s_inodes_count - fs->super->s_free_inodes_count,
fs->super->s_inodes_count,
fs->super->s_blocks_count - fs->super->s_free_blocks_count,
diff -uprN e2fsprogs-1.38.org/lib/ext2fs/bitops.h e2fsprogs-1.38-4g/lib/ext2fs/bitops.h
--- e2fsprogs-1.38.org/lib/ext2fs/bitops.h 2005-07-01 08:40:17.000000000 +0900
+++ e2fsprogs-1.38-4g/lib/ext2fs/bitops.h 2006-02-25 19:41:29.000000000 +0900
@@ -130,6 +130,7 @@ extern int ext2fs_unmark_generic_bitmap(
#endif
#endif
+#define _EXT2_USE_C_VERSIONS_
#if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \
(defined(__i386__) || defined(__i486__) || defined(__i586__)))
@@ -264,7 +265,7 @@ _INLINE_ __u16 ext2fs_swab16(__u16 val)
#endif /* i386 */
-#ifdef __mc68000__
+#if (defined(__mc68000__) && !defined(_EXT2_USE_C_VERSIONS_))
#define _EXT2_HAVE_ASM_BITOPS_
diff -uprN e2fsprogs-1.38.org/misc/dumpe2fs.c e2fsprogs-1.38-4g/misc/dumpe2fs.c
--- e2fsprogs-1.38.org/misc/dumpe2fs.c 2005-06-20 21:35:27.000000000 +0900
+++ e2fsprogs-1.38-4g/misc/dumpe2fs.c 2006-02-25 19:41:29.000000000 +0900
@@ -244,12 +244,12 @@ static void print_journal_information(ex
exit(1);
}
- printf(_("\nJournal block size: %d\n"
- "Journal length: %d\n"
- "Journal first block: %d\n"
+ printf(_("\nJournal block size: %u\n"
+ "Journal length: %u\n"
+ "Journal first block: %u\n"
"Journal sequence: 0x%08x\n"
- "Journal start: %d\n"
- "Journal number of users: %d\n"),
+ "Journal start: %u\n"
+ "Journal number of users: %lu\n"),
ntohl(jsb->s_blocksize), ntohl(jsb->s_maxlen),
ntohl(jsb->s_first), ntohl(jsb->s_sequence),
ntohl(jsb->s_start), ntohl(jsb->s_nr_users));
diff -uprN e2fsprogs-1.38.org/misc/e2image.c e2fsprogs-1.38-4g/misc/e2image.c
--- e2fsprogs-1.38.org/misc/e2image.c 2005-01-27 01:37:46.000000000 +0900
+++ e2fsprogs-1.38-4g/misc/e2image.c 2006-02-25 19:41:29.000000000 +0900
@@ -329,7 +329,7 @@ static void write_block(int fd, char *bu
err = errno;
else
err = 0;
- com_err(program_name, err, "error writing block %d",
+ com_err(program_name, err, "error writing block %u",
block);
}
}
diff -uprN e2fsprogs-1.38.org/misc/findsuper.c e2fsprogs-1.38-4g/misc/findsuper.c
--- e2fsprogs-1.38.org/misc/findsuper.c 2005-06-20 21:35:27.000000000 +0900
+++ e2fsprogs-1.38-4g/misc/findsuper.c 2006-02-25 19:41:29.000000000 +0900
@@ -182,15 +182,15 @@ int main(int argc, char *argv[])
if (ext2.s_magic != EXT2_SUPER_MAGIC)
continue;
if (ext2.s_log_block_size > 4)
- WHY("log block size > 4 (%d)\n", ext2.s_log_block_size);
+ WHY("log block size > 4 (%u)\n", ext2.s_log_block_size);
if (ext2.s_r_blocks_count > ext2.s_blocks_count)
- WHY("r_blocks_count > blocks_count (%d > %d)\n",
+ WHY("r_blocks_count > blocks_count (%u > %u)\n",
ext2.s_r_blocks_count, ext2.s_blocks_count);
if (ext2.s_free_blocks_count > ext2.s_blocks_count)
- WHY("free_blocks_count > blocks_count\n (%d > %d)\n",
+ WHY("free_blocks_count > blocks_count\n (%u > %u)\n",
ext2.s_free_blocks_count, ext2.s_blocks_count);
if (ext2.s_free_inodes_count > ext2.s_inodes_count)
- WHY("free_inodes_count > inodes_count (%d > %d)\n",
+ WHY("free_inodes_count > inodes_count (%u > %u)\n",
ext2.s_free_inodes_count, ext2.s_inodes_count);
tm = ext2.s_mtime;
diff -uprN e2fsprogs-1.38.org/misc/mke2fs.c e2fsprogs-1.38-4g/misc/mke2fs.c
--- e2fsprogs-1.38.org/misc/mke2fs.c 2005-07-01 09:00:40.000000000 +0900
+++ e2fsprogs-1.38-4g/misc/mke2fs.c 2006-02-25 19:41:29.000000000 +0900
@@ -302,7 +302,7 @@ static void handle_bad_blocks(ext2_filsy
if (ext2fs_badblocks_list_test(bb_list, i)) {
fprintf(stderr, _("Block %d in primary "
"superblock/group descriptor area bad.\n"), i);
- fprintf(stderr, _("Blocks %d through %d must be good "
+ fprintf(stderr, _("Blocks %u through %d must be good "
"in order to build a filesystem.\n"),
fs->super->s_first_data_block, must_be_good);
fputs(_("Aborting....\n"), stderr);
@@ -325,7 +325,7 @@ static void handle_bad_blocks(ext2_filsy
group_block + j)) {
if (!group_bad)
fprintf(stderr,
-_("Warning: the backup superblock/group descriptors at block %d contain\n"
+_("Warning: the backup superblock/group descriptors at block %u contain\n"
" bad blocks.\n\n"),
group_block);
group_bad++;
@@ -489,7 +489,7 @@ static void write_inode_tables(ext2_fils
retval = zero_blocks(fs, blk, num, 0, &blk, &num);
if (retval) {
fprintf(stderr, _("\nCould not write %d blocks "
- "in inode table starting at %d: %s\n"),
+ "in inode table starting at %u: %s\n"),
num, blk, error_message(retval));
exit(1);
}
@@ -692,7 +692,7 @@ static void show_stats(ext2_filsys fs)
int need, col_left;
if (param.s_blocks_count != s->s_blocks_count)
- fprintf(stderr, _("warning: %d blocks unused.\n\n"),
+ fprintf(stderr, _("warning: %u blocks unused.\n\n"),
param.s_blocks_count - s->s_blocks_count);
memset(buf, 0, sizeof(buf));
diff -uprN e2fsprogs-1.38.org/resize/main.c e2fsprogs-1.38-4g/resize/main.c
--- e2fsprogs-1.38.org/resize/main.c 2005-05-10 05:22:17.000000000 +0900
+++ e2fsprogs-1.38-4g/resize/main.c 2006-02-25 19:41:29.000000000 +0900
@@ -276,13 +276,13 @@ int main (int argc, char ** argv)
}
if (!force && (new_size > max_size)) {
fprintf(stderr, _("The containing partition (or device)"
- " is only %d (%dk) blocks.\nYou requested a new size"
- " of %d blocks.\n\n"), max_size,
+ " is only %u (%dk) blocks.\nYou requested a new size"
+ " of %u blocks.\n\n"), max_size,
fs->blocksize / 1024, new_size);
exit(1);
}
if (new_size == fs->super->s_blocks_count) {
- fprintf(stderr, _("The filesystem is already %d blocks "
+ fprintf(stderr, _("The filesystem is already %u blocks "
"long. Nothing to do!\n\n"), new_size);
exit(0);
}
@@ -293,7 +293,7 @@ int main (int argc, char ** argv)
device_name);
exit(1);
}
- printf("Resizing the filesystem on %s to %d (%dk) blocks.\n",
+ printf("Resizing the filesystem on %s to %u (%dk) blocks.\n",
device_name, new_size, fs->blocksize / 1024);
retval = resize_fs(fs, &new_size, flags,
((flags & RESIZE_PERCENT_COMPLETE) ?
@@ -304,7 +304,7 @@ int main (int argc, char ** argv)
ext2fs_close (fs);
exit(1);
}
- printf(_("The filesystem on %s is now %d blocks long.\n\n"),
+ printf(_("The filesystem on %s is now %u blocks long.\n\n"),
device_name, new_size);
return (0);
}
diff -uprN e2fsprogs-1.38.org/resize/resize2fs.c e2fsprogs-1.38-4g/resize/resize2fs.c
--- e2fsprogs-1.38.org/resize/resize2fs.c 2005-05-10 05:22:17.000000000 +0900
+++ e2fsprogs-1.38-4g/resize/resize2fs.c 2006-02-25 19:41:29.000000000 +0900
@@ -108,7 +108,7 @@ errcode_t resize_fs(ext2_filsys fs, blk_
#ifdef RESIZE2FS_DEBUG
if (rfs->flags & RESIZE_DEBUG_BMOVE)
- printf("Number of free blocks: %d/%d, Needed: %d\n",
+ printf("Number of free blocks: %u/%u, Needed: %d\n",
rfs->old_fs->super->s_free_blocks_count,
rfs->new_fs->super->s_free_blocks_count,
rfs->needed_blocks);
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) 2006-03-15 12:39 [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) Takashi Sato @ 2006-03-17 21:19 ` Badari Pulavarty 2006-03-18 5:57 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) Takashi Sato 2006-03-19 2:44 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) Theodore Ts'o 1 sibling, 1 reply; 10+ messages in thread From: Badari Pulavarty @ 2006-03-17 21:19 UTC (permalink / raw) To: Takashi Sato; +Cc: ext2-devel, lkml On Wed, 2006-03-15 at 21:39 +0900, Takashi Sato wrote: > This makes it possible to make ext2/3 with 4G-1(2^32-1) blocks by mke2fs > in e2fsprogs-1.38. > > Signed-off-by: Takashi Sato sho@tnes.nec.co.jp Hi, Few comments on the patches: 1) Both kernel patch and e2fsprogs doesn't seem to apply cleanly for the versions you mentioned. I had to fix few rejects. 2) I am still not able to make filesystem bigger than 8TB with your patch. I get following message. # fdisk -l /dev/md0 Disk /dev/md0: 10479.7 GB, 10479753756672 bytes 2 heads, 4 sectors/track, -1736433664 cylinders Units = cylinders of 8 * 512 = 4096 bytes elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs /dev/md0 mke2fs 1.38 (30-Jun-2005) mke2fs: Filesystem too large. No more than 2**31-1 blocks (8TB using a blocksize of 4k) are currently supported. When I try to create "ext3": elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs -t ext3 /dev/md0 mke2fs 1.38 (30-Jun-2005) mke2fs: invalid blocks count - /dev/md0 Were you able to test these changes ? Thanks, Badari > --- > diff -uprN e2fsprogs-1.38.org/debugfs/debugfs.c e2fsprogs-1.38-4g/debugfs/debugfs.c > --- e2fsprogs-1.38.org/debugfs/debugfs.c 2005-05-06 22:04:36.000000000 +0900 > +++ e2fsprogs-1.38-4g/debugfs/debugfs.c 2006-02-25 19:42:22.000000000 +0900 > @@ -301,9 +301,9 @@ void do_show_super_stats(int argc, char > > gdp = ¤t_fs->group_desc[0]; > for (i = 0; i < current_fs->group_desc_count; i++, gdp++) > - fprintf(out, " Group %2d: block bitmap at %d, " > - "inode bitmap at %d, " > - "inode table at %d\n" > + fprintf(out, " Group %2d: block bitmap at %u, " > + "inode bitmap at %u, " > + "inode table at %u\n" > " %d free %s, " > "%d free %s, " > "%d used %s\n", > @@ -351,9 +351,9 @@ static void finish_range(struct list_blo > else > fprintf(lb->f, ", "); > if (lb->first_block == lb->last_block) > - fprintf(lb->f, "(%lld):%d", lb->first_bcnt, lb->first_block); > + fprintf(lb->f, "(%lld):%u", lb->first_bcnt, lb->first_block); > else > - fprintf(lb->f, "(%lld-%lld):%d-%d", lb->first_bcnt, > + fprintf(lb->f, "(%lld-%lld):%u-%u", lb->first_bcnt, > lb->last_bcnt, lb->first_block, lb->last_block); > lb->first_block = 0; > } > @@ -395,11 +395,11 @@ static int list_blocks_proc(ext2_filsys > else > fprintf(lb->f, ", "); > if (blockcnt == -1) > - fprintf(lb->f, "(IND):%d", *blocknr); > + fprintf(lb->f, "(IND):%u", *blocknr); > else if (blockcnt == -2) > - fprintf(lb->f, "(DIND):%d", *blocknr); > + fprintf(lb->f, "(DIND):%u", *blocknr); > else if (blockcnt == -3) > - fprintf(lb->f, "(TIND):%d", *blocknr); > + fprintf(lb->f, "(TIND):%u", *blocknr); > return 0; > } > > @@ -431,7 +431,7 @@ void internal_dump_inode_extra(FILE *out > int storage_size; > int i; > > - fprintf(out, "Size of extra inode fields: %d\n", inode->i_extra_isize); > + fprintf(out, "Size of extra inode fields: %u\n", inode->i_extra_isize); > if (inode->i_extra_isize > EXT2_INODE_SIZE(current_fs->super) - > EXT2_GOOD_OLD_INODE_SIZE) { > fprintf(stderr, "invalid inode->i_extra_isize (%u)\n", > @@ -462,7 +462,7 @@ void internal_dump_inode_extra(FILE *out > fprintf(out, " = \""); > dump_xattr_string(out, start + entry->e_value_offs, > entry->e_value_size); > - fprintf(out, "\" (%d)\n", entry->e_value_size); > + fprintf(out, "\" (%u)\n", entry->e_value_size); > entry = next; > } > } > @@ -525,7 +525,7 @@ void internal_dump_inode(FILE *out, cons > fprintf(out, "%sFile ACL: %d Directory ACL: %d\n", > prefix, > inode->i_file_acl, LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0); > - fprintf(out, "%sLinks: %d Blockcount: %d\n", > + fprintf(out, "%sLinks: %d Blockcount: %u\n", > prefix, inode->i_links_count, inode->i_blocks); > switch (os) { > case EXT2_OS_LINUX: > @@ -704,7 +704,7 @@ void do_freeb(int argc, char *argv[]) > return; > while (count-- > 0) { > if (!ext2fs_test_block_bitmap(current_fs->block_map,block)) > - com_err(argv[0], 0, "Warning: block %d already clear", > + com_err(argv[0], 0, "Warning: block %u already clear", > block); > ext2fs_unmark_block_bitmap(current_fs->block_map,block); > block++; > @@ -723,7 +723,7 @@ void do_setb(int argc, char *argv[]) > return; > while (count-- > 0) { > if (ext2fs_test_block_bitmap(current_fs->block_map,block)) > - com_err(argv[0], 0, "Warning: block %d already set", > + com_err(argv[0], 0, "Warning: block %u already set", > block); > ext2fs_mark_block_bitmap(current_fs->block_map,block); > block++; > @@ -740,9 +740,9 @@ void do_testb(int argc, char *argv[]) > return; > while (count-- > 0) { > if (ext2fs_test_block_bitmap(current_fs->block_map,block)) > - printf("Block %d marked in use\n", block); > + printf("Block %u marked in use\n", block); > else > - printf("Block %d not in use\n", block); > + printf("Block %u not in use\n", block); > block++; > } > } > @@ -822,6 +822,7 @@ void do_modify_inode(int argc, char *arg > const char *hex_format = "0x%x"; > const char *octal_format = "0%o"; > const char *decimal_format = "%d"; > + const char *unsignedlong_format = "%lu"; > > if (common_inode_args_process(argc, argv, &inode_num, CHECK_FS_RW)) > return; > @@ -834,13 +835,13 @@ void do_modify_inode(int argc, char *arg > modify_u16(argv[0], "Mode", octal_format, &inode.i_mode); > modify_u16(argv[0], "User ID", decimal_format, &inode.i_uid); > modify_u16(argv[0], "Group ID", decimal_format, &inode.i_gid); > - modify_u32(argv[0], "Size", decimal_format, &inode.i_size); > + modify_u32(argv[0], "Size", unsignedlong_format, &inode.i_size); > modify_u32(argv[0], "Creation time", decimal_format, &inode.i_ctime); > modify_u32(argv[0], "Modification time", decimal_format, &inode.i_mtime); > modify_u32(argv[0], "Access time", decimal_format, &inode.i_atime); > modify_u32(argv[0], "Deletion time", decimal_format, &inode.i_dtime); > modify_u16(argv[0], "Link count", decimal_format, &inode.i_links_count); > - modify_u32(argv[0], "Block count", decimal_format, &inode.i_blocks); > + modify_u32(argv[0], "Block count", unsignedlong_format, &inode.i_blocks); > modify_u32(argv[0], "File flags", hex_format, &inode.i_flags); > modify_u32(argv[0], "Generation", hex_format, &inode.i_generation); > #if 0 > @@ -1151,7 +1152,7 @@ void do_find_free_block(int argc, char * > com_err("ext2fs_new_block", retval, ""); > return; > } else > - printf("%d ", free_blk); > + printf("%u ", free_blk); > } > printf("\n"); > } > @@ -1660,10 +1661,10 @@ void do_bmap(int argc, char *argv[]) > errcode = ext2fs_bmap(current_fs, ino, 0, 0, 0, blk, &pblk); > if (errcode) { > com_err("argv[0]", errcode, > - "while mapping logical block %d\n", blk); > + "while mapping logical block %u\n", blk); > return; > } > - printf("%d\n", pblk); > + printf("%u\n", pblk); > } > > void do_imap(int argc, char *argv[]) > diff -uprN e2fsprogs-1.38.org/debugfs/htree.c e2fsprogs-1.38-4g/debugfs/htree.c > --- e2fsprogs-1.38.org/debugfs/htree.c 2003-12-08 02:11:38.000000000 +0900 > +++ e2fsprogs-1.38-4g/debugfs/htree.c 2006-02-25 19:41:29.000000000 +0900 > @@ -43,14 +43,14 @@ static void htree_dump_leaf_node(ext2_fi > errcode = ext2fs_bmap(fs, ino, inode, buf, 0, blk, &pblk); > if (errcode) { > com_err("htree_dump_leaf_node", errcode, > - "while mapping logical block %d\n", blk); > + "while mapping logical block %u\n", blk); > return; > } > > errcode = ext2fs_read_dir_block2(current_fs, pblk, buf, 0); > if (errcode) { > com_err("htree_dump_leaf_node", errcode, > - "while reading block %d\n", blk); > + "while reading block %u\n", blk); > return; > } > > @@ -60,7 +60,7 @@ static void htree_dump_leaf_node(ext2_fi > (dirent->rec_len < 8) || > ((dirent->rec_len % 4) != 0) || > (((dirent->name_len & 0xFF)+8) > dirent->rec_len)) { > - fprintf(pager, "Corrupted directory block (%d)!\n", blk); > + fprintf(pager, "Corrupted directory block (%u)!\n", blk); > break; > } > thislen = ((dirent->name_len & 0xFF) < EXT2_NAME_LEN) ? > @@ -124,7 +124,7 @@ static void htree_dump_int_node(ext2_fil > for (i=0; i < limit.count; i++) { > e.hash = ext2fs_le32_to_cpu(ent[i].hash); > e.block = ext2fs_le32_to_cpu(ent[i].block); > - fprintf(pager, "Entry #%d: Hash 0x%08x, block %d\n", i, > + fprintf(pager, "Entry #%d: Hash 0x%08x, block %u\n", i, > i ? e.hash : 0, e.block); > if (level) > htree_dump_int_block(fs, ino, inode, rootnode, > @@ -155,14 +155,14 @@ static void htree_dump_int_block(ext2_fi > errcode = ext2fs_bmap(fs, ino, inode, buf, 0, blk, &pblk); > if (errcode) { > com_err("htree_dump_int_block", errcode, > - "while mapping logical block %d\n", blk); > + "while mapping logical block %u\n", blk); > return; > } > > errcode = io_channel_read_blk(current_fs->io, pblk, 1, buf); > if (errcode) { > com_err("htree_dump_int_block", errcode, > - "while reading block %d\n", blk); > + "while reading block %u\n", blk); > return; > } > > @@ -241,7 +241,7 @@ void do_htree_dump(int argc, char *argv[ > rootnode = (struct ext2_dx_root_info *) (buf + 24); > > fprintf(pager, "Root node dump:\n"); > - fprintf(pager, "\t Reserved zero: %d\n", rootnode->reserved_zero); > + fprintf(pager, "\t Reserved zero: %u\n", rootnode->reserved_zero); > fprintf(pager, "\t Hash Version: %d\n", rootnode->hash_version); > fprintf(pager, "\t Info length: %d\n", rootnode->info_length); > fprintf(pager, "\t Indirect levels: %d\n", rootnode->indirect_levels); > @@ -372,9 +372,9 @@ static int search_dir_block(ext2_filsys > strncmp(p->search_name, dirent->name, > p->len) == 0) { > printf("Entry found at logical block %lld, " > - "phys %d, offset %d\n", blockcnt, > + "phys %u, offset %u\n", blockcnt, > *blocknr, offset); > - printf("offset %d\n", offset); > + printf("offset %u\n", offset); > return BLOCK_ABORT; > } > offset += dirent->rec_len; > diff -uprN e2fsprogs-1.38.org/debugfs/unused.c e2fsprogs-1.38-4g/debugfs/unused.c > --- e2fsprogs-1.38.org/debugfs/unused.c 2003-12-08 02:11:38.000000000 +0900 > +++ e2fsprogs-1.38-4g/debugfs/unused.c 2006-02-25 19:41:29.000000000 +0900 > @@ -45,7 +45,7 @@ void do_dump_unused(int argc EXT2FS_ATTR > break; > if (i >= current_fs->blocksize) > continue; > - printf("\nUnused block %ld contains non-zero data:\n\n", > + printf("\nUnused block %lu contains non-zero data:\n\n", > blk); > for (i=0; i < current_fs->blocksize; i++) > fputc(buf[i], stdout); > diff -uprN e2fsprogs-1.38.org/e2fsck/emptydir.c e2fsprogs-1.38-4g/e2fsck/emptydir.c > --- e2fsprogs-1.38.org/e2fsck/emptydir.c 2003-12-08 02:11:38.000000000 +0900 > +++ e2fsprogs-1.38-4g/e2fsck/emptydir.c 2006-02-25 19:41:29.000000000 +0900 > @@ -94,7 +94,7 @@ void add_empty_dirblock(empty_dir_info e > if (db->ino == 11) > return; /* Inode number 11 is usually lost+found */ > > - printf(_("Empty directory block %d (#%d) in inode %d\n"), > + printf(_("Empty directory block %u (#%d) in inode %d\n"), > db->blk, db->blockcnt, db->ino); > > ext2fs_mark_block_bitmap(edi->empty_dir_blocks, db->blk); > diff -uprN e2fsprogs-1.38.org/e2fsck/message.c e2fsprogs-1.38-4g/e2fsck/message.c > --- e2fsprogs-1.38.org/e2fsck/message.c 2005-06-19 22:41:08.000000000 +0900 > +++ e2fsprogs-1.38-4g/e2fsck/message.c 2006-02-25 19:41:29.000000000 +0900 > @@ -418,7 +418,7 @@ static _INLINE_ void expand_percent_expr > print_pathname(fs, ctx->dir, ctx->ino); > break; > case 'S': > - printf("%d", get_backup_sb(NULL, fs, NULL, NULL)); > + printf("%u", get_backup_sb(NULL, fs, NULL, NULL)); > break; > case 's': > printf("%s", ctx->str ? ctx->str : "NULL"); > diff -uprN e2fsprogs-1.38.org/e2fsck/pass1b.c e2fsprogs-1.38-4g/e2fsck/pass1b.c > --- e2fsprogs-1.38.org/e2fsck/pass1b.c 2005-04-15 06:10:12.000000000 +0900 > +++ e2fsprogs-1.38-4g/e2fsck/pass1b.c 2006-02-25 19:41:29.000000000 +0900 > @@ -555,7 +555,7 @@ static int delete_file_block(ext2_filsys > decrement_badcount(ctx, *block_nr, p); > } else > com_err("delete_file_block", 0, > - _("internal error; can't find dup_blk for %d\n"), > + _("internal error; can't find dup_blk for %u\n"), > *block_nr); > } else { > ext2fs_unmark_block_bitmap(ctx->block_found_map, *block_nr); > @@ -692,7 +692,7 @@ static int clone_file_block(ext2_filsys > return BLOCK_CHANGED; > } else > com_err("clone_file_block", 0, > - _("internal error; can't find dup_blk for %d\n"), > + _("internal error; can't find dup_blk for %u\n"), > *block_nr); > } > return 0; > diff -uprN e2fsprogs-1.38.org/e2fsck/pass2.c e2fsprogs-1.38-4g/e2fsck/pass2.c > --- e2fsprogs-1.38.org/e2fsck/pass2.c 2005-04-15 03:06:09.000000000 +0900 > +++ e2fsprogs-1.38-4g/e2fsck/pass2.c 2006-02-25 19:41:29.000000000 +0900 > @@ -543,7 +543,7 @@ static void parse_int_node(ext2_filsys f > > #ifdef DX_DEBUG > printf("Root node dump:\n"); > - printf("\t Reserved zero: %d\n", root->reserved_zero); > + printf("\t Reserved zero: %u\n", root->reserved_zero); > printf("\t Hash Version: %d\n", root->hash_version); > printf("\t Info length: %d\n", root->info_length); > printf("\t Indirect levels: %d\n", root->indirect_levels); > @@ -582,7 +582,7 @@ static void parse_int_node(ext2_filsys f > prev_hash = hash; > hash = i ? (ext2fs_le32_to_cpu(ent[i].hash) & ~1) : 0; > #ifdef DX_DEBUG > - printf("Entry #%d: Hash 0x%08x, block %d\n", i, > + printf("Entry #%d: Hash 0x%08x, block %u\n", i, > hash, ext2fs_le32_to_cpu(ent[i].block)); > #endif > blk = ext2fs_le32_to_cpu(ent[i].block) & 0x0ffffff; > diff -uprN e2fsprogs-1.38.org/e2fsck/recovery.c e2fsprogs-1.38-4g/e2fsck/recovery.c > --- e2fsprogs-1.38.org/e2fsck/recovery.c 2003-12-08 02:11:38.000000000 +0900 > +++ e2fsprogs-1.38-4g/e2fsck/recovery.c 2006-02-25 19:41:29.000000000 +0900 > @@ -435,7 +435,7 @@ static int do_one_pass(journal_t *journa > success = err; > printk (KERN_ERR > "JBD: IO error %d recovering " > - "block %ld in log\n", > + "block %lu in log\n", > err, io_block); > } else { > unsigned long blocknr; > diff -uprN e2fsprogs-1.38.org/e2fsck/unix.c e2fsprogs-1.38-4g/e2fsck/unix.c > --- e2fsprogs-1.38.org/e2fsck/unix.c 2005-06-20 21:35:27.000000000 +0900 > +++ e2fsprogs-1.38-4g/e2fsck/unix.c 2006-02-25 19:41:29.000000000 +0900 > @@ -98,7 +98,8 @@ static void usage(e2fsck_t ctx) > static void show_stats(e2fsck_t ctx) > { > ext2_filsys fs = ctx->fs; > - int inodes, inodes_used, blocks, blocks_used; > + int inodes, inodes_used; > + blk_t blocks, blocks_used; > int dir_links; > int num_files, num_links; > int frag_percent; > @@ -117,7 +118,7 @@ static void show_stats(e2fsck_t ctx) > frag_percent = (frag_percent + 5) / 10; > > if (!verbose) { > - printf(_("%s: %d/%d files (%0d.%d%% non-contiguous), %d/%d blocks\n"), > + printf(_("%s: %d/%d files (%0d.%d%% non-contiguous), %u/%u blocks\n"), > ctx->device_name, inodes_used, inodes, > frag_percent / 10, frag_percent % 10, > blocks_used, blocks); > @@ -131,7 +132,7 @@ static void show_stats(e2fsck_t ctx) > ctx->fs_fragmented, frag_percent / 10, frag_percent % 10); > printf (_(" # of inodes with ind/dind/tind blocks: %d/%d/%d\n"), > ctx->fs_ind_count, ctx->fs_dind_count, ctx->fs_tind_count); > - printf (P_("%8d block used (%d%%)\n", "%8d blocks used (%d%%)\n", > + printf (P_("%8u block used (%d%%)\n", "%8u blocks used (%d%%)\n", > blocks_used), > blocks_used, (int) ((long long) 100 * blocks_used / blocks)); > printf (P_("%8d bad block\n", "%8d bad blocks\n", > @@ -289,7 +290,7 @@ static void check_if_skip(e2fsck_t ctx) > fputs(_(", check forced.\n"), stdout); > return; > } > - printf(_("%s: clean, %d/%d files, %d/%d blocks"), ctx->device_name, > + printf(_("%s: clean, %d/%d files, %u/%u blocks"), ctx->device_name, > fs->super->s_inodes_count - fs->super->s_free_inodes_count, > fs->super->s_inodes_count, > fs->super->s_blocks_count - fs->super->s_free_blocks_count, > diff -uprN e2fsprogs-1.38.org/lib/ext2fs/bitops.h e2fsprogs-1.38-4g/lib/ext2fs/bitops.h > --- e2fsprogs-1.38.org/lib/ext2fs/bitops.h 2005-07-01 08:40:17.000000000 +0900 > +++ e2fsprogs-1.38-4g/lib/ext2fs/bitops.h 2006-02-25 19:41:29.000000000 +0900 > @@ -130,6 +130,7 @@ extern int ext2fs_unmark_generic_bitmap( > #endif > #endif > > +#define _EXT2_USE_C_VERSIONS_ > #if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \ > (defined(__i386__) || defined(__i486__) || defined(__i586__))) > > @@ -264,7 +265,7 @@ _INLINE_ __u16 ext2fs_swab16(__u16 val) > > #endif /* i386 */ > > -#ifdef __mc68000__ > +#if (defined(__mc68000__) && !defined(_EXT2_USE_C_VERSIONS_)) > > #define _EXT2_HAVE_ASM_BITOPS_ > > diff -uprN e2fsprogs-1.38.org/misc/dumpe2fs.c e2fsprogs-1.38-4g/misc/dumpe2fs.c > --- e2fsprogs-1.38.org/misc/dumpe2fs.c 2005-06-20 21:35:27.000000000 +0900 > +++ e2fsprogs-1.38-4g/misc/dumpe2fs.c 2006-02-25 19:41:29.000000000 +0900 > @@ -244,12 +244,12 @@ static void print_journal_information(ex > exit(1); > } > > - printf(_("\nJournal block size: %d\n" > - "Journal length: %d\n" > - "Journal first block: %d\n" > + printf(_("\nJournal block size: %u\n" > + "Journal length: %u\n" > + "Journal first block: %u\n" > "Journal sequence: 0x%08x\n" > - "Journal start: %d\n" > - "Journal number of users: %d\n"), > + "Journal start: %u\n" > + "Journal number of users: %lu\n"), > ntohl(jsb->s_blocksize), ntohl(jsb->s_maxlen), > ntohl(jsb->s_first), ntohl(jsb->s_sequence), > ntohl(jsb->s_start), ntohl(jsb->s_nr_users)); > diff -uprN e2fsprogs-1.38.org/misc/e2image.c e2fsprogs-1.38-4g/misc/e2image.c > --- e2fsprogs-1.38.org/misc/e2image.c 2005-01-27 01:37:46.000000000 +0900 > +++ e2fsprogs-1.38-4g/misc/e2image.c 2006-02-25 19:41:29.000000000 +0900 > @@ -329,7 +329,7 @@ static void write_block(int fd, char *bu > err = errno; > else > err = 0; > - com_err(program_name, err, "error writing block %d", > + com_err(program_name, err, "error writing block %u", > block); > } > } > diff -uprN e2fsprogs-1.38.org/misc/findsuper.c e2fsprogs-1.38-4g/misc/findsuper.c > --- e2fsprogs-1.38.org/misc/findsuper.c 2005-06-20 21:35:27.000000000 +0900 > +++ e2fsprogs-1.38-4g/misc/findsuper.c 2006-02-25 19:41:29.000000000 +0900 > @@ -182,15 +182,15 @@ int main(int argc, char *argv[]) > if (ext2.s_magic != EXT2_SUPER_MAGIC) > continue; > if (ext2.s_log_block_size > 4) > - WHY("log block size > 4 (%d)\n", ext2.s_log_block_size); > + WHY("log block size > 4 (%u)\n", ext2.s_log_block_size); > if (ext2.s_r_blocks_count > ext2.s_blocks_count) > - WHY("r_blocks_count > blocks_count (%d > %d)\n", > + WHY("r_blocks_count > blocks_count (%u > %u)\n", > ext2.s_r_blocks_count, ext2.s_blocks_count); > if (ext2.s_free_blocks_count > ext2.s_blocks_count) > - WHY("free_blocks_count > blocks_count\n (%d > %d)\n", > + WHY("free_blocks_count > blocks_count\n (%u > %u)\n", > ext2.s_free_blocks_count, ext2.s_blocks_count); > if (ext2.s_free_inodes_count > ext2.s_inodes_count) > - WHY("free_inodes_count > inodes_count (%d > %d)\n", > + WHY("free_inodes_count > inodes_count (%u > %u)\n", > ext2.s_free_inodes_count, ext2.s_inodes_count); > > tm = ext2.s_mtime; > diff -uprN e2fsprogs-1.38.org/misc/mke2fs.c e2fsprogs-1.38-4g/misc/mke2fs.c > --- e2fsprogs-1.38.org/misc/mke2fs.c 2005-07-01 09:00:40.000000000 +0900 > +++ e2fsprogs-1.38-4g/misc/mke2fs.c 2006-02-25 19:41:29.000000000 +0900 > @@ -302,7 +302,7 @@ static void handle_bad_blocks(ext2_filsy > if (ext2fs_badblocks_list_test(bb_list, i)) { > fprintf(stderr, _("Block %d in primary " > "superblock/group descriptor area bad.\n"), i); > - fprintf(stderr, _("Blocks %d through %d must be good " > + fprintf(stderr, _("Blocks %u through %d must be good " > "in order to build a filesystem.\n"), > fs->super->s_first_data_block, must_be_good); > fputs(_("Aborting....\n"), stderr); > @@ -325,7 +325,7 @@ static void handle_bad_blocks(ext2_filsy > group_block + j)) { > if (!group_bad) > fprintf(stderr, > -_("Warning: the backup superblock/group descriptors at block %d contain\n" > +_("Warning: the backup superblock/group descriptors at block %u contain\n" > " bad blocks.\n\n"), > group_block); > group_bad++; > @@ -489,7 +489,7 @@ static void write_inode_tables(ext2_fils > retval = zero_blocks(fs, blk, num, 0, &blk, &num); > if (retval) { > fprintf(stderr, _("\nCould not write %d blocks " > - "in inode table starting at %d: %s\n"), > + "in inode table starting at %u: %s\n"), > num, blk, error_message(retval)); > exit(1); > } > @@ -692,7 +692,7 @@ static void show_stats(ext2_filsys fs) > int need, col_left; > > if (param.s_blocks_count != s->s_blocks_count) > - fprintf(stderr, _("warning: %d blocks unused.\n\n"), > + fprintf(stderr, _("warning: %u blocks unused.\n\n"), > param.s_blocks_count - s->s_blocks_count); > > memset(buf, 0, sizeof(buf)); > diff -uprN e2fsprogs-1.38.org/resize/main.c e2fsprogs-1.38-4g/resize/main.c > --- e2fsprogs-1.38.org/resize/main.c 2005-05-10 05:22:17.000000000 +0900 > +++ e2fsprogs-1.38-4g/resize/main.c 2006-02-25 19:41:29.000000000 +0900 > @@ -276,13 +276,13 @@ int main (int argc, char ** argv) > } > if (!force && (new_size > max_size)) { > fprintf(stderr, _("The containing partition (or device)" > - " is only %d (%dk) blocks.\nYou requested a new size" > - " of %d blocks.\n\n"), max_size, > + " is only %u (%dk) blocks.\nYou requested a new size" > + " of %u blocks.\n\n"), max_size, > fs->blocksize / 1024, new_size); > exit(1); > } > if (new_size == fs->super->s_blocks_count) { > - fprintf(stderr, _("The filesystem is already %d blocks " > + fprintf(stderr, _("The filesystem is already %u blocks " > "long. Nothing to do!\n\n"), new_size); > exit(0); > } > @@ -293,7 +293,7 @@ int main (int argc, char ** argv) > device_name); > exit(1); > } > - printf("Resizing the filesystem on %s to %d (%dk) blocks.\n", > + printf("Resizing the filesystem on %s to %u (%dk) blocks.\n", > device_name, new_size, fs->blocksize / 1024); > retval = resize_fs(fs, &new_size, flags, > ((flags & RESIZE_PERCENT_COMPLETE) ? > @@ -304,7 +304,7 @@ int main (int argc, char ** argv) > ext2fs_close (fs); > exit(1); > } > - printf(_("The filesystem on %s is now %d blocks long.\n\n"), > + printf(_("The filesystem on %s is now %u blocks long.\n\n"), > device_name, new_size); > return (0); > } > diff -uprN e2fsprogs-1.38.org/resize/resize2fs.c e2fsprogs-1.38-4g/resize/resize2fs.c > --- e2fsprogs-1.38.org/resize/resize2fs.c 2005-05-10 05:22:17.000000000 +0900 > +++ e2fsprogs-1.38-4g/resize/resize2fs.c 2006-02-25 19:41:29.000000000 +0900 > @@ -108,7 +108,7 @@ errcode_t resize_fs(ext2_filsys fs, blk_ > > #ifdef RESIZE2FS_DEBUG > if (rfs->flags & RESIZE_DEBUG_BMOVE) > - printf("Number of free blocks: %d/%d, Needed: %d\n", > + printf("Number of free blocks: %u/%u, Needed: %d\n", > rfs->old_fs->super->s_free_blocks_count, > rfs->new_fs->super->s_free_blocks_count, > rfs->needed_blocks); > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Ext2-devel mailing list > Ext2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/ext2-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) 2006-03-17 21:19 ` [Ext2-devel] " Badari Pulavarty @ 2006-03-18 5:57 ` Takashi Sato 2006-03-18 10:11 ` Andreas Dilger 2006-03-22 23:45 ` Badari Pulavarty 0 siblings, 2 replies; 10+ messages in thread From: Takashi Sato @ 2006-03-18 5:57 UTC (permalink / raw) To: Badari Pulavarty; +Cc: lkml, ext2-devel Hi, > Hi, > > Few comments on the patches: > > 1) Both kernel patch and e2fsprogs doesn't seem to apply cleanly for > the versions you mentioned. I had to fix few rejects. Sorry. My patches were corrupted because my poor mailer had removed spaces in the patch. I will take care of it when I update this patch. > 2) I am still not able to make filesystem bigger than 8TB with your > patch. I get following message. > > # fdisk -l /dev/md0 > > Disk /dev/md0: 10479.7 GB, 10479753756672 bytes > 2 heads, 4 sectors/track, -1736433664 cylinders > Units = cylinders of 8 * 512 = 4096 bytes > > > elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs /dev/md0 > mke2fs 1.38 (30-Jun-2005) > mke2fs: Filesystem too large. No more than 2**31-1 blocks > (8TB using a blocksize of 4k) are currently supported. > > When I try to create "ext3": As I said in my previous mail, You should specify -F option to create ext2/3 which has more than 2**31-1 blocks. It is because of the compatibility. > elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs -t ext3 /dev/md0 > mke2fs 1.38 (30-Jun-2005) > mke2fs: invalid blocks count - /dev/md0 > > Were you able to test these changes ? You should specify -j option to create ext3 as below. # ./mke2fs -j /dev/md0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) 2006-03-18 5:57 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) Takashi Sato @ 2006-03-18 10:11 ` Andreas Dilger 2006-03-18 12:24 ` Theodore Ts'o 2006-03-18 13:17 ` Takashi Sato 2006-03-22 23:45 ` Badari Pulavarty 1 sibling, 2 replies; 10+ messages in thread From: Andreas Dilger @ 2006-03-18 10:11 UTC (permalink / raw) To: Takashi Sato; +Cc: Badari Pulavarty, lkml, ext2-devel On Mar 18, 2006 14:57 +0900, Takashi Sato wrote: > >elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs /dev/md0 > >mke2fs 1.38 (30-Jun-2005) > >mke2fs: Filesystem too large. No more than 2**31-1 blocks > > (8TB using a blocksize of 4k) are currently supported. > > > >When I try to create "ext3": > > As I said in my previous mail, You should specify -F option to > create ext2/3 which has more than 2**31-1 blocks. > It is because of the compatibility. Oh, using -F for this is highly dangerous. That would allow mke2fs to run on e.g. a mounted filesystem or something. Instead use an option like "-E 16tb" or something. Cheers, Andreas -- Andreas Dilger Principal Software Engineer Cluster File Systems, Inc. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) 2006-03-18 10:11 ` Andreas Dilger @ 2006-03-18 12:24 ` Theodore Ts'o 2006-03-18 13:17 ` Takashi Sato 1 sibling, 0 replies; 10+ messages in thread From: Theodore Ts'o @ 2006-03-18 12:24 UTC (permalink / raw) To: Takashi Sato, Badari Pulavarty, lkml, ext2-devel On Sat, Mar 18, 2006 at 03:11:02AM -0700, Andreas Dilger wrote: > > As I said in my previous mail, You should specify -F option to > > create ext2/3 which has more than 2**31-1 blocks. > > It is because of the compatibility. > > Oh, using -F for this is highly dangerous. That would allow mke2fs to > run on e.g. a mounted filesystem or something. Instead use an option > like "-E 16tb" or something. Agreed that we shouldn't use -F, but what's the compatibility reason? Supporting 2**31-1 blocks required bugfixes in the kernel and in e2fsprogs, yes, but if it's not a filesystem format change, but rather a "kernel had bugs which have now been fixed" statement, that's not the sort of thing where I'd think forcing the system administrator to add a magic command-line flag would be necessary or desirable. I could see printing a warning message saying that older kernels might have problems with this, and I could also imagine including with the kernel patch enabling some sort of flag that could be queried, perhaps via /sys/fs/ext3/32bit-nr-blocks so that if it isn't present, mke2fs could give a more emphatic warning that the current kernel wouldn't be able to deal with filesystems being created. - Ted ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) 2006-03-18 10:11 ` Andreas Dilger 2006-03-18 12:24 ` Theodore Ts'o @ 2006-03-18 13:17 ` Takashi Sato 1 sibling, 0 replies; 10+ messages in thread From: Takashi Sato @ 2006-03-18 13:17 UTC (permalink / raw) To: Andreas Dilger; +Cc: Badari Pulavarty, lkml, ext2-devel Hi, > On Mar 18, 2006 14:57 +0900, Takashi Sato wrote: >> >elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs /dev/md0 >> >mke2fs 1.38 (30-Jun-2005) >> >mke2fs: Filesystem too large. No more than 2**31-1 blocks >> > (8TB using a blocksize of 4k) are currently supported. >> > >> >When I try to create "ext3": >> >> As I said in my previous mail, You should specify -F option to >> create ext2/3 which has more than 2**31-1 blocks. >> It is because of the compatibility. > > Oh, using -F for this is highly dangerous. That would allow mke2fs to > run on e.g. a mounted filesystem or something. Instead use an option > like "-E 16tb" or something. I would like to integrate the function into new option "-O large_block" in my mail "[PATCH 1/4] ext2/3: Extends the max file size(ext2 in kernel)". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) 2006-03-18 5:57 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) Takashi Sato 2006-03-18 10:11 ` Andreas Dilger @ 2006-03-22 23:45 ` Badari Pulavarty 2006-03-23 18:16 ` Badari Pulavarty 1 sibling, 1 reply; 10+ messages in thread From: Badari Pulavarty @ 2006-03-22 23:45 UTC (permalink / raw) To: Takashi Sato; +Cc: lkml, ext2-devel On Sat, 2006-03-18 at 14:57 +0900, Takashi Sato wrote: > Hi, > > > Hi, > > > > Few comments on the patches: > > > > 1) Both kernel patch and e2fsprogs doesn't seem to apply cleanly for > > the versions you mentioned. I had to fix few rejects. > > Sorry. My patches were corrupted because my poor mailer had > removed spaces in the patch. > I will take care of it when I update this patch. > > > 2) I am still not able to make filesystem bigger than 8TB with your > > patch. I get following message. > > > > # fdisk -l /dev/md0 > > > > Disk /dev/md0: 10479.7 GB, 10479753756672 bytes > > 2 heads, 4 sectors/track, -1736433664 cylinders > > Units = cylinders of 8 * 512 = 4096 bytes > > > > > > elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs /dev/md0 > > mke2fs 1.38 (30-Jun-2005) > > mke2fs: Filesystem too large. No more than 2**31-1 blocks > > (8TB using a blocksize of 4k) are currently supported. > > > > When I try to create "ext3": > > As I said in my previous mail, You should specify -F option to > create ext2/3 which has more than 2**31-1 blocks. > It is because of the compatibility. > > > elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs -t ext3 /dev/md0 > > mke2fs 1.38 (30-Jun-2005) > > mke2fs: invalid blocks count - /dev/md0 > > > > Were you able to test these changes ? > > You should specify -j option to create ext3 as below. > > # ./mke2fs -j /dev/md0 Okay. I tested your patches and mkfs changes. I am able to create a >8TB filesystem and was able to mount it :) elm3b29:~ # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 79366980 76545536 2821444 97% / tmpfs 3574032 8 3574024 1% /dev/shm /dev/md0 9833697924 131228 9677640816 1% /mnt I run single "fsx" tests and quickly ran into issues. fsx complained about data mismatch :( Here is the "dmesg" output: EXT3 FS on md0, internal journal EXT3-fs: mounted filesystem with ordered data mode. EXT3-fs error (device md0): ext3_new_block: Allocating block in system zone - block = 131072 Aborting journal on device md0. ext3_abort called. EXT3-fs error (device md0): ext3_journal_start_sb: Detected aborted journal Remounting filesystem read-only fsx-linux[15668]: segfault at fffffffffffffffb rip 00002b33b3eddda0 rsp 00007fffffef1e38 error 4 fsx-linux[15667]: segfault at fffffffffffffffb rip 00002b7736f5dda0 rsp 00007fffffb70da8 error 4 ext3_new_block: block was unexpectedly set in b_committed_data EXT3-fs error (device md0) in ext3_reserve_inode_write: Journal has aborted fsx-linux[15666]: segfault at fffffffffffffffb rip 00002b0582de6da0 rsp 00007fffffd24f18 error 4 fsx-linux[15669]: segfault at 00000000ffffffff rip 00002ad94d283da0 rsp 00007fffff95aa28 error 4 __journal_remove_journal_head: freeing b_committed_data __journal_remove_journal_head: freeing b_committed_data __journal_remove_journal_head: freeing b_committed_data Thanks, Badari ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) 2006-03-22 23:45 ` Badari Pulavarty @ 2006-03-23 18:16 ` Badari Pulavarty 2006-03-24 1:54 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support2^32-1blocks(e2fsprogs) Takashi Sato 0 siblings, 1 reply; 10+ messages in thread From: Badari Pulavarty @ 2006-03-23 18:16 UTC (permalink / raw) To: Takashi Sato; +Cc: lkml, ext2-devel On Wed, 2006-03-22 at 15:45 -0800, Badari Pulavarty wrote: > On Sat, 2006-03-18 at 14:57 +0900, Takashi Sato wrote: > > Hi, > > > > > Hi, > > > > > > Few comments on the patches: > > > > > > 1) Both kernel patch and e2fsprogs doesn't seem to apply cleanly for > > > the versions you mentioned. I had to fix few rejects. > > > > Sorry. My patches were corrupted because my poor mailer had > > removed spaces in the patch. > > I will take care of it when I update this patch. > > > > > 2) I am still not able to make filesystem bigger than 8TB with your > > > patch. I get following message. > > > > > > # fdisk -l /dev/md0 > > > > > > Disk /dev/md0: 10479.7 GB, 10479753756672 bytes > > > 2 heads, 4 sectors/track, -1736433664 cylinders > > > Units = cylinders of 8 * 512 = 4096 bytes > > > > > > > > > elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs /dev/md0 > > > mke2fs 1.38 (30-Jun-2005) > > > mke2fs: Filesystem too large. No more than 2**31-1 blocks > > > (8TB using a blocksize of 4k) are currently supported. > > > > > > When I try to create "ext3": > > > > As I said in my previous mail, You should specify -F option to > > create ext2/3 which has more than 2**31-1 blocks. > > It is because of the compatibility. > > > > > elm3b29:~/e2fsprogs-1.38/misc # ./mke2fs -t ext3 /dev/md0 > > > mke2fs 1.38 (30-Jun-2005) > > > mke2fs: invalid blocks count - /dev/md0 > > > > > > Were you able to test these changes ? > > > > You should specify -j option to create ext3 as below. > > > > # ./mke2fs -j /dev/md0 > > Okay. I tested your patches and mkfs changes. > > I am able to create a >8TB filesystem and was able to > mount it :) > > elm3b29:~ # df > Filesystem 1K-blocks Used Available Use% Mounted on > /dev/hda2 79366980 76545536 2821444 97% / > tmpfs 3574032 8 3574024 1% /dev/shm > /dev/md0 9833697924 131228 9677640816 1% /mnt > > I run single "fsx" tests and quickly ran into issues. fsx complained > about data mismatch :( > > Here is the "dmesg" output: > > EXT3 FS on md0, internal journal > EXT3-fs: mounted filesystem with ordered data mode. > EXT3-fs error (device md0): ext3_new_block: Allocating block in system > zone - block = 131072 > Aborting journal on device md0. > ext3_abort called. > EXT3-fs error (device md0): ext3_journal_start_sb: Detected aborted > journal > Remounting filesystem read-only > fsx-linux[15668]: segfault at fffffffffffffffb rip 00002b33b3eddda0 rsp > 00007fffffef1e38 error 4 > fsx-linux[15667]: segfault at fffffffffffffffb rip 00002b7736f5dda0 rsp > 00007fffffb70da8 error 4 > ext3_new_block: block was unexpectedly set in b_committed_data > EXT3-fs error (device md0) in ext3_reserve_inode_write: Journal has > aborted > fsx-linux[15666]: segfault at fffffffffffffffb rip 00002b0582de6da0 rsp > 00007fffffd24f18 error 4 > fsx-linux[15669]: segfault at 00000000ffffffff rip 00002ad94d283da0 rsp > 00007fffff95aa28 error 4 > __journal_remove_journal_head: freeing b_committed_data > __journal_remove_journal_head: freeing b_committed_data > __journal_remove_journal_head: freeing b_committed_data More information. I ran the test with "-onoreservation" thinking that the patch didn't address "reservation code" issues and I still ran into block allocation problems. Hope this helps. EXT3 FS on md0, internal journal EXT3-fs: mounted filesystem with ordered data mode. EXT3-fs error (device md0): ext3_new_block: block(3304604584) >= blocks count(2497616320) - block_group = 4, es == ffff8101dee44400 Aborting journal on device md0. ext3_abort called. EXT3-fs error (device md0): ext3_journal_start_sb: Detected aborted journal Remounting filesystem read-only fsx-linux[18270]: segfault at fffffffffffffffb rip 00002b9eae932da0 rsp 00007fffffbf73d8 error 4 fsx-linux[18271]: segfault at fffffffffffffffb rip 00002aafb6ebada0 rsp 00007fffffaf0e58 error 4 fsx-linux[18272]: segfault at fffffffffffffffb rip 00002abcc19b7da0 rsp 00007fffffde6348 error 4 EXT3-fs error (device md0) in ext3_prepare_write: IO failure __journal_remove_journal_head: freeing b_committed_data journal commit I/O error fsx-linux[18273]: segfault at fffffffffffffffb rip 00002b6b16724da0 rsp 00007ffffff8f5e8 error 4 Thanks, Badari ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support2^32-1blocks(e2fsprogs) 2006-03-23 18:16 ` Badari Pulavarty @ 2006-03-24 1:54 ` Takashi Sato 0 siblings, 0 replies; 10+ messages in thread From: Takashi Sato @ 2006-03-24 1:54 UTC (permalink / raw) To: Badari Pulavarty; +Cc: lkml, ext2-devel Hi, Sorry, I'm very busy this week, so I'll look into it next week. >> Okay. I tested your patches and mkfs changes. >> >> I am able to create a >8TB filesystem and was able to >> mount it :) >> >> elm3b29:~ # df >> Filesystem 1K-blocks Used Available Use% Mounted on >> /dev/hda2 79366980 76545536 2821444 97% / >> tmpfs 3574032 8 3574024 1% /dev/shm >> /dev/md0 9833697924 131228 9677640816 1% /mnt >> >> I run single "fsx" tests and quickly ran into issues. fsx complained >> about data mismatch :( >> >> Here is the "dmesg" output: >> >> EXT3 FS on md0, internal journal >> EXT3-fs: mounted filesystem with ordered data mode. >> EXT3-fs error (device md0): ext3_new_block: Allocating block in system >> zone - block = 131072 >> Aborting journal on device md0. >> ext3_abort called. >> EXT3-fs error (device md0): ext3_journal_start_sb: Detected aborted >> journal >> Remounting filesystem read-only >> fsx-linux[15668]: segfault at fffffffffffffffb rip 00002b33b3eddda0 rsp >> 00007fffffef1e38 error 4 >> fsx-linux[15667]: segfault at fffffffffffffffb rip 00002b7736f5dda0 rsp >> 00007fffffb70da8 error 4 >> ext3_new_block: block was unexpectedly set in b_committed_data >> EXT3-fs error (device md0) in ext3_reserve_inode_write: Journal has >> aborted >> fsx-linux[15666]: segfault at fffffffffffffffb rip 00002b0582de6da0 rsp >> 00007fffffd24f18 error 4 >> fsx-linux[15669]: segfault at 00000000ffffffff rip 00002ad94d283da0 rsp >> 00007fffff95aa28 error 4 >> __journal_remove_journal_head: freeing b_committed_data >> __journal_remove_journal_head: freeing b_committed_data >> __journal_remove_journal_head: freeing b_committed_data > > More information. I ran the test with "-onoreservation" thinking that > the patch didn't address "reservation code" issues and I still ran > into block allocation problems. Hope this helps. > > EXT3 FS on md0, internal journal > EXT3-fs: mounted filesystem with ordered data mode. > EXT3-fs error (device md0): ext3_new_block: block(3304604584) >= blocks > count(2497616320) - block_group = 4, es == ffff8101dee44400 > Aborting journal on device md0. > ext3_abort called. > EXT3-fs error (device md0): ext3_journal_start_sb: Detected aborted > journal > Remounting filesystem read-only > fsx-linux[18270]: segfault at fffffffffffffffb rip 00002b9eae932da0 rsp > 00007fffffbf73d8 error 4 > fsx-linux[18271]: segfault at fffffffffffffffb rip 00002aafb6ebada0 rsp > 00007fffffaf0e58 error 4 > fsx-linux[18272]: segfault at fffffffffffffffb rip 00002abcc19b7da0 rsp > 00007fffffde6348 error 4 > EXT3-fs error (device md0) in ext3_prepare_write: IO failure > __journal_remove_journal_head: freeing b_committed_data > journal commit I/O error > fsx-linux[18273]: segfault at fffffffffffffffb rip 00002b6b16724da0 rsp > 00007ffffff8f5e8 error 4 > > > Thanks, > Badari > > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Ext2-devel mailing list > Ext2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/ext2-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) 2006-03-15 12:39 [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) Takashi Sato 2006-03-17 21:19 ` [Ext2-devel] " Badari Pulavarty @ 2006-03-19 2:44 ` Theodore Ts'o 1 sibling, 0 replies; 10+ messages in thread From: Theodore Ts'o @ 2006-03-19 2:44 UTC (permalink / raw) To: Takashi Sato; +Cc: ext2-devel, linux-kernel On Wed, Mar 15, 2006 at 09:39:41PM +0900, Takashi Sato wrote: > This makes it possible to make ext2/3 with 4G-1(2^32-1) blocks by mke2fs > in e2fsprogs-1.38. > > Signed-off-by: Takashi Sato sho@tnes.nec.co.jp I've checked in all but the lib/bitops.c change. I want to wait and confirm that it is really necessary before commiting it. - Ted ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2006-03-24 1:54 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-03-15 12:39 [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) Takashi Sato 2006-03-17 21:19 ` [Ext2-devel] " Badari Pulavarty 2006-03-18 5:57 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1blocks(e2fsprogs) Takashi Sato 2006-03-18 10:11 ` Andreas Dilger 2006-03-18 12:24 ` Theodore Ts'o 2006-03-18 13:17 ` Takashi Sato 2006-03-22 23:45 ` Badari Pulavarty 2006-03-23 18:16 ` Badari Pulavarty 2006-03-24 1:54 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support2^32-1blocks(e2fsprogs) Takashi Sato 2006-03-19 2:44 ` [Ext2-devel] [PATCH 2/2] ext2/3: Support 2^32-1 blocks(e2fsprogs) Theodore Ts'o
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.