Hello community,

here is the log from the commit of package btrfsprogs for openSUSE:Factory 
checked in at 2014-10-06 22:04:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/btrfsprogs (Old)
 and      /work/SRC/openSUSE:Factory/.btrfsprogs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "btrfsprogs"

Changes:
--------
--- /work/SRC/openSUSE:Factory/btrfsprogs/btrfsprogs.changes    2014-09-25 
09:33:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.btrfsprogs.new/btrfsprogs.changes       
2014-10-06 22:04:29.000000000 +0200
@@ -1,0 +2,9 @@
+Sat Oct  4 00:00:03 CEST 2014 - [email protected]
+
+- version 3.16.2
+  - fsck: handle bad extent mapping
+  - image: make it work on a balanced fs
+  - btrfs-show-super: print flags in human readable way
+  - documentation updates
+
+-------------------------------------------------------------------

Old:
----
  btrfs-progs-v3.16.1.tar.gz

New:
----
  btrfs-progs-v3.16.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ btrfsprogs.spec ++++++
--- /var/tmp/diff_new_pack.YnfA3O/_old  2014-10-06 22:04:30.000000000 +0200
+++ /var/tmp/diff_new_pack.YnfA3O/_new  2014-10-06 22:04:30.000000000 +0200
@@ -16,9 +16,9 @@
 #
 
 
-%define tar_version v3.16.1
+%define tar_version v3.16.2
 Name:           btrfsprogs
-Version:        3.16.1
+Version:        3.16.2
 Release:        0
 Summary:        Utilities for the Btrfs filesystem
 License:        GPL-2.0

++++++ btrfs-progs-v3.16.1.tar.gz -> btrfs-progs-v3.16.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-balance.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-balance.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-balance.txt     2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-balance.txt     2014-10-01 
18:07:59.000000000 +0200
@@ -117,7 +117,7 @@
 
 EXIT STATUS
 -----------
-*btrfs balance* returns a zero exist status if it succeeds. Non zero is
+*btrfs balance* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-check.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-check.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-check.txt       2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-check.txt       2014-10-01 
18:07:59.000000000 +0200
@@ -35,7 +35,7 @@
 
 EXIT STATUS
 -----------
-*btrfs check* returns a zero exist status if it succeeds. Non zero is
+*btrfs check* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-device.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-device.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-device.txt      2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-device.txt      2014-10-01 
18:07:59.000000000 +0200
@@ -100,7 +100,7 @@
 
 EXIT STATUS
 -----------
-*btrfs device* returns a zero exist status if it succeeds. Non zero is
+*btrfs device* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/btrfs-progs-v3.16.1/Documentation/btrfs-filesystem.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-filesystem.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-filesystem.txt  2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-filesystem.txt  2014-10-01 
18:07:59.000000000 +0200
@@ -102,7 +102,7 @@
 
 EXIT STATUS
 -----------
-*btrfs filesystem* returns a zero exist status if it succeeds. Non zero is
+*btrfs filesystem* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/btrfs-progs-v3.16.1/Documentation/btrfs-inspect-internal.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-inspect-internal.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-inspect-internal.txt    
2014-09-15 15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-inspect-internal.txt    
2014-10-01 18:07:59.000000000 +0200
@@ -52,7 +52,7 @@
 
 EXIT STATUS
 -----------
-*btrfs inspect-internal* returns a zero exist status if it succeeds. Non zero 
is
+*btrfs inspect-internal* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-property.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-property.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-property.txt    2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-property.txt    2014-10-01 
18:07:59.000000000 +0200
@@ -51,7 +51,7 @@
 
 EXIT STATUS
 -----------
-*btrfs property* returns a zero exist status if it succeeds. Non zero is
+*btrfs property* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-qgroup.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-qgroup.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-qgroup.txt      2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-qgroup.txt      2014-10-01 
18:07:59.000000000 +0200
@@ -92,7 +92,7 @@
 
 EXIT STATUS
 -----------
-*btrfs qgroup* returns a zero exist status if it succeeds. Non zero is
+*btrfs qgroup* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-quota.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-quota.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-quota.txt       2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-quota.txt       2014-10-01 
18:07:59.000000000 +0200
@@ -41,7 +41,7 @@
 
 EXIT STATUS
 -----------
