Btrfs: fix dir item validation when replaying xattr deletes
authorFilipe Manana <fdmanana@suse.com>
Tue, 18 Jul 2017 19:34:02 +0000 (20:34 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 19 Jul 2017 18:38:16 +0000 (20:38 +0200)
We were passing an incorrect slot number to the function that validates
directory items when we are replaying xattr deletes from a log tree. The
correct slot is stored at variable 'i' and not at 'path->slots[0]', so
the call to the validation function was only correct for the first
iteration of the loop, when 'i == path->slots[0]'.
After this fix, the fstest generic/066 passes again.

Fixes: 8ee8c2d62d5f ("btrfs: Verify dir_item in replay_xattr_deletes")
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c

index f20ef21..3a11ae6 100644 (file)
@@ -2153,8 +2153,7 @@ process_leaf:
                        u32 this_len = sizeof(*di) + name_len + data_len;
                        char *name;
 
-                       ret = verify_dir_item(fs_info, path->nodes[0],
-                                             path->slots[0], di);
+                       ret = verify_dir_item(fs_info, path->nodes[0], i, di);
                        if (ret) {
                                ret = -EIO;
                                goto out;