Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Apr 2009 18:31:42 +0000
From:      aditya sarawgi <sarawgi.aditya@gmail.com>
To:        freebsd-fs@freebsd.org
Subject:   kern/131086 : [ext2fs] mkfs.ext2 creates rotten partition
Message-ID:  <994ac8b90904071131r9a9f06dm1e285ec0c3e58a11@mail.gmail.com>
In-Reply-To: <994ac8b90904071125t1190db74see39afbef9700e1b@mail.gmail.com>
References:  <994ac8b90904071125t1190db74see39afbef9700e1b@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Hi,

I have reproduced this bug and there is no problem with mkfs.ext2.
mkfs.ext2 has been updated to create partitions having default inode
size of 256 bytes which is not supported by ext2fs 7.1-RELEASE (it
supports only 128 bytes). This problem is similar to kern/124621,
       kern/125536 and kern/128173.

I'm attaching my mkfs.ext2 logs, dump of the file system and a patch
that has been committed to  8.0-CURRENT to fix this problem.

-- 
Cheers,
Aditya Sarawgi

[-- Attachment #2 --]
Filesystem label=
OS type: FreeBSD
Block size=4096 (log=2)
Fragment size=4096 (log=2)
245280 inodes, 979960 blocks
48998 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables:  0/30 1/30 2/30 3/30 4/30 5/30 6/30 7/30 8/30 9/3010/3011/3012/3013/3014/3015/3016/3017/3018/3019/3020/3021/3022/3023/3024/3025/3026/3027/3028/3029/30done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[-- Attachment #3 --]
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          c1658ff3-288c-469f-ba6d-dcd29e70e5d1
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       FreeBSD
Inode count:              245280
Block count:              979960
Reserved block count:     48998
Free blocks:              962636
Free inodes:              245269
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      239
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8176
Inode blocks per group:   511
Filesystem created:       Tue Apr  7 23:14:02 2009
Last mount time:          n/a
Last write time:          Tue Apr  7 23:14:52 2009
Mount count:              0
Maximum mount count:      22
Last checked:             Tue Apr  7 23:14:02 2009
Check interval:           15552000 (6 months)
Next check after:         Sun Oct  4 23:14:02 2009
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group wheel)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
Directory Hash Seed:      1dfec28a-c0a2-472f-821d-55445e0b8130


Group 0: (Blocks 0-32767)
  Primary superblock at 0, Group descriptors at 1-1
  Reserved GDT blocks at 2-240
  Block bitmap at 241 (+241), Inode bitmap at 242 (+242)
  Inode table at 243-753 (+243)
  32008 free blocks, 8165 free inodes, 2 directories
  Free blocks: 760-32767
  Free inodes: 12-8176
Group 1: (Blocks 32768-65535)
  Backup superblock at 32768, Group descriptors at 32769-32769
  Reserved GDT blocks at 32770-33008
  Block bitmap at 33009 (+241), Inode bitmap at 33010 (+242)
  Inode table at 33011-33521 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 33522-65535
  Free inodes: 8177-16352
Group 2: (Blocks 65536-98303)
  Block bitmap at 65536 (+0), Inode bitmap at 65537 (+1)
  Inode table at 65538-66048 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 66049-98303
  Free inodes: 16353-24528
Group 3: (Blocks 98304-131071)
  Backup superblock at 98304, Group descriptors at 98305-98305
  Reserved GDT blocks at 98306-98544
  Block bitmap at 98545 (+241), Inode bitmap at 98546 (+242)
  Inode table at 98547-99057 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 99058-131071
  Free inodes: 24529-32704
Group 4: (Blocks 131072-163839)
  Block bitmap at 131072 (+0), Inode bitmap at 131073 (+1)
  Inode table at 131074-131584 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 131585-163839
  Free inodes: 32705-40880
Group 5: (Blocks 163840-196607)
  Backup superblock at 163840, Group descriptors at 163841-163841
  Reserved GDT blocks at 163842-164080
  Block bitmap at 164081 (+241), Inode bitmap at 164082 (+242)
  Inode table at 164083-164593 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 164594-196607
  Free inodes: 40881-49056
Group 6: (Blocks 196608-229375)
  Block bitmap at 196608 (+0), Inode bitmap at 196609 (+1)
  Inode table at 196610-197120 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 197121-229375
  Free inodes: 49057-57232
Group 7: (Blocks 229376-262143)
  Backup superblock at 229376, Group descriptors at 229377-229377
  Reserved GDT blocks at 229378-229616
  Block bitmap at 229617 (+241), Inode bitmap at 229618 (+242)
  Inode table at 229619-230129 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 230130-262143
  Free inodes: 57233-65408
Group 8: (Blocks 262144-294911)
  Block bitmap at 262144 (+0), Inode bitmap at 262145 (+1)
  Inode table at 262146-262656 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 262657-294911
  Free inodes: 65409-73584
Group 9: (Blocks 294912-327679)
  Backup superblock at 294912, Group descriptors at 294913-294913
  Reserved GDT blocks at 294914-295152
  Block bitmap at 295153 (+241), Inode bitmap at 295154 (+242)
  Inode table at 295155-295665 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 295666-327679
  Free inodes: 73585-81760
Group 10: (Blocks 327680-360447)
  Block bitmap at 327680 (+0), Inode bitmap at 327681 (+1)
  Inode table at 327682-328192 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 328193-360447
  Free inodes: 81761-89936
Group 11: (Blocks 360448-393215)
  Block bitmap at 360448 (+0), Inode bitmap at 360449 (+1)
  Inode table at 360450-360960 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 360961-393215
  Free inodes: 89937-98112
Group 12: (Blocks 393216-425983)
  Block bitmap at 393216 (+0), Inode bitmap at 393217 (+1)
  Inode table at 393218-393728 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 393729-425983
  Free inodes: 98113-106288
Group 13: (Blocks 425984-458751)
  Block bitmap at 425984 (+0), Inode bitmap at 425985 (+1)
  Inode table at 425986-426496 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 426497-458751
  Free inodes: 106289-114464
Group 14: (Blocks 458752-491519)
  Block bitmap at 458752 (+0), Inode bitmap at 458753 (+1)
  Inode table at 458754-459264 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 459265-491519
  Free inodes: 114465-122640
Group 15: (Blocks 491520-524287)
  Block bitmap at 491520 (+0), Inode bitmap at 491521 (+1)
  Inode table at 491522-492032 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 492033-524287
  Free inodes: 122641-130816
Group 16: (Blocks 524288-557055)
  Block bitmap at 524288 (+0), Inode bitmap at 524289 (+1)
  Inode table at 524290-524800 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 524801-557055
  Free inodes: 130817-138992
Group 17: (Blocks 557056-589823)
  Block bitmap at 557056 (+0), Inode bitmap at 557057 (+1)
  Inode table at 557058-557568 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 557569-589823
  Free inodes: 138993-147168
Group 18: (Blocks 589824-622591)
  Block bitmap at 589824 (+0), Inode bitmap at 589825 (+1)
  Inode table at 589826-590336 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 590337-622591
  Free inodes: 147169-155344
Group 19: (Blocks 622592-655359)
  Block bitmap at 622592 (+0), Inode bitmap at 622593 (+1)
  Inode table at 622594-623104 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 623105-655359
  Free inodes: 155345-163520
Group 20: (Blocks 655360-688127)
  Block bitmap at 655360 (+0), Inode bitmap at 655361 (+1)
  Inode table at 655362-655872 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 655873-688127
  Free inodes: 163521-171696
Group 21: (Blocks 688128-720895)
  Block bitmap at 688128 (+0), Inode bitmap at 688129 (+1)
  Inode table at 688130-688640 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 688641-720895
  Free inodes: 171697-179872
Group 22: (Blocks 720896-753663)
  Block bitmap at 720896 (+0), Inode bitmap at 720897 (+1)
  Inode table at 720898-721408 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 721409-753663
  Free inodes: 179873-188048
Group 23: (Blocks 753664-786431)
  Block bitmap at 753664 (+0), Inode bitmap at 753665 (+1)
  Inode table at 753666-754176 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 754177-786431
  Free inodes: 188049-196224
Group 24: (Blocks 786432-819199)
  Block bitmap at 786432 (+0), Inode bitmap at 786433 (+1)
  Inode table at 786434-786944 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 786945-819199
  Free inodes: 196225-204400
Group 25: (Blocks 819200-851967)
  Backup superblock at 819200, Group descriptors at 819201-819201
  Reserved GDT blocks at 819202-819440
  Block bitmap at 819441 (+241), Inode bitmap at 819442 (+242)
  Inode table at 819443-819953 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 819954-851967
  Free inodes: 204401-212576
Group 26: (Blocks 851968-884735)
  Block bitmap at 851968 (+0), Inode bitmap at 851969 (+1)
  Inode table at 851970-852480 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 852481-884735
  Free inodes: 212577-220752
Group 27: (Blocks 884736-917503)
  Backup superblock at 884736, Group descriptors at 884737-884737
  Reserved GDT blocks at 884738-884976
  Block bitmap at 884977 (+241), Inode bitmap at 884978 (+242)
  Inode table at 884979-885489 (+243)
  32014 free blocks, 8176 free inodes, 0 directories
  Free blocks: 885490-917503
  Free inodes: 220753-228928
Group 28: (Blocks 917504-950271)
  Block bitmap at 917504 (+0), Inode bitmap at 917505 (+1)
  Inode table at 917506-918016 (+2)
  32255 free blocks, 8176 free inodes, 0 directories
  Free blocks: 918017-950271
  Free inodes: 228929-237104
Group 29: (Blocks 950272-979959)
  Block bitmap at 950272 (+0), Inode bitmap at 950273 (+1)
  Inode table at 950274-950784 (+2)
  29175 free blocks, 8176 free inodes, 0 directories
  Free blocks: 950785-979959
  Free inodes: 237105-245280

[-- Attachment #4 --]
diff -ud ext2fs.orig/ext2_fs.h ext2fs/ext2_fs.h
--- ext2fs.orig/ext2_fs.h	2005-06-16 06:51:38.000000000 +0000
+++ ext2fs/ext2_fs.h	2008-09-03 14:10:27.000000000 +0000
@@ -150,7 +150,7 @@
 #else /* !notyet */
 #define	EXT2_INODES_PER_BLOCK(s)	((s)->s_inodes_per_block)
 /* Should be sizeof(struct ext2_inode): */
-#define EXT2_INODE_SIZE			128
+#define EXT2_INODE_SIZE(s)		((s)->s_es->s_inode_size)
 #define EXT2_FIRST_INO			11
 #endif /* notyet */
 
diff -ud ext2fs.orig/ext2_inode.c ext2fs/ext2_inode.c
--- ext2fs.orig/ext2_inode.c	2006-09-26 04:15:58.000000000 +0000
+++ ext2fs/ext2_inode.c	2008-09-03 13:54:49.000000000 +0000
@@ -91,7 +91,7 @@
 		return (error);
 	}
 	ext2_i2ei(ip, (struct ext2_inode *)((char *)bp->b_data +
-	    EXT2_INODE_SIZE * ino_to_fsbo(fs, ip->i_number)));
+	    EXT2_INODE_SIZE(fs) * ino_to_fsbo(fs, ip->i_number)));
 	if (waitfor && (vp->v_mount->mnt_kern_flag & MNTK_ASYNC) == 0)
 		return (bwrite(bp));
 	else {
diff -ud ext2fs.orig/ext2_vfsops.c ext2fs/ext2_vfsops.c
--- ext2fs.orig/ext2_vfsops.c	2008-04-03 18:51:13.000000000 +0000
+++ ext2fs/ext2_vfsops.c	2008-09-03 13:55:37.000000000 +0000
@@ -424,7 +424,7 @@
     V(s_frags_per_group)
     fs->s_inodes_per_group = es->s_inodes_per_group;
     V(s_inodes_per_group)
-    fs->s_inodes_per_block = fs->s_blocksize / EXT2_INODE_SIZE;
+    fs->s_inodes_per_block = fs->s_blocksize / EXT2_INODE_SIZE(fs);
     V(s_inodes_per_block)
     fs->s_itb_per_group = fs->s_inodes_per_group /fs->s_inodes_per_block;
     V(s_itb_per_group)
@@ -578,7 +578,7 @@
 			return (error);
 		}
 		ext2_ei2i((struct ext2_inode *) ((char *)bp->b_data +
-		    EXT2_INODE_SIZE * ino_to_fsbo(fs, ip->i_number)), ip);
+		    EXT2_INODE_SIZE(fs) * ino_to_fsbo(fs, ip->i_number)), ip);
 		brelse(bp);
 		VOP_UNLOCK(vp, 0, td);
 		vrele(vp);
@@ -1013,7 +1013,7 @@
 		return (error);
 	}
 	/* convert ext2 inode to dinode */
-	ext2_ei2i((struct ext2_inode *) ((char *)bp->b_data + EXT2_INODE_SIZE *
+	ext2_ei2i((struct ext2_inode *) ((char *)bp->b_data + EXT2_INODE_SIZE(fs) *
 			ino_to_fsbo(fs, ino)), ip);
 	ip->i_block_group = ino_to_cg(fs, ino);
 	ip->i_next_alloc_block = 0;

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?994ac8b90904071131r9a9f06dm1e285ec0c3e58a11>