Received: by 2002:a05:6a10:144:0:0:0:0 with SMTP id 4csp956601pxw; Sat, 9 Apr 2022 06:27:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwC9BBI+Y5rXey8OVZ7c3RxOJ8hdr6zvEq/OWUsWfMDtjpy3sNqsteusuV0E5Uvp/2lU0xQ X-Received: by 2002:a17:902:c751:b0:158:2138:5c02 with SMTP id q17-20020a170902c75100b0015821385c02mr7347302plq.104.1649510839779; Sat, 09 Apr 2022 06:27:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649510839; cv=none; d=google.com; s=arc-20160816; b=MNzNNloTp9RbMkJT6Votu6ea7fo1jvfCUpjvutCmV47w7w3mil0/dgMBckVHgMYiMg tKnSTxpgkK0BUfQtk4YCPJiHMlbQjVvksYIa3VrKcKoL4k3np0UNty2uDOI3dZd5IqXQ rZHN8QFGVJa1ao+DtBhrdQUd/SziTCYgy0uTuDGF3+fInLmVV5rNLKVtlKnBjUPI+yzl rPbT50ygS/5XgulWRVGEf1goEG+yjpWlQAxMI2Dll+9o0GwoWr7O2C+PDg1MyaYswY0A jWlmq1X6LIl0v2Z/xwnlzy02Yz9dJ7TkLLjZYAjwB+HijE0dCodFkL6e6XPhdph0/vbN wKZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=codmNOYfetDHLJxPogl163/OdD9N1JgIxrWdZCt0360=; b=t/4q3aZDrm3Depnil065VToLV0zqFLRojEvXAcH6ddpukIxu8G7VebdtPdKq/sB2KY XKc/js3MNdcWs77hLdl6XBaU52oSDvHnDaWM/m01BG2n9GsxzjqY2FIR7WxQaTexb9Br vyEtydA8dZHhHJLVgJqqDodWjHyzm0VlKAZ0Hx4d239EkWqJdKCGStwrzHe1pH6BIHkx wsHXJehQehbAtIX+ibbq6z8sg8yFbc1UVMlWt7bi9PJp0r/JakwnIGRLsmTbFWn9aBwC +9iXOjOzCTI/eDui5mA1kkUrGWDdh7+81GD5Hx8Wez6fDRUqEtKpDnConHbRSIO2KviP dqVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=3NoKNhDe; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x144-20020a633196000000b003816043f0b4si4207887pgx.681.2022.04.09.06.26.59; Sat, 09 Apr 2022 06:27:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=3NoKNhDe; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240924AbiDIEyp (ORCPT + 99 others); Sat, 9 Apr 2022 00:54:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241028AbiDIEyY (ORCPT ); Sat, 9 Apr 2022 00:54:24 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8BFFDBD7EC; Fri, 8 Apr 2022 21:51:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=codmNOYfetDHLJxPogl163/OdD9N1JgIxrWdZCt0360=; b=3NoKNhDeSq9S0P9nMMbDbIrAeJ +QEZand4sjAkw+sDEzFUsm0WqJELhqryZtfcxyrLDrupUuuLjoND05T4WTINiqRUjqo+5Efsq5Qf7 zePwe0fJlqe/9Scx23UnVl8E1E8mZU9ccHMKQ/tG4uXU16BLkGrbTdsMmme/ItC/yBINYTi0IVvDS euCK6TSOd2twj4wWKaEcEg0KRAOd/4ZUNfRoOCGYiYPz+sQJZ3dMQ7kgPa3ep8OA6763OSYfCbhod Vz3PYC15ZdzVW9ceDBCCgvFu1e1pGBKJqTg3/enz95H5r0c0lWdydglA1/DfOjLVKaKxh3Wdgn4wE L6Oi9ACQ==; Received: from 213-147-167-116.nat.highway.webapn.at ([213.147.167.116] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd34H-0020rG-Tc; Sat, 09 Apr 2022 04:51:27 +0000 From: Christoph Hellwig To: Jens Axboe Cc: dm-devel@redhat.com, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-um@lists.infradead.org, linux-block@vger.kernel.org, drbd-dev@lists.linbit.com, nbd@other.debian.org, ceph-devel@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-bcache@vger.kernel.org, linux-raid@vger.kernel.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, jfs-discussion@lists.sourceforge.net, linux-nilfs@vger.kernel.org, ntfs3@lists.linux.dev, ocfs2-devel@oss.oracle.com, linux-mm@kvack.org, "Martin K . Petersen" , David Sterba Subject: [PATCH 12/27] block: add a bdev_write_cache helper Date: Sat, 9 Apr 2022 06:50:28 +0200 Message-Id: <20220409045043.23593-13-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Add a helper to check the write cache flag based on the block_device instead of having to poke into the block layer internal request_queue. Signed-off-by: Christoph Hellwig Reviewed-by: Martin K. Petersen Acked-by: David Sterba [btrfs] --- drivers/block/rnbd/rnbd-srv.c | 2 +- drivers/block/xen-blkback/xenbus.c | 2 +- drivers/target/target_core_iblock.c | 8 ++------ fs/btrfs/disk-io.c | 3 +-- include/linux/blkdev.h | 5 +++++ 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c index f04df6294650b..f8cc3c5fecb4b 100644 --- a/drivers/block/rnbd/rnbd-srv.c +++ b/drivers/block/rnbd/rnbd-srv.c @@ -558,7 +558,7 @@ static void rnbd_srv_fill_msg_open_rsp(struct rnbd_msg_open_rsp *rsp, rsp->secure_discard = cpu_to_le16(rnbd_dev_get_secure_discard(rnbd_dev)); rsp->cache_policy = 0; - if (test_bit(QUEUE_FLAG_WC, &q->queue_flags)) + if (bdev_write_cache(rnbd_dev->bdev)) rsp->cache_policy |= RNBD_WRITEBACK; if (blk_queue_fua(q)) rsp->cache_policy |= RNBD_FUA; diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index f09040435e2e5..8b691fe50475f 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -517,7 +517,7 @@ static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle, vbd->type |= VDISK_REMOVABLE; q = bdev_get_queue(bdev); - if (q && test_bit(QUEUE_FLAG_WC, &q->queue_flags)) + if (bdev_write_cache(bdev)) vbd->flush_support = true; if (q && blk_queue_secure_erase(q)) diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index b41ee5c3b5b82..03013e85ffc03 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c @@ -737,7 +737,7 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, if (test_bit(QUEUE_FLAG_FUA, &q->queue_flags)) { if (cmd->se_cmd_flags & SCF_FUA) opf |= REQ_FUA; - else if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) + else if (!bdev_write_cache(ib_dev->ibd_bd)) opf |= REQ_FUA; } } else { @@ -886,11 +886,7 @@ iblock_parse_cdb(struct se_cmd *cmd) static bool iblock_get_write_cache(struct se_device *dev) { - struct iblock_dev *ib_dev = IBLOCK_DEV(dev); - struct block_device *bd = ib_dev->ibd_bd; - struct request_queue *q = bdev_get_queue(bd); - - return test_bit(QUEUE_FLAG_WC, &q->queue_flags); + return bdev_write_cache(IBLOCK_DEV(dev)->ibd_bd); } static const struct target_backend_ops iblock_ops = { diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index b30309f187cf0..d80adee32128d 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4247,8 +4247,7 @@ static void write_dev_flush(struct btrfs_device *device) * of simplicity, since this is a debug tool and not meant for use in * non-debug builds. */ - struct request_queue *q = bdev_get_queue(device->bdev); - if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) + if (bdev_write_cache(device->bdev)) return; #endif diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 3a9578e14a6b0..807a49aa5a27a 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1331,6 +1331,11 @@ static inline bool bdev_nonrot(struct block_device *bdev) return blk_queue_nonrot(bdev_get_queue(bdev)); } +static inline bool bdev_write_cache(struct block_device *bdev) +{ + return test_bit(QUEUE_FLAG_WC, &bdev_get_queue(bdev)->queue_flags); +} + static inline enum blk_zoned_model bdev_zoned_model(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); -- 2.30.2