]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Mon, 7 Jun 2010 16:42:40 +0000 (12:42 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 7 Jun 2010 16:42:40 +0000 (12:42 -0400)
Conflicts:
e2fsck/journal.c
e2fsck/pass1.c
e2fsck/pass2.c
misc/mke2fs.c

57 files changed:
1  2 
configure
configure.in
e2fsck/Makefile.in
e2fsck/journal.c
e2fsck/pass1.c
e2fsck/pass2.c
e2fsck/super.c
e2fsck/unix.c
lib/e2p/e2p.h
lib/e2p/ls.c
lib/e2p/parse_num.c
lib/ext2fs/Makefile.in
lib/ext2fs/alloc.c
lib/ext2fs/alloc_sb.c
lib/ext2fs/alloc_stats.c
lib/ext2fs/alloc_tables.c
lib/ext2fs/bb_inode.c
lib/ext2fs/bitmaps.c
lib/ext2fs/bitops.c
lib/ext2fs/bitops.h
lib/ext2fs/block.c
lib/ext2fs/bmove.c
lib/ext2fs/check_desc.c
lib/ext2fs/closefs.c
lib/ext2fs/csum.c
lib/ext2fs/dblist.c
lib/ext2fs/dirblock.c
lib/ext2fs/expanddir.c
lib/ext2fs/ext2_fs.h
lib/ext2fs/ext2_io.h
lib/ext2fs/ext2fs.h
lib/ext2fs/ext2fsP.h
lib/ext2fs/ext_attr.c
lib/ext2fs/extent.c
lib/ext2fs/fiemap.h
lib/ext2fs/fileio.c
lib/ext2fs/gen_bitmap.c
lib/ext2fs/icount.c
lib/ext2fs/imager.c
lib/ext2fs/initialize.c
lib/ext2fs/inode.c
lib/ext2fs/mkdir.c
lib/ext2fs/mkjournal.c
lib/ext2fs/openfs.c
lib/ext2fs/rw_bitmaps.c
lib/ext2fs/swapfs.c
lib/ext2fs/tst_badblocks.c
lib/ext2fs/tst_bitops.c
lib/ext2fs/tst_iscan.c
lib/ext2fs/undo_io.c
lib/ext2fs/valid_blk.c
misc/Makefile.in
misc/mke2fs.c
misc/tune2fs.c
misc/util.c
resize/main.c
tests/f_bad_disconnected_inode/expect.1

diff --cc configure
Simple merge
diff --cc configure.in
Simple merge
Simple merge
index 57783ebbfa943177b8ef801dacc8a0c41126880f,64a0fd627ba4356e0bbcdc195493cfda22c514b0..c2f8951a215acb177d7087ad3ed6c46b245a4150
@@@ -214,8 -214,8 +214,8 @@@ static int process_journal_block(ext2_f
  
        p = (struct process_block_struct *) priv_data;
  
-       if (blk < fs->super->s_first_data_block ||
+       if (!blk || blk < fs->super->s_first_data_block ||
 -          blk >= fs->super->s_blocks_count)
 +          blk >= ext2fs_blocks_count(fs->super))
                return BLOCK_ABORT;
  
        if (blockcnt >= 0)
diff --cc e2fsck/pass1.c
index 3c6f91ce34bc05e79e718f66c752ce53656cf312,4bf80d255f9e2f8bcef264c1dc9a811b398b25bb..ade5ff654e51ffa0d3e7d1181271644e4e58422c
@@@ -1690,8 -1694,9 +1695,9 @@@ static void scan_extent_node(e2fsck_t c
                is_dir = LINUX_S_ISDIR(pctx->inode->i_mode);
  
                problem = 0;
-               if (extent.e_pblk < ctx->fs->super->s_first_data_block ||
+               if (extent.e_pblk == 0 ||
+                   extent.e_pblk < ctx->fs->super->s_first_data_block ||
 -                  extent.e_pblk >= ctx->fs->super->s_blocks_count)
 +                  extent.e_pblk >= ext2fs_blocks_count(ctx->fs->super))
                        problem = PR_1_EXTENT_BAD_START_BLK;
                else if (extent.e_lblk < start_block)
                        problem = PR_1_OUT_OF_ORDER_EXTENTS;
diff --cc e2fsck/pass2.c
index 29a0174a471346a3e0beaaf958fde9fe7034ce36,2847901b4caa7a674dec7b76db980d62d9156d50..1300e3874da01580da281b9d0946b8b873782b51
@@@ -1007,13 -1007,18 +1007,18 @@@ out_htree
                        }
                }
  
-               if (!(ext2fs_test_inode_bitmap2(ctx->inode_used_map,
-                                              dirent->inode))) {
-                       /*
-                        * If the inode is unused, offer to clear it.
-                        */
+               /* 
+                * Offer to clear unused inodes; if we are going to be
+                * restarting the scan due to bg_itable_unused being
+                * wrong, then don't clear any inodes to avoid zapping
+                * inodes that were skipped during pass1 due to an
+                * incorrect bg_itable_unused; we'll get any real
+                * problems after we restart.
+                */
+               if (!(ctx->flags & E2F_FLAG_RESTART_LATER) &&
 -                  !(ext2fs_test_inode_bitmap(ctx->inode_used_map,
 -                                             dirent->inode)))
++                  !(ext2fs_test_inode_bitmap2(ctx->inode_used_map,
++                                              dirent->inode)))
                        problem = PR_2_UNUSED_INODE;
-               }
  
                if (problem) {
                        if (fix_problem(ctx, problem, &cd->pctx)) {
diff --cc e2fsck/super.c
Simple merge
diff --cc e2fsck/unix.c
Simple merge
diff --cc lib/e2p/e2p.h
Simple merge
diff --cc lib/e2p/ls.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc misc/mke2fs.c
index 022c12cb6c45984ca4f630d1b564f782acf35351,ac87b8ec9cea5f0df6f14b699ffc6facf7f1e37a..ca39d905bedc5cd371babd9faafda6b808879df7
@@@ -1617,9 -1679,20 +1626,22 @@@ got_size
                if ((blocksize < 0) && (use_bsize < (-blocksize)))
                        use_bsize = -blocksize;
                blocksize = use_bsize;
 -              fs_param.s_blocks_count /= blocksize / 1024;
 +              ext2fs_blocks_count_set(&fs_param,
 +                                      ext2fs_blocks_count(&fs_param) /
 +                                      (blocksize / 1024));
+       } else {
+               if (blocksize < lsector_size ||                 /* Impossible */
+                   (!force && (blocksize < psector_size))) {   /* Suboptimal */
+                       com_err(program_name, EINVAL,
+                               _("while setting blocksize; too small "
+                                 "for device\n"));
+                       exit(1);
+               } else if (blocksize < psector_size) {
+                       fprintf(stderr, _("Warning: specified blocksize %d is "
+                               "less than device physical sectorsize %d, "
+                               "forced to continue\n"), blocksize,
+                               psector_size);
+               }
        }
  
        if (inode_ratio == 0) {
diff --cc misc/tune2fs.c
Simple merge
diff --cc misc/util.c
Simple merge
diff --cc resize/main.c
Simple merge