Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp325145rwb; Wed, 21 Sep 2022 23:19:40 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4Cl92fKsNNLtVEQVYXTdWh3T1Uk+XAQZx67DhHk3kTQKm5fl17tcpI4hcYRbc6QTXWDCNS X-Received: by 2002:a17:907:b09:b0:76f:99cc:81cd with SMTP id h9-20020a1709070b0900b0076f99cc81cdmr1351245ejl.530.1663827580116; Wed, 21 Sep 2022 23:19:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663827580; cv=none; d=google.com; s=arc-20160816; b=gUd1yEf9s1GYKt5Uq9tqi3YJ4PwLQTEox1c/X+KjrOsmJDaOQOeRibg0myGEgFKkb7 YPsizCxYB57bVX+rdoZB0MgHr/Dp23PTkwe+nKmi2WLfb3LS4hc0CvP/4c9wAqcqLXU9 46N6jcgxMIjTZuSxzasgunhTSp3DY43sqHu0tBtIesqAVZpL0odQN7OEDz8YqxcPKKtk g7OX3mKWYVpDcyGEmM0JFtc9q4S24rEcpxQESP1ynO+Yry1LE4LEfRkMWwGn93r+8k74 Uef+lAQRMsHHiRod32jm8+WGELkM7KoqpGB5EtWtxqJFUmPX5GNEqQWB8S35p3IUzVhS jHew== 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=VUZHas3HzWtP/GQxGSmQozTHiX9AEFLKITV3F2aFPNA=; b=gHaqIuQcZgWUdnjaAxYgClZJ/vr5cXhq554YkC+YNAbRwc4C0GcXatJKkFkaEdvfI6 x/HXm8s/ps4uDdgoj+cfOVnWVVE0pv9nN5mBb6Tjdg17WN7R6csQQCpZTzvXDOj8ZS29 nspkJRxMAGmm4ysOy0OZ568QtgtIKot+XP0255sjwhPnLJbC5ezQy6jW8eRWiqngWlvh yW7VlfufLNqSPlAQFsQc/AQN9W++f5VKgt/tYYi350doVFgEr2U0oXzeGSyrdhab5gAX QbkBsN7Kvm7mm7o+cd6D9E5/SbXqdhMsHfnH/bzpaFWGReE/bZYRn0DHaqe64XnAco0N rK1A== 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 js1-20020a17090797c100b00780429cae7fsi4328439ejc.409.2022.09.21.23.19.12; Wed, 21 Sep 2022 23:19:40 -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 S229645AbiIVGSF (ORCPT + 99 others); Thu, 22 Sep 2022 02:18:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229919AbiIVGSC (ORCPT ); Thu, 22 Sep 2022 02:18:02 -0400 Received: from out30-56.freemail.mail.aliyun.com (out30-56.freemail.mail.aliyun.com [115.124.30.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B116B56C7; Wed, 21 Sep 2022 23:18:01 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R111e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045192;MF=ziyangzhang@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0VQRHxMo_1663827471; Received: from localhost.localdomain(mailfrom:ZiyangZhang@linux.alibaba.com fp:SMTPD_---0VQRHxMo_1663827471) by smtp.aliyun-inc.com; Thu, 22 Sep 2022 14:17:59 +0800 From: ZiyangZhang To: ming.lei@redhat.com Cc: axboe@kernel.dk, xiaoguang.wang@linux.alibaba.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, joseph.qi@linux.alibaba.com, ZiyangZhang Subject: [PATCH V5 1/7] ublk_drv: check 'current' instead of 'ubq_daemon' Date: Thu, 22 Sep 2022 14:17:28 +0800 Message-Id: <20220922061734.21625-2-ZiyangZhang@linux.alibaba.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220922061734.21625-1-ZiyangZhang@linux.alibaba.com> References: <20220922061734.21625-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,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS,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 modified 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 Reviewed-by: Ming Lei --- 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