Whamcloud - gitweb
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Wed, 3 Dec 2014 03:15:25 +0000 (22:15 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 3 Dec 2014 03:15:25 +0000 (22:15 -0500)
debugfs/quota.c
lib/ext2fs/alloc_stats.c
lib/ext2fs/bmap.c
misc/dumpe2fs.c
misc/mk_hugefiles.c
misc/tune2fs.c
tests/m_hugefile_slack/expect [new file with mode: 0644]
tests/m_hugefile_slack/name [new file with mode: 0644]
tests/m_hugefile_slack/script [new file with mode: 0644]

index 5589c1a..9612f64 100644 (file)
@@ -36,7 +36,7 @@ static int load_quota_ctx(char *progname)
 
        if (!EXT2_HAS_RO_COMPAT_FEATURE(current_fs->super,
                                        EXT4_FEATURE_RO_COMPAT_QUOTA)) {
-               com_err(progname, 0, "quota feature not eanbled");
+               com_err(progname, 0, "quota feature not enabled");
                return 1;
        }
 
index 3d3697c..aca5004 100644 (file)
@@ -20,13 +20,13 @@ void ext2fs_inode_alloc_stats2(ext2_filsys fs, ext2_ino_t ino,
 {
        int     group = ext2fs_group_of_ino(fs, ino);
 
-#ifndef OMIT_COM_ERR
        if (ino > fs->super->s_inodes_count) {
+#ifndef OMIT_COM_ERR
                com_err("ext2fs_inode_alloc_stats2", 0,
                        "Illegal inode number: %lu", (unsigned long) ino);
+#endif
                return;
        }
-#endif
        if (inuse > 0)
                ext2fs_mark_inode_bitmap2(fs->inode_map, ino);
        else
@@ -62,13 +62,13 @@ void ext2fs_block_alloc_stats2(ext2_filsys fs, blk64_t blk, int inuse)
 {
        int     group = ext2fs_group_of_blk2(fs, blk);
 
-#ifndef OMIT_COM_ERR
        if (blk >= ext2fs_blocks_count(fs->super)) {
+#ifndef OMIT_COM_ERR
                com_err("ext2fs_block_alloc_stats", 0,
                        "Illegal block number: %lu", (unsigned long) blk);
+#endif
                return;
        }
-#endif
        if (inuse > 0)
                ext2fs_mark_block_bitmap2(fs->block_map, blk);
        else
index c1d0e6f..f819e9c 100644 (file)
@@ -67,7 +67,7 @@ static _BMAP_INLINE_ errcode_t block_ind_bmap(ext2_filsys fs, int flags,
 #endif
 
        if (!b && (flags & BMAP_ALLOC)) {
-               b = nr ? ((blk_t *) block_buf)[nr-1] : 0;
+               b = nr ? ext2fs_le32_to_cpu(((blk_t *)block_buf)[nr - 1]) : ind;
                retval = ext2fs_alloc_block(fs, b,
                                            block_buf + fs->blocksize, &b);
                if (retval)
index e565f2d..26f2e37 100644 (file)
@@ -656,7 +656,7 @@ int main (int argc, char ** argv)
                        usage();
                }
        }
-       if (argc - 1 > optind) {
+       if (optind != argc - 1) {
                usage();
                exit(1);
        }
index 3e4274c..230844f 100644 (file)
@@ -437,7 +437,6 @@ static blk64_t get_start_block(ext2_filsys fs, blk64_t slack)
                                                blk, last_blk, &next);
                if (retval)
                        next = last_blk;
-               next--;
 
                if (next - blk > slack) {
                        blk += slack;
index 7fee870..065b483 100644 (file)
@@ -2147,6 +2147,7 @@ static int inode_scan_and_fix(ext2_filsys fs, ext2fs_block_bitmap bmap)
 
 err_out:
        ext2fs_free_mem(&block_buf);
+       ext2fs_close_inode_scan(scan);
 
        return retval;
 }
diff --git a/tests/m_hugefile_slack/expect b/tests/m_hugefile_slack/expect
new file mode 100644 (file)
index 0000000..96a628a
--- /dev/null
@@ -0,0 +1,18 @@
+tune2fs test
+Creating filesystem with 786432 1k blocks and 98304 inodes
+Superblock backups stored on blocks: 
+       8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553
+
+Allocating group tables:      \b\b\b\b\bdone                            
+Writing inode tables:      \b\b\b\b\bdone                            
+Creating journal (16384 blocks): done
+Creating 6368 huge file(s) with 117 blocks each: done
+Writing superblocks and filesystem accounting information:      \b\b\b\b\bdone
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+Exit status is 0
diff --git a/tests/m_hugefile_slack/name b/tests/m_hugefile_slack/name
new file mode 100644 (file)
index 0000000..8d51fd6
--- /dev/null
@@ -0,0 +1 @@
+mke2fs creating a hugefile fs with a lot of slack
diff --git a/tests/m_hugefile_slack/script b/tests/m_hugefile_slack/script
new file mode 100644 (file)
index 0000000..eecb2d7
--- /dev/null
@@ -0,0 +1,61 @@
+if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_EXE; then
+
+FSCK_OPT=-fn
+OUT=$test_name.log
+EXP=$test_dir/expect
+CONF=$TMPFILE.conf
+
+#gzip -d < $EXP.gz > $EXP
+
+cat > $CONF << ENDL
+[fs_types]
+       ext4h = {
+               features = has_journal,extent,huge_file,uninit_bg,dir_nlink,extra_isize,sparse_super,filetype,dir_index,ext_attr,^resize_inode,^meta_bg,^flex_bg,64bit
+               blocksize = 1024
+               inode_size = 256
+               make_hugefiles = true
+               hugefiles_dir = /
+               hugefiles_slack = 12000K
+               hugefiles_name = aaaaa
+               hugefiles_digits = 4
+               hugefiles_size = 117K
+               zero_hugefiles = false
+       }
+ENDL
+
+echo "tune2fs test" > $OUT
+
+MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h -I 128 $TMPFILE 786432 >> $OUT 2>&1
+rm -rf $CONF
+
+# dump and check. if we get this far, we succeeded...
+$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1
+status=$?
+echo Exit status is $status >> $OUT
+
+rm $TMPFILE
+
+#
+# Do the verification
+#
+
+sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" -e 's/test_filesys:.*//g' < $OUT > $OUT.new
+mv $OUT.new $OUT
+
+cmp -s $OUT $EXP
+status=$?
+
+if [ "$status" = 0 ] ; then
+       echo "$test_name: $test_description: ok"
+       touch $test_name.ok
+else
+       echo "$test_name: $test_description: failed"
+       diff $DIFF_OPTS $EXP $OUT > $test_name.failed
+fi
+
+unset IMAGE FSCK_OPT OUT EXP CONF
+
+else #if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_EXE; then
+       echo "$test_name: $test_description: skipped"
+fi
+