Received: by 2002:a05:7412:da14:b0:e2:908c:2ebd with SMTP id fe20csp762068rdb; Fri, 6 Oct 2023 20:24:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHBTzyywL3+h1Lxf+nSVaW0g3pMsLTNLZu0Rwt4zzFOscOpZy6jVv+Zi2UBzOR/pdhRSMYf X-Received: by 2002:a05:6a00:190e:b0:68b:fdfe:76c2 with SMTP id y14-20020a056a00190e00b0068bfdfe76c2mr10490396pfi.20.1696649088034; Fri, 06 Oct 2023 20:24:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696649088; cv=none; d=google.com; s=arc-20160816; b=p8767kyFKDKJ/XtQA0X2HGt7YviEjEIMaKzQUq5dDDMdqETf5aaSB7PKDyHrkwvJ51 6tlSdDL7U8oszN/L6+0u1Sn9jpVH9pFiU+WRf3ImEkASWgQ9FrHjZuA05u7ECsFst0ty nO9HJxMzOxQUOVyDzYKWM7l5SNdTqg+yV0v9VtbsYZYgnh1m9d22Yyn7Vaav4Pj7tpDY Mj2Vu0HjvMncdpG+UNr+P07/iFOHrfz9ijcG1/RTk5Innho7/gWbOfjuNqGixucVRCVN 5bG5BYDA9ojrqwq3apPrZJjvbr6eJk6PufOLV3emCuXHo7uPM0datU9U0uCcEyAuoXet mitQ== 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 :message-id:date:subject:cc:to:from; bh=sUYiEYQzBlsOAWj7tNuT5StASx54uMb2Ed+zkxp8fJQ=; fh=d9c5gHOb3LccGp7KhO2PTidd9oOuOSBo1OJ/8DRRGxA=; b=bc6pcQp5wLZXIA1OzxGyVvleu/sXTR3D1KRsZlf3AHFHpFz9ZYt9HESVT3/YJ3WjFE H6I72BAToYP3eOf0udypeFZoSuOAj/Qry51XOcUfweEI8IRQV1L0ZQIo4CtL8JWRjyVK AJPCjgP+ntthhd714LgAEuCzar8GqdNkbwiYYQDtjKaaJOOycNlyVD0epotEIeeqLYGH Ek4GPuOl5SohSb38DU55+pNMqmEaaSYfmQ4y2HnR7zaYeKspQhh526GK+D8EUfdS6Spx qTFRuzn49b0c+6zD9eeGTF4of8BrT3Efne3bOoLPFRyfokKN5rMQLUYwfLJbZq9GrrLd 5PyA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id cr6-20020a056a000f0600b00694d034452csi2709288pfb.105.2023.10.06.20.24.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Oct 2023 20:24:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id EF60480236ED; Fri, 6 Oct 2023 20:24:46 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343505AbjJGDYl (ORCPT + 99 others); Fri, 6 Oct 2023 23:24:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234091AbjJGDYj (ORCPT ); Fri, 6 Oct 2023 23:24:39 -0400 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F0D98BD; Fri, 6 Oct 2023 20:24:37 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.143]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4S2Vyl6DkHz4f3m6r; Sat, 7 Oct 2023 11:24:31 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.104.67]) by APP4 (Coremail) with SMTP id gCh0CgD3jd1tzyBlo9pRCQ--.28427S4; Sat, 07 Oct 2023 11:24:32 +0800 (CST) From: Yu Kuai To: song@kernel.org Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, yukuai3@huawei.com, yukuai1@huaweicloud.com, yi.zhang@huawei.com, yangerkun@huawei.com Subject: [PATCH -next] md/raid1: don't split discard io for write behind Date: Sat, 7 Oct 2023 19:21:05 +0800 Message-Id: <20231007112105.407449-1-yukuai1@huaweicloud.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: gCh0CgD3jd1tzyBlo9pRCQ--.28427S4 X-Coremail-Antispam: 1UD129KBjvJXoW7try8AF18Ar4rXw4DJr4fXwb_yoW8Ww1rp3 yqgFWYyr9rXr12yr1DXa4DZFyrtasFqrW7KrWfX3y7Zr13XFyUXa1ktas5Jr1kCrZ3ury3 Zr4qyrW8ua4UXrJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvF14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2jI8I6cxK62vIxIIY0VWUZVW8XwA2ocxC64kIII 0Yj41l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xv wVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4 x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG 64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r 1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAq YI8I648v4I1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1D MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWrJr0_WFyUJwCI42IY6I8E87Iv67AK xVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvj TRNgAwUUUUU X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ X-CFilter-Loop: Reflected X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE 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-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 06 Oct 2023 20:24:47 -0700 (PDT) From: Yu Kuai Currently, discad io is treated the same as normal write io, and for write behind case, io size is limited to: BIO_MAX_VECS * (PAGE_SIZE >> 9) For 0.5KB sector size and 4KB PAGE_SIZE, this is just 1MB. For consequence, if 'WriteMostly' is set to one of the underlying disks, then diskcard io will be splited into 1MB and it will take a long time for the diskcard to finish. Fix this problem by disable write behind for discard io. Reported-by: Roman Mamedov Closes: https://lore.kernel.org/all/6a1165f7-c792-c054-b8f0-1ad4f7b8ae01@ultracoder.org/ Reported-and-tested-by: Kirill Kirilenko Signed-off-by: Yu Kuai --- drivers/md/raid1.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 3a78f79ee6d5..35d12948e0a9 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -1345,6 +1345,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, int first_clone; int max_sectors; bool write_behind = false; + bool is_discard = (bio_op(bio) == REQ_OP_DISCARD); if (mddev_is_clustered(mddev) && md_cluster_ops->area_resyncing(mddev, WRITE, @@ -1405,7 +1406,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, * write-mostly, which means we could allocate write behind * bio later. */ - if (rdev && test_bit(WriteMostly, &rdev->flags)) + if (!is_discard && rdev && test_bit(WriteMostly, &rdev->flags)) write_behind = true; if (rdev && unlikely(test_bit(Blocked, &rdev->flags))) { -- 2.39.2