Received: by 2002:a19:651b:0:0:0:0:0 with SMTP id z27csp3615864lfb; Mon, 9 May 2022 00:06:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzGtSxl37jXioIhIxiENcEGM3r55NH87WKmK+GOcLmBh+Z37VbdueYgLdkhyukHNCfqn5d2 X-Received: by 2002:a05:6a00:cd4:b0:510:49f7:12a4 with SMTP id b20-20020a056a000cd400b0051049f712a4mr14891145pfv.59.1652080013017; Mon, 09 May 2022 00:06:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652080013; cv=none; d=google.com; s=arc-20160816; b=Yb1fmQRY3QYrKuX+YnhrcHEKFJ8k3ionVaYNw2BY07KUf/Ql2Ry+Wv5M8hhGcFy1im F8NtwrFeaqTe3iODL5tq1JZ/UmCP5Mw+Qz3FY1g+GYica48N9xbTNu2GzChHapJYqUfo 7ibil0mQsXdzUzGTpSEwNS5MeYcuVKmIAN95I+R6ELddDOlF/ROgqLQ6IVO9voEtCguz 90kTDeVNqYVa28mnq/cnS/QCQsD8wcb10hfVm7os+aHGazHn+cUVUIT2ujJTQCEB3GnI rMKAv59PPwn6Fo3P98i1aFP2gontM7v8FEI2W+TP9JpZbN6MFar9//1Y63vqMZ/GgP1Q CGxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id :dkim-signature; bh=uDYYK0Fj+uUZkjFzaGqTdzReaL9mPitJtDVBnfx9TFE=; b=HpdhUwd9fHXFAMvBMQKmMPgZOrndyYkb7y4a2mjwSmubkQlvnInTVLRHHArGnxKJgL KTIQY/9puUWeLqOM7yokmafxmetNrT1HN5f+wtYZLjO1eSt3K2KBvX4gYH52Ge3v8tUI xeywN8AWxA6v6TUSd6U2OqGRrct0IL9wyVZMsrzyNB02GmMKomziDprM/6KaQdlRXIdK cWVCcegxx7Tj4xs1NVaTdYc75bE7VQ6Lz2B0h52Tw2FOrNfDDECX4qbZdJYkjHMQk9tJ 7qCBXYGuhleYPfriYaBVCC/UzazSt23mC0WVV8J/DwcjtOa+D46A0lKt8t1PkJAIJVRn LcGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=RWj10dAM; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id e7-20020a637447000000b003ab938b9b53si13810427pgn.242.2022.05.09.00.06.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 May 2022 00:06:53 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=RWj10dAM; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1496A1A8DE8; Mon, 9 May 2022 00:04:38 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1445523AbiEGGqi (ORCPT + 99 others); Sat, 7 May 2022 02:46:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234915AbiEGGqg (ORCPT ); Sat, 7 May 2022 02:46:36 -0400 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7014863C5; Fri, 6 May 2022 23:42:51 -0700 (PDT) Received: by mail-pj1-x1029.google.com with SMTP id e24so8855783pjt.2; Fri, 06 May 2022 23:42:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:to:cc:references :from:in-reply-to:content-transfer-encoding; bh=uDYYK0Fj+uUZkjFzaGqTdzReaL9mPitJtDVBnfx9TFE=; b=RWj10dAM7328cITCqLPZxKNBHiIP2VBhiOG0YbCUEPdCXsxUPB1J/sqmftI0u+WJ++ dXXeCpO6ybZsS4h6QuKTCUQP/yq4tEaoVjJU/Di6BrSTV4yw/eFqmoH6tZ4mwmQP4wBT JFMWfpJiQInyVlCaOmP9yvUwI8m5P4LnxAKkYrcTQdc7PaYXf3p2ss8KTjOMF3MltHBC eChj6UB8R8fwYYsrugsHDRb+p4G/AjR6YlVMpq7dIDfMRygTOFuanOHqREpX7I1yfyVU X5d7MQzG9PnQhnpU1tXJ9PihzNmJ6X4L/ltepjVlX/+mXqjKv8H4EmeL6eNzfcaYP/+m VszQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :to:cc:references:from:in-reply-to:content-transfer-encoding; bh=uDYYK0Fj+uUZkjFzaGqTdzReaL9mPitJtDVBnfx9TFE=; b=HvUa/ROALwTa+uHuxshljNPbckRCgCSNMpdY8+MQ9TyMHoEhfSWBD9BvhVD6JxAxQc CHWmcnb2SB89h37ZnQM5fRxOIeDJNLgXE7jUtkApCOFR1ZS1hAWDbyeKaA2n5id2Ygk3 4QqzMn7LfJM63jr7FyfALynHZIuwWZSd0s+glOxUbb3Nq4/cjSnncAirUxauGsMSwOm/ HMU0VRZ8dpBnRmbgwuA5NFzXJA+kV3UXLybex/Ca40Hk7XlIYw5ceracepsSkTzsZIfF kLMO9o0SMd/xx+uvxEkp/8j547gM1wpEMVyEkHLEvDQHb3C5cAeeTI7631nswmJiQgSy cmbA== X-Gm-Message-State: AOAM531HA+cmKl2pXJ1+YmvttTlLi5x3jpmOGA/BiJDK1e9gu/TwytmP YA6l/WjylYFytsxm6h3nu8I= X-Received: by 2002:a17:902:9a4c:b0:156:6735:b438 with SMTP id x12-20020a1709029a4c00b001566735b438mr7340365plv.46.1651905770975; Fri, 06 May 2022 23:42:50 -0700 (PDT) Received: from [192.168.255.10] ([106.53.4.151]) by smtp.gmail.com with ESMTPSA id ev17-20020a17090aead100b001cb6527ca39sm8660296pjb.0.2022.05.06.23.42.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 May 2022 23:42:50 -0700 (PDT) Message-ID: <6f59afd3-a591-90fd-0428-3572d910b689@gmail.com> Date: Sat, 7 May 2022 14:43:01 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: [PATCH 4/5] io_uring: add a helper for poll clean To: Pavel Begunkov , io-uring@vger.kernel.org Cc: Jens Axboe , linux-kernel@vger.kernel.org References: <20220506070102.26032-1-haoxu.linux@gmail.com> <20220506070102.26032-5-haoxu.linux@gmail.com> <28b1901e-3eb2-2a50-525c-62e1aa39eaac@gmail.com> From: Hao Xu In-Reply-To: <28b1901e-3eb2-2a50-525c-62e1aa39eaac@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 在 2022/5/7 上午12:22, Pavel Begunkov 写道: > On 5/6/22 08:01, Hao Xu wrote: >> From: Hao Xu >> >> Add a helper for poll clean, it will be used in the multishot accept in >> the later patches. >> >> Signed-off-by: Hao Xu >> --- >>   fs/io_uring.c | 23 ++++++++++++++++++----- >>   1 file changed, 18 insertions(+), 5 deletions(-) >> >> diff --git a/fs/io_uring.c b/fs/io_uring.c >> index d33777575faf..0a83ecc457d1 100644 >> --- a/fs/io_uring.c >> +++ b/fs/io_uring.c >> @@ -5711,6 +5711,23 @@ static int io_accept_prep(struct io_kiocb *req, >> const struct io_uring_sqe *sqe) >>       return 0; >>   } >> +static inline void __io_poll_clean(struct io_kiocb *req) >> +{ >> +    struct io_ring_ctx *ctx = req->ctx; >> + >> +    io_poll_remove_entries(req); >> +    spin_lock(&ctx->completion_lock); >> +    hash_del(&req->hash_node); >> +    spin_unlock(&ctx->completion_lock); >> +} >> + >> +#define REQ_F_APOLL_MULTI_POLLED (REQ_F_APOLL_MULTISHOT | REQ_F_POLLED) >> +static inline void io_poll_clean(struct io_kiocb *req) >> +{ >> +    if ((req->flags & REQ_F_APOLL_MULTI_POLLED) == >> REQ_F_APOLL_MULTI_POLLED) > > So it triggers for apoll multishot only when REQ_F_POLLED is _not_ set, > but if it's not set it did never go through arm_poll / etc. and there is > nothing to clean up. What is the catch? No, it is triggered for apoll multishot only when REQ_F_POLLED is set.. > > btw, don't see the function used in this patch, better to add it later > or at least mark with attribute unused, or some may get build failures. Gotcha. > > >> +        __io_poll_clean(req); >> +} >> + >>   static int io_accept(struct io_kiocb *req, unsigned int issue_flags) >>   { >>       struct io_accept *accept = &req->accept; >> @@ -6041,17 +6058,13 @@ static void io_poll_task_func(struct io_kiocb >> *req, bool *locked) >>   static void io_apoll_task_func(struct io_kiocb *req, bool *locked) >>   { >> -    struct io_ring_ctx *ctx = req->ctx; >>       int ret; >>       ret = io_poll_check_events(req, locked); >>       if (ret > 0) >>           return; >> -    io_poll_remove_entries(req); >> -    spin_lock(&ctx->completion_lock); >> -    hash_del(&req->hash_node); >> -    spin_unlock(&ctx->completion_lock); >> +    __io_poll_clean(req); >>       if (!ret) >>           io_req_task_submit(req, locked); >