Whamcloud - gitweb
Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Sat, 20 Jun 2015 02:01:16 +0000 (22:01 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 20 Jun 2015 02:01:16 +0000 (22:01 -0400)
1  2 
debugfs/Makefile.in
debugfs/set_fields.c
misc/filefrag.c
misc/mke2fs.8.in
misc/mke2fs.c
misc/tune2fs.c

@@@ -156,9 -127,16 +157,17 @@@ clean:
  mostlyclean: clean
  distclean: clean
        $(RM) -f debug_cmds.c .depend Makefile $(srcdir)/TAGS \
 -              $(srcdir)/Makefile.in.old
 +              $(srcdir)/Makefile.in.old $(srcdir)/recovery.c \
 +              $(srcdir)/revoke.c
  
+ tst_set_fields: set_fields.c util.c
+       $(E) "  LD $@"
+       $(Q) $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(SYSLIBS) -DUNITTEST \
+               -o tst_set_fields $(srcdir)/set_fields.c $(srcdir)/util.c $(LIBS)
+ check:: tst_set_fields
+       $(TESTENV) ./tst_set_fields
  # +++ Dependency line eater +++
  # 
  # Makefile dependencies follow.  This must be the last section in
@@@ -165,11 -163,7 +165,11 @@@ static struct field_set_info super_fiel
        { "last_error_ino", &set_sb.s_last_error_ino, NULL, 4, parse_uint },
        { "last_error_block", &set_sb.s_last_error_block, NULL, 8, parse_uint },
        { "last_error_func", &set_sb.s_last_error_func, NULL, 32, parse_string },
-       { "last_error_line", &set_sb.s_last_error_ino, NULL, 4, parse_uint },
+       { "last_error_line", &set_sb.s_last_error_line, NULL, 4, parse_uint },
 +      { "encrypt_algos", &set_sb.s_encrypt_algos, NULL, 1, parse_uint,
 +        FLAG_ARRAY, 4 },
 +      { "encrypt_pw_salt", &set_sb.s_encrypt_pw_salt, NULL, 16, parse_uuid },
 +      { "lpf_ino", &set_sb.s_lpf_ino, NULL, 4, parse_uint },
        { 0, 0, 0, 0 }
  };
  
@@@ -274,9 -269,60 +275,61 @@@ static struct field_set_info mmp_fields
        { "bdevname", &set_mmp.mmp_bdevname, NULL, sizeof(set_mmp.mmp_bdevname),
                parse_string },
        { "check_interval", &set_mmp.mmp_check_interval, NULL, 2, parse_uint },
 +      { "checksum", &set_mmp.mmp_checksum, NULL, 4, parse_uint },
+       { 0, 0, 0, 0 }
  };
  
+ #ifdef UNITTEST
+ static void do_verify_field_set_info(struct field_set_info *fields,
+               const void *data, size_t size)
+ {
+       struct field_set_info *ss, *ss2;
+       const char *begin = (char *)data;
+       const char *end = begin + size;
+       for (ss = fields ; ss->name ; ss++) {
+               const char *ptr;
+               /* Check pointers */
+               ptr = ss->ptr;
+               assert(!ptr || (ptr >= begin && ptr < end));
+               ptr = ss->ptr2;
+               assert(!ptr || (ptr >= begin && ptr < end));
+               /* Check function */
+               assert(ss->func);
+               for (ss2 = fields ; ss2 != ss ; ss2++) {
+                       /* Check duplicate names */
+                       assert(strcmp(ss->name, ss2->name));
+                       if (ss->flags & FLAG_ALIAS || ss2->flags & FLAG_ALIAS)
+                               continue;
+                       /* Check false aliases, might be copy-n-paste error */
+                       assert(!ss->ptr || (ss->ptr != ss2->ptr &&
+                                           ss->ptr != ss2->ptr2));
+                       assert(!ss->ptr2 || (ss->ptr2 != ss2->ptr &&
+                                            ss->ptr2 != ss2->ptr2));
+               }
+       }
+ }
+ int main(int argc, char **argv)
+ {
+       do_verify_field_set_info(super_fields, &set_sb, sizeof(set_sb));
+       do_verify_field_set_info(inode_fields, &set_inode, sizeof(set_inode));
+       do_verify_field_set_info(ext2_bg_fields, &set_gd, sizeof(set_gd));
+       do_verify_field_set_info(ext4_bg_fields, &set_gd4, sizeof(set_gd4));
+       do_verify_field_set_info(mmp_fields, &set_mmp, sizeof(set_mmp));
+       return 0;
+ }
+ ext2_filsys current_fs;
+ ext2_ino_t root, cwd;
+ #endif /* UNITTEST */
  static int check_suffix(const char *field)
  {
        int len = strlen(field);
diff --cc misc/filefrag.c
Simple merge
Simple merge
diff --cc misc/mke2fs.c
Simple merge
diff --cc misc/tune2fs.c
@@@ -2964,10 -2279,11 +2964,10 @@@ retry_open
        if (U_flag) {
                int set_csum = 0;
                dgrp_t i;
-               char buf[SUPERBLOCK_SIZE];
+               char buf[SUPERBLOCK_SIZE] __attribute__ ((aligned(8)));
                __u8 old_uuid[UUID_SIZE];
  
 -              if (sb->s_feature_ro_compat &
 -                  EXT4_FEATURE_RO_COMPAT_GDT_CSUM) {
 +              if (ext2fs_has_group_desc_csum(fs)) {
                        /*
                         * Changing the UUID requires rewriting all metadata,
                         * which can race with a mounted fs.  Don't allow that.