Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp673039ybp; Wed, 9 Oct 2019 02:22:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqyR4C6CeB7SpzfCc1Hz+ycws8hRBNJQ/BHmMvi+JB00iD8rPezxfvu4Wm6Ll2oW4zom2RqC X-Received: by 2002:aa7:c410:: with SMTP id j16mr1957922edq.271.1570612935109; Wed, 09 Oct 2019 02:22:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570612935; cv=none; d=google.com; s=arc-20160816; b=AHWdWKkJfc1bg3/4rzF7U68YxeT5a9yecxY2tY40l8vZmKSHAzhZUTzL31HEjyKFU1 P7D/jDeZUSUZyDbKrlO+ADwc34dPs2rK4MBq4XQ70k/AvMJWOQa6xq+fdAlQNDXVB9MZ dE4yobBAt3Z1gkCZjxZ0IpNlWIC/Go1+viqJHA6PgzgZ+PRMC4xRdqVaebeyluYmXmVL UEXhGSZjV5dMCbVMwZU39TpFTW0WfQ/PHur0KZ8gt9f9ZAeVJop0MfhBrZFecgr04ms9 WJwGbCcUwc14g1y2pKGlzSwzmfjCpEBiYK5kJfGrSRh3Vg8WrrH7RVv/S4K9TxtUcOgR eXrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:dkim-signature; bh=gHezdtuOX84HjjcVdB2y/eeYNvckhm/8PE2ggyG9ad0=; b=HzOFJTao7T9bqU9sKs6ZGVofVSLrErLs5cx6fmH5d8afBGwO1eSzoRiW6c/x4cu408 PkbzigG2kQ/33F/Sc/wwxUVvqq4iRJzy8SI4qD9i5cS9tvOLccEHSarD0eA800ZOKpMj tkD10crwilXpo4iL76X87JDfftst9/f3kbAJVSzw2Dcf6LIJV1norCxvKEfJX3jAt+Hm vgwBgU4PjZPLpHn/Mk8uEmTbNbLaaJmvfgDFSqUH60ykT/tRibTZxxdw7nY/e23z3OYD BsDR2LvPKvlXDX183zLI5QW+5HH5/pJh3KZJ6Aqw+ZcXv3YFrrtjh4KXJ3tddIxa0NPg 8cvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=DwpGb6Wt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d35si924438ede.440.2019.10.09.02.21.52; Wed, 09 Oct 2019 02:22:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=DwpGb6Wt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730475AbfJIJTj (ORCPT + 99 others); Wed, 9 Oct 2019 05:19:39 -0400 Received: from mail-lj1-f175.google.com ([209.85.208.175]:44195 "EHLO mail-lj1-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725935AbfJIJTi (ORCPT ); Wed, 9 Oct 2019 05:19:38 -0400 Received: by mail-lj1-f175.google.com with SMTP id m13so1685908ljj.11; Wed, 09 Oct 2019 02:19:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=gHezdtuOX84HjjcVdB2y/eeYNvckhm/8PE2ggyG9ad0=; b=DwpGb6Wtg9rlKO83YaTivuO79UFjAwv27ZSDeI6ZYDy0S/OTg6XDV6NMnw/9i0mBXI PclwCHKYRRHxIWjVdX1v1Cwjc+jHcQeRNqGdO9Sc6XRTVjOKA4yDs6X4jmj8AxmsFylz Z+gTR6i3kwQiA1A2gzFQA3t0LkF+iuDBSabcYQe5tLoFT0Qkn0GQVhj/55Vsoie5Mci0 X1WzYg3hxtG95noQo5uBxZSQweSijHNZquyUdmc06cqarXssvnQDSl3CbOJ3ALQ2wHNd 7SNns8fCCy6/OeNdn+ONxUCIsZkED4N+y/1k0KQ82ijgpD0d8xVz6uaZF0ILD3X1QNGl HBEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=gHezdtuOX84HjjcVdB2y/eeYNvckhm/8PE2ggyG9ad0=; b=bWa2Y9y2vjQ8X+F+Ybs3hjYru/EhtAx044HMRochQPnKA6ydGhlzpPI6+emuzqJqdG r/OvCBh4Xdk0D4B8aeEQSNYGllCzMIPieybd9G+xne7UC2FyUMAVCq7GLgn4Cin9hLfb BUU+T+svivEK2JuJDOhL2umVKeZPcK2fVz7kQZdhU3bP3AtQ5e76Vmj0KuYmrcq50rG1 hTN7cCwFEgl1BxTBlLm//4xdmJhbC6UEvSUqOOzlLAmRXRuFSS34cUAmPEY+y3tC1JZ6 l0CXEzWyYc0LJxQ0EhJdhgr6eH3jg4g30PgYxEz/m2vCJX4oO8usFgEBvI35ceA2+Zs2 hEIA== X-Gm-Message-State: APjAAAXE47GsOKolSSDnapYrz4RDZoD4pTElLT7g5saZETnTUBJKawpn yCVdvcdvEU+kkFgm5GHpLXLmdxik X-Received: by 2002:a2e:6f0f:: with SMTP id k15mr1728148ljc.12.1570612774811; Wed, 09 Oct 2019 02:19:34 -0700 (PDT) Received: from [172.31.190.83] ([86.57.146.226]) by smtp.gmail.com with ESMTPSA id m17sm379327lje.0.2019.10.09.02.19.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Oct 2019 02:19:34 -0700 (PDT) Subject: Re: [PATCH] io_uring: remove wait loop spurious wakeups To: Jens Axboe , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org References: <936cd758d6c694fe1b8b9de050e24cfecdc2e60d.1570489620.git.asml.silence@gmail.com> <62a8a6c7-9c5b-c9a4-9c73-c77db87c6637@kernel.dk> <99bfb7aa-6980-fc14-32f7-a479dea63eb4@gmail.com> <4004b5bc-edf0-cc8f-8efc-7f848c95f0ba@gmail.com> From: Pavel Begunkov Message-ID: <51f54701-7cef-1ba1-e928-f427790ebfe4@gmail.com> Date: Wed, 9 Oct 2019 12:19:32 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/9/2019 5:54 AM, Jens Axboe wrote: >>>>>> BTW, is there a reason for ref-counting in struct io_kiocb? I understand >>>>>> the idea behind submission reference, but don't see any actual part >>>>>> needing it. >>>>> >>>>> In short, it's to prevent the completion running before we're done with >>>>> the iocb on the submission side. >>>> >>>> Yep, that's what I expected. Perhaps I missed something, but what I've >>>> seen following code paths all the way down, it either >>>> 1. gets error / completes synchronously and then frees req locally >>>> 2. or passes it further (e.g. async list) and never accesses it after >>> >>> As soon as the IO is passed on, it can complete. In fact, it can complete >>> even _before_ that call returns. That's the issue. Obviously this isn't >>> true for purely polled IO, but it is true for IRQ based IO. >> >> And the idea was to not use io_kiocb after submission. Except when we know, >> that it won't complete asynchronously (e.g. error), that could be checked >> with return code, I guess. > > I think you're still missing the point. During the submission it can go > away, it can be deep in a call chain. So it's not enough to say "we > won't touch it after completion returns", we need to hold a reference to > ensure it doesn't go away WHILE being submitted. > > Hope that helps! Now I get it, thanks Jens! -- Yours sincerely, Pavel Begunkov