From patchwork Wed Dec 6 06:54:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Sandoval X-Patchwork-Id: 10094967 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9EB6E60210 for ; Wed, 6 Dec 2017 06:54:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 95A17288CA for ; Wed, 6 Dec 2017 06:54:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8965028AE8; Wed, 6 Dec 2017 06:54:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0B29B288CA for ; Wed, 6 Dec 2017 06:54:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753047AbdLFGyS (ORCPT ); Wed, 6 Dec 2017 01:54:18 -0500 Received: from mail-pl0-f67.google.com ([209.85.160.67]:46426 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752857AbdLFGyR (ORCPT ); Wed, 6 Dec 2017 01:54:17 -0500 Received: by mail-pl0-f67.google.com with SMTP id i6so420109plt.13 for ; Tue, 05 Dec 2017 22:54:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osandov-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=vF3wKFM2JQHuG3/J2dgo1s6e36yCOR36pL3uY9R+oQs=; b=Y/k1B6448Ejiis5B/b9rx7dMAjHujpCfrQJNED512zwb7Cw+sVHCQS1hPRaMP1WoiV WNwzBKf+m1bFyPdQFFBmAE0yEtv2EmzyMJdSvSg3Adl5yGZRV2nX4eFqaKK2UF7rauGZ ogo2jXl1EgDD+2F4FILy+BcX71WZL+9Ymhxo15R1KJs8/gKZWUVZfXLthxzPOs1q8Dqv 3DPhUtVaVqwVC0FCuPKIFXJAX05VaIpRZPwvR3G/avmoIboIA4ta8cI/qBq0RrkefHlx M0RG0HHIkZcNIiB5Rbzhgouh25zdeMysjaz3AfHoaB4iaosC2DOWLivu0Wesb5h58YVk 5oNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=vF3wKFM2JQHuG3/J2dgo1s6e36yCOR36pL3uY9R+oQs=; b=GBdJteStFQ7ZqU1AZ/QdEJyS2IaOzgNdK6ZuRsSwiNIQFWPO+40bl9wMuZloT0EaNi sWirCcGF1AU7bvDZvvFkQPMl+dgERoiRFq3PLMjJKQLOAZLIsfXScOdEi+Tj4v5j8i6y OdENiBPdcgDJAuuko8FI/eDU3G0hAb5lo1+pLtjLr4HblY+X/QgtERpW8xlu3RMrlSX+ 4RqH4/PooEqfZlzEYUkdLzGhpkf3w+DPxLO3Qrqf5iXMlG3h+BF+VZ9sSyMUYzQi523d 4cwPPZNEML9dNGiwBOJ3/D0QLjY3WxPhl4dYgEKrWJ3mi/lFzIYB4npd6PqRiAPhK+5Z j52A== X-Gm-Message-State: AJaThX5xhAjyxsNYbzrEa6O+kNGFBA7bNS2jgaf2Sv2Fsmd6TCxfUGu1 ZNGrXPwce/a4Mf92+YdzC6SD2aB168c= X-Google-Smtp-Source: AGs4zMZoerQ/yLx85qcZzf77h7ZfolKxQb4Nd9g7T3sRFz8Nt2byDWnB7Yzj8pyViepqx5nEdXxzJA== X-Received: by 10.84.138.193 with SMTP id 59mr21339466plp.446.1512543256439; Tue, 05 Dec 2017 22:54:16 -0800 (PST) Received: from localhost.localdomain ([2601:602:8801:8110:e6a7:a0ff:fe0b:c9a8]) by smtp.gmail.com with ESMTPSA id v25sm2394264pgc.78.2017.12.05.22.54.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Dec 2017 22:54:15 -0800 (PST) From: Omar Sandoval To: linux-btrfs@vger.kernel.org Cc: kernel-team@fb.com Subject: [PATCH] Btrfs: disable FUA if mounted with nobarrier Date: Tue, 5 Dec 2017 22:54:02 -0800 Message-Id: X-Mailer: git-send-email 2.15.1 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Omar Sandoval I was seeing disk flushes still happening when I mounted a Btrfs filesystem with nobarrier for testing. This is because we use FUA to write out the first super block, and on devices without FUA support, the block layer translates FUA to a flush. Even on devices supporting true FUA, using FUA when we asked for no barriers is surprising. Signed-off-by: Omar Sandoval Reviewed-by: Qu Wenruo Reviewed-by: David Sterba --- fs/btrfs/disk-io.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 10a2a579cc7f..a8ecccfc36de 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -3231,6 +3231,7 @@ static int write_dev_supers(struct btrfs_device *device, int errors = 0; u32 crc; u64 bytenr; + int op_flags; if (max_mirrors == 0) max_mirrors = BTRFS_SUPER_MIRROR_MAX; @@ -3273,13 +3274,10 @@ static int write_dev_supers(struct btrfs_device *device, * we fua the first super. The others we allow * to go down lazy. */ - if (i == 0) { - ret = btrfsic_submit_bh(REQ_OP_WRITE, - REQ_SYNC | REQ_FUA | REQ_META | REQ_PRIO, bh); - } else { - ret = btrfsic_submit_bh(REQ_OP_WRITE, - REQ_SYNC | REQ_META | REQ_PRIO, bh); - } + op_flags = REQ_SYNC | REQ_META | REQ_PRIO; + if (i == 0 && !btrfs_test_opt(device->fs_info, NOBARRIER)) + op_flags |= REQ_FUA; + ret = btrfsic_submit_bh(REQ_OP_WRITE, op_flags, bh); if (ret) errors++; }