-*btrfs quota* returns a zero exist status if it succeeds. Non zero is
+*btrfs quota* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-receive.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-receive.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-receive.txt     2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-receive.txt     2014-10-01 
18:07:59.000000000 +0200
@@ -44,7 +44,7 @@
 
 EXIT STATUS
 -----------
-*btrfs receive* returns a zero exist status if it succeeds. Non zero is
+*btrfs receive* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-replace.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-replace.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-replace.txt     2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-replace.txt     2014-10-01 
18:07:59.000000000 +0200
@@ -66,7 +66,7 @@
 
 EXIT STATUS
 -----------
-*btrfs replace* returns a zero exist status if it succeeds. Non zero is
+*btrfs replace* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-rescue.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-rescue.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-rescue.txt      2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-rescue.txt      2014-10-01 
18:07:59.000000000 +0200
@@ -42,7 +42,7 @@
 
 EXIT STATUS
 -----------
-*btrfs rescue* returns a zero exist status if it succeeds. Non zero is
+*btrfs rescue* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-restore.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-restore.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-restore.txt     2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-restore.txt     2014-10-01 
18:07:59.000000000 +0200
@@ -68,7 +68,7 @@
 
 EXIT STATUS
 -----------
-*btrfs restore* returns a zero exist status if it succeeds. Non zero is
+*btrfs restore* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-scrub.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-scrub.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-scrub.txt       2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-scrub.txt       2014-10-01 
18:07:59.000000000 +0200
@@ -82,7 +82,7 @@
 
 EXIT STATUS
 -----------
-*btrfs scrub* returns a zero exist status if it succeeds. Non zero is
+*btrfs scrub* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs-send.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-send.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-send.txt        2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-send.txt        2014-10-01 
18:07:59.000000000 +0200
@@ -43,7 +43,7 @@
 
 EXIT STATUS
 -----------
-*btrfs send* returns a zero exist status if it succeeds. Non zero is
+*btrfs send* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/btrfs-progs-v3.16.1/Documentation/btrfs-subvolume.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs-subvolume.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs-subvolume.txt   2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs-subvolume.txt   2014-10-01 
18:07:59.000000000 +0200
@@ -99,7 +99,7 @@
 -g::::
 print the generation of the subvolume.
 -o::::
-print only subvolumes bellow specified <path>.
+print only subvolumes below specified <path>.
 -u::::
 print the UUID of the subvolume.
 -q::::
@@ -155,7 +155,7 @@
 
 EXIT STATUS
 -----------
-*btrfs subvolume* returns a zero exist status if it succeeds. Non zero is
+*btrfs subvolume* returns a zero exit status if it succeeds. Non zero is
 returned in case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfs.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfs.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfs.txt     2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfs.txt     2014-10-01 
18:07:59.000000000 +0200
@@ -87,7 +87,7 @@
 
 EXIT STATUS
 -----------
-*btrfs* returns a zero exist status if it succeeds. Non zero is returned in
+*btrfs* returns a zero exit status if it succeeds. Non zero is returned in
 case of failure.
 
 AVAILABILITY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Documentation/btrfstune.txt 
new/btrfs-progs-v3.16.2/Documentation/btrfstune.txt
--- old/btrfs-progs-v3.16.1/Documentation/btrfstune.txt 2014-09-15 
15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Documentation/btrfstune.txt 2014-10-01 
18:07:59.000000000 +0200
@@ -24,7 +24,14 @@
 Enable extended inode refs.
 -x::
 Enable skinny metadata extent refs.
+-f::
+Allow dangerous changes, e.g. clear the seeding flag
 
+When mounting the new device, btrfs will check whether the seeding flag is set
+when try to open seeding device.  If the user clears the seeding flag of the
+seeding device, the new device will not be mountable. Even setting the seeding
+flag back will not fix this problem, because the generation will be changed at
+that time. Clear the seeding flag may damage the new filesystem.
 
 EXIT STATUS
 -----------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/Makefile 
new/btrfs-progs-v3.16.2/Makefile
--- old/btrfs-progs-v3.16.1/Makefile    2014-09-15 15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/Makefile    2014-10-01 18:07:59.000000000 +0200
@@ -5,7 +5,7 @@
 LN = ln
 AR = ar
 AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 -DBTRFS_FLAT_INCLUDES 
