]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Sun, 13 Oct 2013 02:26:28 +0000 (22:26 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 13 Oct 2013 02:26:28 +0000 (22:26 -0400)
Conflicts:
e2fsck/problem.c
e2fsck/rehash.c
e2fsck/super.c

25 files changed:
1  2 
debugfs/logdump.c
debugfs/set_fields.c
e2fsck/Makefile.in
e2fsck/e2fsck.h
e2fsck/journal.c
e2fsck/message.c
e2fsck/pass1.c
e2fsck/pass3.c
e2fsck/problem.c
e2fsck/problem.h
e2fsck/rehash.c
e2fsck/super.c
e2fsck/unix.c
e2fsck/util.c
lib/ext2fs/Makefile.in
lib/ext2fs/closefs.c
lib/ext2fs/ext2fs.h
lib/ext2fs/ext2fsP.h
lib/ext2fs/inode.c
lib/ext2fs/link.c
lib/ext2fs/openfs.c
misc/dumpe2fs.c
misc/mke2fs.c
misc/tune2fs.c
resize/resize2fs.c

Simple merge
Simple merge
Simple merge
diff --cc e2fsck/e2fsck.h
Simple merge
Simple merge
Simple merge
diff --cc e2fsck/pass1.c
Simple merge
diff --cc e2fsck/pass3.c
Simple merge
index b0a6e193599225b4c47308dc6ff89de18c6c8b22,66e2e05ba98838291181e4a04eee6b2fcba90cf9..897693a7fd821a4fa793f8ab1a5af45526cfc919
@@@ -433,20 -433,11 +433,25 @@@ static struct e2fsck_problem problem_ta
          N_("ext2fs_check_desc: %m\n"),
          PROMPT_NONE, 0 },
  
 +      /*
 +       * metadata_csum implies uninit_bg; both feature bits cannot
 +       * be set simultaneously.
 +       */
 +      { PR_0_META_AND_GDT_CSUM_SET,
 +        N_("@S metadata_csum supersedes uninit_bg; both feature "
 +           "bits cannot be set simultaneously."),
 +        PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
 +
 +      /* Superblock has invalid MMP checksum. */
 +      { PR_0_MMP_CSUM_INVALID,
 +        N_("@S MMP block checksum does not match MMP block.  "),
 +        PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
 +
+       /* 64bit is set but extents is unset. */
+       { PR_0_64BIT_WITHOUT_EXTENTS,
+         N_("@S 64bit filesystems needs extents to access the whole disk.  "),
+         PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
        /* Pass 1 errors */
  
        /* Pass 1: Checking inodes, blocks, and sizes */
index fcdc1a137c0c56f08b27333091be00c89e793c85,4e7c9cd1f14e9c72560551bf99ee08c391049dbd..ae1ed26212bbf958419cdc53e6685c161fa8801c
@@@ -249,16 -249,9 +249,19 @@@ struct problem_context 
  /* Checking group descriptor failed */
  #define PR_0_CHECK_DESC_FAILED                        0x000045
  
+ /* 64bit is set but extents are not set. */
+ #define PR_0_64BIT_WITHOUT_EXTENTS            0x000048
 +/*
 + * metadata_csum supersedes uninit_bg; both feature bits cannot be set
 + * simultaneously.
 + */
 +#define PR_0_META_AND_GDT_CSUM_SET            0x000046
 +
 +/* Superblock has invalid MMP checksum. */
 +#define PR_0_MMP_CSUM_INVALID                 0x000047
 +
 +
  /*
   * Pass 1 errors
   */
diff --cc e2fsck/rehash.c
index c1c74c8448a0383fde9990394c50c7ebae1bad1d,9dbdb3bebd4e218292f227dca734959715f24ed7..6ef356862be5a1edfd2c3db8e39cb60507b15a84
@@@ -684,8 -626,7 +684,8 @@@ struct write_dir_struct 
        struct out_dir *outdir;
        errcode_t       err;
        e2fsck_t        ctx;
-       int             cleared;
+       blk64_t         cleared;
 +      ext2_ino_t      dir;
  };
  
  /*
diff --cc e2fsck/super.c
index 16a1c23d7472eff132c9e038d72152e5eb55e51e,352f16df80b2609dac497583d853d19974ec72d9..5d470d8dceba907e01e8349b19649a668a8ed41d
@@@ -582,19 -582,17 +582,30 @@@ void check_super_block(e2fsck_t ctx
                }
        }
  
 +      /* Are metadata_csum and uninit_bg both set? */
 +      if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
 +                                     EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) &&
 +          EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
 +                                     EXT4_FEATURE_RO_COMPAT_GDT_CSUM) &&
 +          fix_problem(ctx, PR_0_META_AND_GDT_CSUM_SET, &pctx)) {
 +              fs->super->s_feature_ro_compat &=
 +                      ~EXT4_FEATURE_RO_COMPAT_GDT_CSUM;
 +              ext2fs_mark_super_dirty(fs);
 +              for (i = 0; i < fs->group_desc_count; i++)
 +                      ext2fs_group_desc_csum_set(fs, i);
 +      }
 +
+       /* Is 64bit set and extents unset? */
+       if (EXT2_HAS_INCOMPAT_FEATURE(fs->super,
+                                     EXT4_FEATURE_INCOMPAT_64BIT) &&
+           !EXT2_HAS_INCOMPAT_FEATURE(fs->super,
+                                      EXT3_FEATURE_INCOMPAT_EXTENTS) &&
+           fix_problem(ctx, PR_0_64BIT_WITHOUT_EXTENTS, &pctx)) {
+               fs->super->s_feature_incompat |=
+                       EXT3_FEATURE_INCOMPAT_EXTENTS;
+               ext2fs_mark_super_dirty(fs);
+       }
        /*
         * Verify the group descriptors....
         */
diff --cc e2fsck/unix.c
Simple merge
diff --cc e2fsck/util.c
Simple merge
Simple merge
index 157cbbeb55bad4809821bd2712a1a9ef27f88816,3a804240c0074e40bbc8fda0df4b67088920d30b..db0563708701a891a0f3ea3cbe34c2ef2b147e3d
@@@ -244,10 -244,9 +244,10 @@@ void ext2fs_update_dynamic_rev(ext2_fil
  }
  
  static errcode_t write_backup_super(ext2_filsys fs, dgrp_t group,
-                                   blk_t group_block,
+                                   blk64_t group_block,
                                    struct ext2_super_block *super_shadow)
  {
 +      errcode_t retval;
        dgrp_t  sgrp = group;
  
        if (sgrp > ((1 << 16) - 1))
Simple merge
Simple merge
Simple merge
index f7150674f8843b6b436290cd027863e567d06c76,2f4f54a3514bb0ba323757da66b216376758c3cf..e3ff4504c6bbbb50ac466ff0d7054cf2115f4789
@@@ -41,7 -41,9 +41,10 @@@ static int link_proc(struct ext2_dir_en
        struct ext2_dir_entry *next;
        unsigned int rec_len, min_rec_len, curr_rec_len;
        int ret = 0;
 +      int csum_size = 0;
+       if (ls->done)
+               return 0;
  
        rec_len = EXT2_DIR_REC_LEN(ls->namelen);
  
Simple merge
diff --cc misc/dumpe2fs.c
Simple merge
diff --cc misc/mke2fs.c
Simple merge
diff --cc misc/tune2fs.c
Simple merge
Simple merge