Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1155439rwb; Fri, 23 Sep 2022 08:52:39 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5xpqtcsYqC0uuk5EoSZZRyFoOeJHrste/Q2Uo9NhXwljT/HOWMCrQYPny4fCZacdYBZUXD X-Received: by 2002:a63:e211:0:b0:43b:f03e:3cc5 with SMTP id q17-20020a63e211000000b0043bf03e3cc5mr8266616pgh.256.1663948359664; Fri, 23 Sep 2022 08:52:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663948359; cv=none; d=google.com; s=arc-20160816; b=D23PPq1970NAUYI+ZDo5Dx/vypIp3We13o3OlqOdUzaREpupq6eFRG4sWatdv0gc+p 7beuKN9M/dUX1/m5vqEdrhKoGnUc6Gy9acFu7IJy0WaQ562ONe/HRVqxGJdyUjikeK5n UJFSFB0br6dC2Qqc1CFOzfT0pqYiZ/cOAJLc+vzhi/QHGm7sbH789efEUGSFGgsQgH8X l65Sj80egk2J2zGGnyXIovB21NJuuNNk27aiRoeyfiFkNxpoAqArTdjT9tWnRR8DWY1G Unm19VVRVCNTQj8hKksAy+wzlUrNYg6rQnOyEgoov9bcCpGR/yU/MtD807ad/SOIg2IN XzIA== 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=KDatn/RKXGAlLKq+CIxi0llZ2MtaCZpnTkLrDJA5bEeTDKcaa0vyXLQc/gMm5TpJWg aPzmK7SxnQsbPoPH7m9DdFaGlgWu4abK6TdVA1yzmEhAzCulJAAwxR8NYdemffBwtzvX En2KZkREOFsr4PuuBsQjyy/HMJoe5aOUqJQSwl68q/1VkOAQFJDAtTKqR7ZI8Vn/mGxV 20dKC7yA1rmMqRfw0wZBRuGWkUya16iRYr3wVfOjb2qgFl6sLFCmerbUS9tn6VcDG/+z bV6j0afT2+O4tCnsAsOKN4wrNJjACzJtmHyJmuB28wHNVjFnC1NsYloGe96m4cAP19hS +X3w== 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 k3-20020a056a00134300b0052b2d61f2c8si4572535pfu.293.2022.09.23.08.52.27; Fri, 23 Sep 2022 08:52:39 -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 S232431AbiIWPkF (ORCPT + 99 others); Fri, 23 Sep 2022 11:40:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37608 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230415AbiIWPj6 (ORCPT ); Fri, 23 Sep 2022 11:39:58 -0400 Received: from out30-57.freemail.mail.aliyun.com (out30-57.freemail.mail.aliyun.com [115.124.30.57]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C37024F1B; Fri, 23 Sep 2022 08:39:55 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R171e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046049;MF=ziyangzhang@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0VQXQbl1_1663947583; Received: from localhost.localdomain(mailfrom:ZiyangZhang@linux.alibaba.com fp:SMTPD_---0VQXQbl1_1663947583) by smtp.aliyun-inc.com; Fri, 23 Sep 2022 23:39:52 +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 V6 1/7] ublk_drv: check 'current' instead of 'ubq_daemon' Date: Fri, 23 Sep 2022 23:39:13 +0800 Message-Id: <20220923153919.44078-2-ZiyangZhang@linux.alibaba.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220923153919.44078-1-ZiyangZhang@linux.alibaba.com> References: <20220923153919.44078-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, 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