-fno-strict-aliasing -fPIC
-CFLAGS = -g -O1 -fno-strict-aliasing
+CFLAGS = -g -O1 -fno-strict-aliasing -rdynamic
 objects = ctree.o disk-io.o radix-tree.o extent-tree.o print-tree.o \
          root-tree.o dir-item.o file-item.o inode-item.o inode-map.o \
          extent-cache.o extent_io.o volumes.o utils.o repair.o \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/btrfs-convert.c 
new/btrfs-progs-v3.16.2/btrfs-convert.c
--- old/btrfs-progs-v3.16.1/btrfs-convert.c     2014-09-15 15:18:00.000000000 
+0200
+++ new/btrfs-progs-v3.16.2/btrfs-convert.c     2014-10-01 18:07:59.000000000 
+0200
@@ -2441,7 +2441,7 @@
        ext2_root = btrfs_read_fs_root(root->fs_info, &key);
        if (!ext2_root || IS_ERR(ext2_root)) {
                fprintf(stderr, "unable to open subvol %llu\n",
-                       key.objectid);
+                       (unsigned long long)key.objectid);
                goto fail;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/btrfs-show-super.c 
new/btrfs-progs-v3.16.2/btrfs-show-super.c
--- old/btrfs-progs-v3.16.1/btrfs-show-super.c  2014-09-15 15:18:00.000000000 
+0200
+++ new/btrfs-progs-v3.16.2/btrfs-show-super.c  2014-10-01 18:07:59.000000000 
+0200
@@ -285,6 +285,58 @@
        }
 }
 
