Whamcloud - gitweb
e2freefrag: fix "Illegal block number" errors with bigalloc file systems
authorRobin Dong <sanbai@taobao.com>
Sat, 12 Nov 2011 02:15:55 +0000 (21:15 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 12 Nov 2011 02:15:55 +0000 (21:15 -0500)
After:
# mke2fs -O ^has_journal,^resize_inode,^uninit_bg,extent,meta_bg,flex_bg,bigalloc /dev/sda
# e2freefrag /dev/sda

It will report error message like:

 Illegal block number passed to ext2fs_test_block_bitmap #1732133 for block bitmap for /dev/sda
 Illegal block number passed to ext2fs_test_block_bitmap #1732134 for block bitmap for /dev/sda
 Illegal block number passed to ext2fs_test_block_bitmap #1732135 for block bitmap for /dev/sda

One bit in bitmap of bigalloc-ext4 means a cluster not a block,
therefore ext2fs_fast_test_block_bitmap2 should check cluster.

Signed-off-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/e2freefrag.c

index b442f32..a09df6b 100644 (file)
@@ -121,7 +121,7 @@ void scan_block_bitmap(ext2_filsys fs, struct chunk_info *info)
                                chunk_start_blk = blk;
                        }
                        used = ext2fs_fast_test_block_bitmap2(fs->block_map,
-                                                            chunk_start_blk);
+                               chunk_start_blk >> fs->cluster_ratio_bits);
                        if (!used) {
                                last_chunk_size++;
                                chunk_free++;