From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F5FCC2D0A3 for ; Mon, 9 Nov 2020 13:08:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0F33F2083B for ; Mon, 9 Nov 2020 13:08:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604927320; bh=mLoRTzWPqvZCACWFtJ9tOKQUgXjXVWW/1DzBNPOjcEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=ehiMYTUFJHFnvta/7y9AJFhiy/b0+ljkP6RDFlXm4ZXw9iC9YOzepozhqQIWedXvO CPbMPaoLfGqnV8+J2I81F3y7zy+khuMELbHClCpI7tpNbjRV1bdmtCOv23KpBCTO9I qkJZzrPRrjEGDlp2U/lzHpVLH5NW/h7jQH+hksbA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731701AbgKINIi (ORCPT ); Mon, 9 Nov 2020 08:08:38 -0500 Received: from mail.kernel.org ([198.145.29.99]:33378 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731680AbgKINIe (ORCPT ); Mon, 9 Nov 2020 08:08:34 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7160C20789; Mon, 9 Nov 2020 13:08:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604927314; bh=mLoRTzWPqvZCACWFtJ9tOKQUgXjXVWW/1DzBNPOjcEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=T13+1YyJsGdsKzuKwSqv/dQik+8VXukoM03eNN8vitG5KMB78ZsPkX2GSphn9lEZV DygL+6/hNCQPgFn2U0wO0jXzSfUOCZtyZELeok/sniKMe03tSAvHamK7mjB8OOh0Yi m6tm5jIiX/zJoAeC/cFOLzsbXMsExPHBf36+4Vo0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Qu Wenruo , David Sterba , Ben Hutchings Subject: [PATCH 4.19 18/71] btrfs: extent_io: Handle errors better in btree_write_cache_pages() Date: Mon, 9 Nov 2020 13:55:12 +0100 Message-Id: <20201109125020.768066942@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201109125019.906191744@linuxfoundation.org> References: <20201109125019.906191744@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Qu Wenruo commit 2b952eea813b1f7e7d4b9782271acd91625b9bb9 upstream. In btree_write_cache_pages(), we can only get @ret <= 0. Add an ASSERT() for it just in case. Then instead of submitting the write bio even we got some error, check the return value first. If we have already hit some error, just clean up the corrupted or half-baked bio, and return error. If there is no error so far, then call flush_write_bio() and return the result. Signed-off-by: Qu Wenruo Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Ben Hutchings Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/extent_io.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -3809,7 +3809,6 @@ int btree_write_cache_pages(struct addre .sync_io = wbc->sync_mode == WB_SYNC_ALL, }; int ret = 0; - int flush_ret; int done = 0; int nr_to_write_done = 0; struct pagevec pvec; @@ -3909,8 +3908,12 @@ retry: index = 0; goto retry; } - flush_ret = flush_write_bio(&epd); - BUG_ON(flush_ret < 0); + ASSERT(ret <= 0); + if (ret < 0) { + end_write_bio(&epd, ret); + return ret; + } + ret = flush_write_bio(&epd); return ret; }