OSDN Git Service

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
@@@ -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
@@@ -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
@@@ -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
@@@ -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