+struct readable_flag_entry {
+       u64 bit;
+       char *output;
+};
+
+#define DEF_INCOMPAT_FLAG_ENTRY(bit_name)              \
+       {BTRFS_FEATURE_INCOMPAT_##bit_name, #bit_name}
+
+struct readable_flag_entry incompat_flags_array[] = {
+       DEF_INCOMPAT_FLAG_ENTRY(MIXED_BACKREF),
+       DEF_INCOMPAT_FLAG_ENTRY(DEFAULT_SUBVOL),
+       DEF_INCOMPAT_FLAG_ENTRY(MIXED_GROUPS),
+       DEF_INCOMPAT_FLAG_ENTRY(COMPRESS_LZO),
+       DEF_INCOMPAT_FLAG_ENTRY(COMPRESS_LZOv2),
+       DEF_INCOMPAT_FLAG_ENTRY(BIG_METADATA),
+       DEF_INCOMPAT_FLAG_ENTRY(EXTENDED_IREF),
+       DEF_INCOMPAT_FLAG_ENTRY(RAID56),
+       DEF_INCOMPAT_FLAG_ENTRY(SKINNY_METADATA),
+       DEF_INCOMPAT_FLAG_ENTRY(NO_HOLES)
+};
+static const int incompat_flags_num = sizeof(incompat_flags_array) /
+                                     sizeof(struct readable_flag_entry);
+
+static void print_readable_incompat_flag(u64 flag)
+{
+       int i;
+       int first = 1;
+       struct readable_flag_entry *entry;
+
+       if (!flag)
+               return;
+       printf("\t\t\t( ");
+       for (i = 0; i < incompat_flags_num; i++) {
+               entry = incompat_flags_array + i;
+               if (flag & entry->bit) {
+                       if (first)
+                               printf("%s ", entry->output);
+                       else
+                               printf("|\n\t\t\t  %s ", entry->output);
+               }
+               first = 0;
+       }
+       flag &= ~BTRFS_FEATURE_INCOMPAT_SUPP;
+       if (flag) {
+               if (first)
+                       printf("unknown flag: 0x%llx ", flag);
+               else
+                       printf("|\n\t\t\t  unknown flag: 0x%llx ", flag);
+       }
+       printf(")\n");
+}
+
 static void dump_superblock(struct btrfs_super_block *sb, int full)
 {
        int i;
@@ -364,6 +416,7 @@
               (unsigned long long)btrfs_super_compat_ro_flags(sb));
        printf("incompat_flags\t\t0x%llx\n",
               (unsigned long long)btrfs_super_incompat_flags(sb));
+       print_readable_incompat_flag(btrfs_super_incompat_flags(sb));
        printf("csum_type\t\t%llu\n",
               (unsigned long long)btrfs_super_csum_type(sb));
        printf("csum_size\t\t%llu\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/cmds-check.c 
new/btrfs-progs-v3.16.2/cmds-check.c
--- old/btrfs-progs-v3.16.1/cmds-check.c        2014-09-15 15:18:00.000000000 
+0200
+++ new/btrfs-progs-v3.16.2/cmds-check.c        2014-10-01 18:07:59.000000000 
+0200
@@ -243,6 +243,17 @@
 
 static void reset_cached_block_groups(struct btrfs_fs_info *fs_info);
 
+static void record_root_in_trans(struct btrfs_trans_handle *trans,
+                                struct btrfs_root *root)
+{
+       if (root->last_trans != trans->transid) {
+               root->track_dirty = 1;
+               root->last_trans = trans->transid;
+               root->commit_root = root->node;
+               extent_buffer_get(root->node);
+       }
+}
+
 static u8 imode_to_type(u32 imode)
 {
 #define S_SHIFT 12
@@ -2429,6 +2440,8 @@
        if (IS_ERR(root))
                return -EIO;
 
+       record_root_in_trans(trans, root);
+
        path = btrfs_alloc_path();
        if (!path)
                return -EIO;
@@ -3854,6 +3867,10 @@
        unsigned long leaf_offset;
 
        root = root->fs_info->csum_root;
+       if (!extent_buffer_uptodate(root->node)) {
+               fprintf(stderr, "No valid csum tree found\n");
+               return -ENOENT;
+       }
 
        key.objectid = BTRFS_EXTENT_CSUM_OBJECTID;
        key.type = BTRFS_EXTENT_CSUM_KEY;
@@ -4667,12 +4684,7 @@
         * Have to make sure that this root gets updated when we commit the
         * transaction
         */
-       root->track_dirty = 1;
-       if (root->last_trans != trans->transid) {
-               root->last_trans = trans->transid;
-               root->commit_root = root->node;
-               extent_buffer_get(root->node);
-       }
+       record_root_in_trans(trans, root);
 
        /*
         * Ok we have the key of the file extent we want to fix, now we can cow
@@ -6352,12 +6364,7 @@
                fprintf(stderr, "Error reading data reloc tree\n");
                return PTR_ERR(root);
        }
-       root->track_dirty = 1;
-       if (root->last_trans != trans->transid) {
-               root->last_trans = trans->transid;
-               root->commit_root = root->node;
-               extent_buffer_get(root->node);
-       }
+       record_root_in_trans(trans, root);
        ret = btrfs_fsck_reinit_root(trans, root, 0);
        if (ret)
                goto out;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/ctree.c 
new/btrfs-progs-v3.16.2/ctree.c
--- old/btrfs-progs-v3.16.1/ctree.c     2014-09-15 15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/ctree.c     2014-10-01 18:07:59.000000000 +0200
@@ -494,7 +494,7 @@
                       (unsigned long long)btrfs_header_bytenr(buf));
                goto fail;
        }
-       for (i = 0; nritems > 1 && i < nritems - 2; i++) {
+       for (i = 0; nritems > 1 && i < nritems - 1; i++) {
                btrfs_item_key(buf, &key, i);
                btrfs_item_key_to_cpu(buf, &cpukey, i + 1);
                if (btrfs_comp_keys(&key, &cpukey) >= 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/disk-io.c 
new/btrfs-progs-v3.16.2/disk-io.c
--- old/btrfs-progs-v3.16.1/disk-io.c   2014-09-15 15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/disk-io.c   2014-10-01 18:07:59.000000000 +0200
@@ -201,7 +201,8 @@
                read_len = bytes_left;
                device = NULL;
 
-               if (!info->on_restoring) {
+               if (!info->on_restoring &&
+                   eb->start != BTRFS_SUPER_INFO_OFFSET) {
                        ret = btrfs_map_block(&info->mapping_tree, READ,
                                              eb->start + offset, &read_len, 
&multi,
                                              mirror, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/kerncompat.h 
new/btrfs-progs-v3.16.2/kerncompat.h
--- old/btrfs-progs-v3.16.1/kerncompat.h        2014-09-15 15:18:00.000000000 
+0200
+++ new/btrfs-progs-v3.16.2/kerncompat.h        2014-10-01 18:07:59.000000000 
+0200
@@ -29,6 +29,7 @@
 #include <stddef.h>
 #include <linux/types.h>
 #include <stdint.h>
+#include <execinfo.h>
 
 #define ptr_to_u64(x)  ((u64)(uintptr_t)x)
 #define u64_to_ptr(x)  ((void *)(uintptr_t)x)
@@ -54,7 +55,33 @@
 #define ULONG_MAX       (~0UL)
 #endif
 
-#define BUG() assert(0)
+#define MAX_BACKTRACE  16
+static inline void print_trace(void)
+{
+       void *array[MAX_BACKTRACE];
+       size_t size;
+
+       size = backtrace(array, MAX_BACKTRACE);
+       backtrace_symbols_fd(array, size, 2);
+}
+
+static inline void assert_trace(const char *assertion, const char *filename,
+                             const char *func, unsigned line, int val)
+{
+       if (val)
+               return;
+       if (assertion)
+               fprintf(stderr, "%s:%d: %s: Assertion `%s` failed.\n",
+                       filename, line, func, assertion);
+       else
+               fprintf(stderr, "%s:%d: %s: Assertion failed.\n", filename,
+                       line, func);
+       print_trace();
+       exit(1);
+}
+
+#define BUG() assert_trace(NULL, __FILE__, __func__, __LINE__, 0)
+
 #ifdef __CHECKER__
 #define __force    __attribute__((force))
 #define __bitwise__ __attribute__((bitwise))
@@ -237,9 +264,10 @@
 #define kstrdup(x, y) strdup(x)
 #define kfree(x) free(x)
 
-#define BUG_ON(c) assert(!(c))
-#define WARN_ON(c) assert(!(c))
-#define        ASSERT(c) assert(c)
+#define BUG_ON(c) assert_trace(#c, __FILE__, __func__, __LINE__, !(c))
+
+#define WARN_ON(c) BUG_ON(c)
+#define        ASSERT(c) assert_trace(#c, __FILE__, __func__, __LINE__, (c))
 
 #define container_of(ptr, type, member) ({                      \
         const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/version.sh 
new/btrfs-progs-v3.16.2/version.sh
--- old/btrfs-progs-v3.16.1/version.sh  2014-09-15 15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/version.sh  2014-10-01 18:07:59.000000000 +0200
@@ -6,7 +6,7 @@
 # Copyright 2008, Oracle
 # Released under the GNU GPLv2
  
-v="v3.16.1"
+v="v3.16.2"
 
 lib_major=0
 lib_minor=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/btrfs-progs-v3.16.1/volumes.c 
new/btrfs-progs-v3.16.2/volumes.c
--- old/btrfs-progs-v3.16.1/volumes.c   2014-09-15 15:18:00.000000000 +0200
+++ new/btrfs-progs-v3.16.2/volumes.c   2014-10-01 18:07:59.000000000 +0200
@@ -1136,8 +1136,20 @@
        int ret;
 
        ce = search_cache_extent(&map_tree->cache_tree, logical);
-       BUG_ON(!ce);
-       BUG_ON(ce->start > logical || ce->start + ce->size < logical);
+       if (!ce) {
+               fprintf(stderr, "No mapping for %llu-%llu\n",
+                       (unsigned long long)logical,
+                       (unsigned long long)logical+len);
+               return 1;
+       }
+       if (ce->start > logical || ce->start + ce->size < logical) {
+               fprintf(stderr, "Invalid mapping for %llu-%llu, got "
+                       "%llu-%llu\n", (unsigned long long)logical,
+                       (unsigned long long)logical+len,
+                       (unsigned long long)ce->start,
+                       (unsigned long long)ce->start + ce->size);
+               return 1;
+       }
        map = container_of(ce, struct map_lookup, ce);
 
        if (map->type & (BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID1))

++++++ local-version-override.patch ++++++
--- /var/tmp/diff_new_pack.YnfA3O/_old  2014-10-06 22:04:31.000000000 +0200
+++ /var/tmp/diff_new_pack.YnfA3O/_new  2014-10-06 22:04:31.000000000 +0200
@@ -6,8 +6,8 @@
  # Copyright 2008, Oracle
  # Released under the GNU GPLv2
   
--v="v3.16.1"
-+v="v3.16.1+20140922"
+-v="v3.16.2"
++v="v3.16.2+20141003"
  
  lib_major=0
  lib_minor=1

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to