Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp223948rwe; Tue, 23 Aug 2022 22:59:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR7ZAKNcdujFCVOgQGhs7c/5ca2px3VLOSiTtUOUNUFWQXbtGY8KJvT8J5WfMAfGbqJ+ldzR X-Received: by 2002:a17:902:d484:b0:16f:161c:ac3f with SMTP id c4-20020a170902d48400b0016f161cac3fmr27090829plg.107.1661320792493; Tue, 23 Aug 2022 22:59:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661320792; cv=none; d=google.com; s=arc-20160816; b=Igp97zRR7DRvVF3gyOIQY8jOnGPI5Qzm7qePgEjabyJd+QREzu4u7S3dWMnZGaWvnh ku/sVBSWF13Ww5sNGMjD+aruriQz07Hm69qsyS2l+SqgMSr8VbNG2fYn9+cmuW4ZLDd9 4T/xsPyXGeqn5u7CkcGIZfHiO5zyBr6h3tX/nQkol74Cn9FY+DkymELb92eECDSN62GB YTNqR85L6EZtaIh3husSXBosAx4ov3TWU3meq2VdF6gShXe7h2Gl0d0NJoGX1KSiVvo8 MvzxzJVXKZBHdftkdYobFLw0i/5hxp67AKdLL7U+/DGlLMfCnE4pSh5MCbBQ+OqQCbUi nraA== 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; bh=/UVw93UO2CbG613tlwaeXbY0HIeIQV2NATBhmGsCnPk=; b=eanIK5NfI4bYTUTyAb/yr+vfcEAjFhnpd8swQY8vIvIoahknqXYdlLTDpYSQTQ2NQW cQ/142b8j2le1fdr2iHveOlSa1oiZ5FOeJClmDJ48KvVahCH0yYDvmJcY/SrwEFqyMpF 7tKpvzL0lxBKolFLLTY0m8bW5hmoWYou1VhlVIKxIc/FpCvUgM/qKPk8+1pS7NdXdGLT BajwJdkTNYT94MULySP3TjQzLgewInrQ6mpi0IfSWjrIYPANQa0i9eBzS42OSD+0E6aU USBJWb8jvlSzuQ2EmYJaTxDKGVW/4TfjeD78NIs50bwLPCjX98SoRVh4q3eBPBiUd4r3 cOMQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y24-20020a63de58000000b003fe046301d2si16579531pgi.527.2022.08.23.22.59.39; Tue, 23 Aug 2022 22:59:52 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233356AbiHXFtB (ORCPT + 99 others); Wed, 24 Aug 2022 01:49:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46482 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233212AbiHXFs7 (ORCPT ); Wed, 24 Aug 2022 01:48:59 -0400 Received: from out30-131.freemail.mail.aliyun.com (out30-131.freemail.mail.aliyun.com [115.124.30.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36856861D0; Tue, 23 Aug 2022 22:48:54 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R621e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045168;MF=ziyangzhang@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0VN5zTYO_1661320119; Received: from localhost.localdomain(mailfrom:ZiyangZhang@linux.alibaba.com fp:SMTPD_---0VN5zTYO_1661320119) by smtp.aliyun-inc.com; Wed, 24 Aug 2022 13:48:52 +0800 From: ZiyangZhang To: ming.lei@redhat.com, axboe@kernel.dk Cc: xiaoguang.wang@linux.alibaba.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, joseph.qi@linux.alibaba.com, ZiyangZhang Subject: [RFC PATCH 1/9] ublk_drv: check 'current' instead of 'ubq_daemon' Date: Wed, 24 Aug 2022 13:47:36 +0800 Message-Id: <20220824054744.77812-2-ZiyangZhang@linux.alibaba.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220824054744.77812-1-ZiyangZhang@linux.alibaba.com> References: <20220824054744.77812-1-ZiyangZhang@linux.alibaba.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL 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 This check is not atomic. So with recovery feature, ubq_daemon may be updated simultaneously by recovery task. Instead, check 'current' is safe here because 'current' never changes. Also add comment explaining this check, which is really important for understanding recovery feature. Signed-off-by: ZiyangZhang --- drivers/block/ublk_drv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 6a4a94b4cdf4..c39b67d7133d 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -645,14 +645,22 @@ static inline void __ublk_rq_task_work(struct request *req) struct ublk_device *ub = ubq->dev; int tag = req->tag; struct ublk_io *io = &ubq->ios[tag]; - bool task_exiting = current != ubq->ubq_daemon || ubq_daemon_is_dying(ubq); unsigned int mapped_bytes; pr_devel("%s: complete: op %d, qid %d tag %d io_flags %x addr %llx\n", __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags, ublk_get_iod(ubq, req->tag)->addr); - if (unlikely(task_exiting)) { + /* + * Task is exiting if either: + * + * (1) current != ubq_daemon. + * io_uring_cmd_complete_in_task() tries to run task_work + * in a workqueue if ubq_daemon(cmd's task) is PF_EXITING. + * + * (2) current->flags & PF_EXITING. + */ + if (unlikely(current != ubq->ubq_daemon || current->flags & PF_EXITING)) { blk_mq_end_request(req, BLK_STS_IOERR); mod_delayed_work(system_wq, &ub->monitor_work, 0); return; -- 2.27.0