From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:33513 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751664AbcEQBMA (ORCPT ); Mon, 16 May 2016 21:12:00 -0400 Subject: Patch "btrfs: do not write corrupted metadata blocks to disk" has been added to the 4.5-stable tree To: alex.bolshoy@gmail.com, alex@zadarastorage.com, dsterba@suse.com, fdmanana@suse.com, gregkh@linuxfoundation.org Cc: , From: Date: Mon, 16 May 2016 18:11:58 -0700 Message-ID: <14634475181203@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled btrfs: do not write corrupted metadata blocks to disk to the 4.5-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: btrfs-do-not-write-corrupted-metadata-blocks-to-disk.patch and it can be found in the queue-4.5 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From 0f805531daa2ebfb5706422dc2ead1cff9e53e65 Mon Sep 17 00:00:00 2001 From: Alex Lyakas Date: Thu, 10 Mar 2016 13:10:15 +0200 Subject: btrfs: do not write corrupted metadata blocks to disk From: Alex Lyakas commit 0f805531daa2ebfb5706422dc2ead1cff9e53e65 upstream. csum_dirty_buffer was issuing a warning in case the extent buffer did not look alright, but was still returning success. Let's return error in this case, and also add an additional sanity check on the extent buffer header. The caller up the chain may BUG_ON on this, for example flush_epd_write_bio will, but it is better than to have a silent metadata corruption on disk. Signed-off-by: Alex Lyakas Reviewed-by: Filipe Manana Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/disk-io.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -513,9 +513,20 @@ static int csum_dirty_buffer(struct btrf eb = (struct extent_buffer *)page->private; if (page != eb->pages[0]) return 0; + found_start = btrfs_header_bytenr(eb); - if (WARN_ON(found_start != start || !PageUptodate(page))) - return 0; + /* + * Please do not consolidate these warnings into a single if. + * It is useful to know what went wrong. + */ + if (WARN_ON(found_start != start)) + return -EUCLEAN; + if (WARN_ON(!PageUptodate(page))) + return -EUCLEAN; + + ASSERT(memcmp_extent_buffer(eb, fs_info->fsid, + btrfs_header_fsid(), BTRFS_FSID_SIZE) == 0); + return csum_tree_block(fs_info, eb, 0); } Patches currently in stable-queue which might be from alex.bolshoy@gmail.com are queue-4.5/btrfs-csum_tree_block-return-proper-errno-value.patch queue-4.5/btrfs-do-not-write-corrupted-metadata-blocks-to-disk.patch