Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp508566rwb; Thu, 22 Sep 2022 23:20:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7guSR8qdHgVVAWgVkgbBN4KjPC3Yqs9Lz++7yCjfF5eKOzrjCIxpxSZQ8adItUVnDrz16Y X-Received: by 2002:a05:6a00:16c8:b0:53b:3b9f:7283 with SMTP id l8-20020a056a0016c800b0053b3b9f7283mr7619197pfc.46.1663914023849; Thu, 22 Sep 2022 23:20:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663914023; cv=none; d=google.com; s=arc-20160816; b=QbDwGC9+JQbv2+W2jM54cZAIj6I8YdLSevKqKXY2Tj1Mp/PShkmbZGMDl+nehDRkX8 dK5rfjiVR6Vbtl/oLPnU7xBlcoPnj5zUD3e08as+ZjqsxgW0gQVFfc2zHs4e/k65uYEZ uRfZf3SAd0nCHWG+Y9TtHgIFlwsuNA6gocseEFWSF/8aUDOmkALR+gExKoFCUIqa+uTC avcQXKxy2W643CnSS0/lmxM/K9foZX8v2LP649m4aR/YdcFJN0R1EG0PgceAANIRNXNn dguT19CuhJekF/GZAl4iMlHGB6z+n31Ineo/9bQfC1YuhfDEVLBaKBg0OpEd6hJZU19h Y0JQ== 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=M3TXrs6Q8cu/BgVWzFibRSkBbH9F1/umywIQ5GRoNBW4DeYzbKy3mZWjO1Gr5mVJ6I yneSmlJCAm0oPQtEFWmeVLzVHVOnxw2huIhygbPZtMRjrwutDaQw9ikdn/btGPNtHs7C hoVC7LSQEp5NG2HQRGtYdkxz0IodAvgq2Zhglo4LjEE5NZPVX6Xpe0e980SftLvi1mOu BFnwZ2Hzhe1cEIJcmeB8ieZ543kgp4hUE3q+QuCmPCbjO/dGl2+dEyLgMYzDvoEojywJ pz95LvpMmFzRPQYn2u8ZEILK6FVffBDP9x8E4NCbE+nshqj72yvC8BOB2WSD6sMx9TO/ ef5g== 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 b14-20020a170903228e00b001751a9de12esi2395500plh.288.2022.09.22.23.20.10; Thu, 22 Sep 2022 23:20:23 -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 S229754AbiIWGP6 (ORCPT + 99 others); Fri, 23 Sep 2022 02:15:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229641AbiIWGPy (ORCPT ); Fri, 23 Sep 2022 02:15:54 -0400 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05D91F9611; Thu, 22 Sep 2022 23:15:52 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R161e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046059;MF=ziyangzhang@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0VQVS0d6_1663913745; Received: from localhost.localdomain(mailfrom:ZiyangZhang@linux.alibaba.com fp:SMTPD_---0VQVS0d6_1663913745) by smtp.aliyun-inc.com; Fri, 23 Sep 2022 14:15:50 +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: [RESEND PATCH V5 1/7] ublk_drv: check 'current' instead of 'ubq_daemon' Date: Fri, 23 Sep 2022 14:14:59 +0800 Message-Id: <20220923061505.52007-2-ZiyangZhang@linux.alibaba.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220923061505.52007-1-ZiyangZhang@linux.alibaba.com> References: <20220923061505.52007-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