Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp2778587rwl; Fri, 6 Jan 2023 10:41:46 -0800 (PST) X-Google-Smtp-Source: AMrXdXu73/QbqMwoHQAIoUwKFvGUT02cRQV6sB5t+YhmzQxduPkIMuoEErkmqCE/wHOkrQAnGVrq X-Received: by 2002:a17:906:5e04:b0:7c0:e803:4ebb with SMTP id n4-20020a1709065e0400b007c0e8034ebbmr47465757eju.70.1673030506252; Fri, 06 Jan 2023 10:41:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673030506; cv=none; d=google.com; s=arc-20160816; b=cfwl1C29QVON4Q/oigcrhLorRAPbFM7Tfr+w+Z8f0s1PmAVF7ZwJ5fje77oitpLJBm HGX5m4HRfGz1BElcs/QS6XIv498R+k6ZQFfZ/i9riS9898T5xxZBAsCCAuN/MwWkJSjA +IfWfUL81ReNg9vePdpwRcx8Dm6YyiGqFJgcm+FkTNPLstALMQ2jhIAyvuFocZHCl9RR KZecVvYQ6ZyPYsASgtj0wTLipmIMn0HJTeaVH3sxQz0fyVp8ZT0/vYnZzzCnuNYXYxnc vgk5ruSSTgiomBLD/CjA9jBASuG5E26dtY2nfFke8wELH/7LA2P46hBJ1CRLDTcxEGeY Zrfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:sender:dkim-signature; bh=FviiSBK5p0B4z+PC3fKC8+sEAADVb45SBnYPZfnLnEY=; b=rHNYCjZkYH26vNWueo4OMb9adHHGTbdobgZ6Yso36CG74Pv/e8QMPehTLagsgKEnoY m68qYVOCMHaFfrbXbsWKdQ0y6b7rAOWs6r5oLpYJyhm+J7xg9PjSKBFPDJfvHBXHDqb8 R16Q14c+IFVzXLJCwdKOqcO+XIplMd70njCIJt+EXYGvsJ7Ud+ayZglCCBdNcco2YwLe KFXCXUxkf1aMsan0nJtQEQtN/0fYrbN/pZpRrX2kCMxgYI/WK8QcMb7XYx+5A1fPhJcJ O2rwNWgzrdbAQFA4vt1P9OFR90JKrPGN0UbO4kPBKGQs2FW4ZufaUSF1yG0auZhKkizt tmQw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=OV2BDC9J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jg16-20020a170907971000b00832054a624csi2271985ejc.173.2023.01.06.10.41.33; Fri, 06 Jan 2023 10:41:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-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=@gmail.com header.s=20210112 header.b=OV2BDC9J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235724AbjAFSXd (ORCPT + 54 others); Fri, 6 Jan 2023 13:23:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235811AbjAFSXa (ORCPT ); Fri, 6 Jan 2023 13:23:30 -0500 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 100382AC0; Fri, 6 Jan 2023 10:23:30 -0800 (PST) Received: by mail-pl1-x631.google.com with SMTP id p24so2450545plw.11; Fri, 06 Jan 2023 10:23:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:from:to:cc:subject:date:message-id :reply-to; bh=FviiSBK5p0B4z+PC3fKC8+sEAADVb45SBnYPZfnLnEY=; b=OV2BDC9JXxEtkmQOPrOeD3bwcQtCLLjCUmlAiID2R9QRkow5CEhZf+zKDwvAPy4lhL 0+S5/f5rhE0cHTLytLdC04LYcWbZG0JtV3cI3T+M6D/kdT1dvI3xqyjSsEl+8dC09BIs 8f130BruK0EHVNtD/HofxHMcznp3LwowZq3HTaHLnsO5X1jeSY8zf8iO4k5BfGp9Kk3U Rehva+a0ZqY6Zy6AZyFt+k1wVqGs8PMKeQ9p/qz/WyLSRSbIGfIU7VjRXxDZBb+T5Nvm 9JjJT8oCy8Icc4vEUsFLn0e4W/JQAL8ztmFh20lB+H8rqDJP9nhXkfcFCFpHk/4tpK/o C/Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FviiSBK5p0B4z+PC3fKC8+sEAADVb45SBnYPZfnLnEY=; b=Z989Ji7pzg98NUuObYovXUm/O6QsTURfgw0kMiur/bKewNUBlcIX59KYutOa+Q1R4U DhO5rF/1PUDGxbJoYOiIjFLEEjaYCZiao1EOShE/hBsrZTCuIpIjKvF/y231rF/vnJwQ p5a4pdkcM8wis/lLKaUJGKP0yj0/2TiYfBj6ArmMCyr2Vy9WUtaefxNf/ZxrldUwTYhQ ZVbslXo5q5fcvusKyknBy1i2WbjEfZ0MYdFCQDNP0de15XSbdGGxGTH3WCDHDLmPP7sT ZvT++e5SXf5oVCJUZjK46/CKKwLy4Mkz7ElN6rWKhBoBEVwkLmGgdiY8Tch0JF3Isk+w 1k3w== X-Gm-Message-State: AFqh2ko/e8Aip2ktoQMcAGINqPaxuz5cq7hBkALHMEH1Ebky/o/GerHa aB09k5+r7WBRw+wr1yr4fdA= X-Received: by 2002:a05:6a20:3d1a:b0:a4:b2e4:c561 with SMTP id y26-20020a056a203d1a00b000a4b2e4c561mr83779504pzi.51.1673029409205; Fri, 06 Jan 2023 10:23:29 -0800 (PST) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id k13-20020aa7972d000000b00561d79f1064sm1422424pfg.57.2023.01.06.10.23.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Jan 2023 10:23:28 -0800 (PST) Sender: Tejun Heo Date: Fri, 6 Jan 2023 08:23:27 -1000 From: Tejun Heo To: Yu Kuai Cc: hch@infradead.org, josef@toxicpanda.com, axboe@kernel.dk, cgroups@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, yi.zhang@huawei.com, yangerkun@huawei.com, "yukuai (C)" Subject: Re: [PATCH -next 3/4] block/rq_qos: use a global mutex to protect rq_qos apis Message-ID: References: <20230104085354.2343590-1-yukuai1@huaweicloud.com> <20230104085354.2343590-4-yukuai1@huaweicloud.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS autolearn=no 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 Hello, On Fri, Jan 06, 2023 at 09:33:26AM +0800, Yu Kuai wrote: > > wbt's lazy init is tied to one of the block device sysfs files, right? So, > > it *should* already be protected against device removal. > > That seems not true, I don't think q->sysfs_lock can protect that, > consider that queue_wb_lat_store() doesn't check if del_gendisk() is > called or not: > > t1: wbt lazy init t2: remove device > queue_attr_store > del_gendisk > blk_unregister_queue > mutex_lock(&q->sysfs_lock) > ... > mutex_unlock(&q->sysfs_lock); > rq_qos_exit > mutex_lock(&q->sysfs_lock); > queue_wb_lat_store > wbt_init > rq_qos_add > mutex_unlock(&q->sysfs_lock); So, it's not sysfs_lock but sysfs file deletion. When a kernfs, which backs sysfs, file is removed, it disables future operations and drains all inflight ones before returning, so you remove the interface files before cleaning up the object that it interacts with, you don't have to worry about racing against file operations as none can be in flight at that point. > I tried to comfirm that by adding following delay: > > diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c > index 93d9e9c9a6ea..101c33cb0a2b 100644 > --- a/block/blk-sysfs.c > +++ b/block/blk-sysfs.c > @@ -11,6 +11,7 @@ > #include > #include > #include > +#include > > #include "blk.h" > #include "blk-mq.h" > @@ -734,6 +735,8 @@ queue_attr_store(struct kobject *kobj, struct attribute > *attr, > if (!entry->store) > return -EIO; > > + msleep(10000); > + > mutex_lock(&q->sysfs_lock); > res = entry->store(q, page, length); > mutex_unlock(&q->sysfs_lock); > > And then do the following test: > > 1) echo 10000 > /sys/block/sdb/queue/wbt_lat_usec & > 2) echo 1 > /sys/block/sda/device/delete > > Then, following bug is triggered: > > [ 51.923642] BUG: unable to handle page fault for address: > ffffffffffffffed > [ 51.924294] #PF: supervisor read access in kernel mode > [ 51.924773] #PF: error_code(0x0000) - not-present page > [ 51.925252] PGD 1820b067 P4D 1820b067 PUD 1820d067 PMD 0 > [ 51.925754] Oops: 0000 [#1] PREEMPT SMP > [ 51.926123] CPU: 1 PID: 539 Comm: bash Tainted: G W > 6.2.0-rc1-next-202212267 > [ 51.927124] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS > ?-20190727_073836-b4 > [ 51.928334] RIP: 0010:__rq_qos_issue+0x30/0x60 This indicates that we aren't getting the destruction order right. It could be that there are other reasons why the ordering is like this and we might have to synchronize separately. Sorry that I've been asking you to go round and round but block device add/remove paths have always been really tricky and we wanna avoid adding more complications if at all possible. Can you see why the device is being destroyed before the queue attr is removed? Thanks. -- tejun