Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2344820ybz; Thu, 23 Apr 2020 16:25:42 -0700 (PDT) X-Google-Smtp-Source: APiQypJJVJrdGqsa9vWqvhoBc6ho3V9XFrA6X0l0kC+Demfisd/TRB2QGBx9jwqbcmwhMXB5CUrO X-Received: by 2002:a50:9f8f:: with SMTP id c15mr4573162edf.377.1587684341922; Thu, 23 Apr 2020 16:25:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587684341; cv=none; d=google.com; s=arc-20160816; b=DACeESLw207a0xlsYpP92ZblOD8HgBjSKDIu0XePmQB8gVIpUcWxh0FuDcYzI2znEh otV35oEsaMpH8e/8/ewjyBNkXmJSV1WXVGISHVPL9XMURT65Y+ZXttvVKsePyG+dkvCX 5TFluNuZp6m/R8EIhfaV2MyjF3uzsaRCPYTv/6B6vHwANlTnnqEbCWpsOISOPOhyXXc4 pKUTDHLt6YqJZx+OILxcxGELOOQZmt3Y/2IMyfu8/nxRQm23tFer2bqPQVsyKhXetEiZ COWeAXsH6U9NhXVbAXRNzMydfeu+GCRGzx6ttENj7/Oc5yL6iZUJnyi6rZSPa70rjV2x 9COA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=4Blf/frkOBNh4XVuZkNdG4MVaKyFeYbQv9SOEWsEMcg=; b=R8Q8ccChXRB35sMU4v/XEdJp+lT/tqEdEV32m2SRz8pjMGbedouQNpBuuZkLElBnXG SIRZiUyhgTNs6mukFowdP8swOxeNBh9aeTBnJqUcr1yoU24DLvh79ewF1/2Jszq/akQT /gpqQ+aIJuqJ2evpDQ0qE8uolgaexNnT8OuKxD4HO2Al+MSWMS45xQUNHiVDPDf+n7ED at2X4qain7sx8V26Atzrs3Tc214Xn/pKCtgUzMTVgmzlrludRRaz05AybhBVAED0Upgs I5lEcSjvgmyTP5GHpmWupH8kJo63Vm+lAR6/9cCD5JpncD1v/xsbL9H+E3IhBLuROF6k LH1Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c17si2062630ejm.84.2020.04.23.16.25.18; Thu, 23 Apr 2020 16:25:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728794AbgDWXWD (ORCPT + 99 others); Thu, 23 Apr 2020 19:22:03 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:48480 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728183AbgDWXGc (ORCPT ); Thu, 23 Apr 2020 19:06:32 -0400 Received: from [192.168.4.242] (helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1jRkvL-0004bi-JS; Fri, 24 Apr 2020 00:06:27 +0100 Received: from ben by deadeye with local (Exim 4.93) (envelope-from ) id 1jRkvK-00E6im-42; Fri, 24 Apr 2020 00:06:26 +0100 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, Denis Kirjanov , "Qu Wenruo" , "Mike Snitzer" Date: Fri, 24 Apr 2020 00:04:45 +0100 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 058/245] dm flakey: fix reads to be issued if drop_writes configured In-Reply-To: X-SA-Exim-Connect-IP: 192.168.4.242 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.83-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Mike Snitzer commit 299f6230bc6d0ccd5f95bb0fb865d80a9c7d5ccc upstream. v4.8-rc3 commit 99f3c90d0d ("dm flakey: error READ bios during the down_interval") overlooked the 'drop_writes' feature, which is meant to allow reads to be issued rather than errored, during the down_interval. Fixes: 99f3c90d0d ("dm flakey: error READ bios during the down_interval") Reported-by: Qu Wenruo Signed-off-by: Mike Snitzer Signed-off-by: Ben Hutchings --- drivers/md/dm-flakey.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) --- a/drivers/md/dm-flakey.c +++ b/drivers/md/dm-flakey.c @@ -291,15 +291,13 @@ static int flakey_map(struct dm_target * pb->bio_submitted = true; /* - * Map reads as normal only if corrupt_bio_byte set. + * Error reads if neither corrupt_bio_byte or drop_writes are set. + * Otherwise, flakey_end_io() will decide if the reads should be modified. */ if (bio_data_dir(bio) == READ) { - /* If flags were specified, only corrupt those that match. */ - if (fc->corrupt_bio_byte && (fc->corrupt_bio_rw == READ) && - all_corrupt_bio_flags_match(bio, fc)) - goto map_bio; - else + if (!fc->corrupt_bio_byte && !test_bit(DROP_WRITES, &fc->flags)) return -EIO; + goto map_bio; } /* @@ -336,14 +334,21 @@ static int flakey_end_io(struct dm_targe struct flakey_c *fc = ti->private; struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); - /* - * Corrupt successful READs while in down state. - */ if (!error && pb->bio_submitted && (bio_data_dir(bio) == READ)) { - if (fc->corrupt_bio_byte) + if (fc->corrupt_bio_byte && (fc->corrupt_bio_rw == READ) && + all_corrupt_bio_flags_match(bio, fc)) { + /* + * Corrupt successful matching READs while in down state. + */ corrupt_bio_data(bio, fc); - else + + } else if (!test_bit(DROP_WRITES, &fc->flags)) { + /* + * Error read during the down_interval if drop_writes + * wasn't configured. + */ return -EIO; + } } return error;