Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp310980yba; Wed, 24 Apr 2019 01:23:05 -0700 (PDT) X-Google-Smtp-Source: APXvYqw1bZZgA6aiiu28NiL7BapSbKOJ2+J2pS0ITCl3gOSkoNSKNRaHmZTB8yGk7KO22z1lHbu5 X-Received: by 2002:a17:902:b193:: with SMTP id s19mr30741009plr.17.1556094185828; Wed, 24 Apr 2019 01:23:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556094185; cv=none; d=google.com; s=arc-20160816; b=IDE8yr0TQvaOzr4f6D4pSeuqQX1WH46MwT1kxOzk+/S0AqpEFCP+jDhqOeT0geEBiR McKHGv7cJMwrc6GCWG1lZ+uWZTVQj8Sm7jj0sNGSIOF/1/xvEb37U9xDM29KGgPrSQDY 61iEYo5T1B3JeLkYfNhIsNgGTEMEhDp3ViT0X6s3BrqxOk6bpF0A1F3cr3Eau9EN4lA9 mXeUOYZFVUVHVhuFU29dcF3SXYp/Xw5BmnneyeDnkXpXrUuOKP0GXWO+wnEOM4YiKTTz ozXL6jrAUGDgUmYFJrUtvLd8EOXyBoKlFzAuK+nv0t/n9iaH7Jl/1j0BN9U/iJqGbbHT 2HmQ== 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:organization:from:references:cc:to:subject; bh=jglBXnz4XI5PD4rT2yKoLS8IOJtJBRUfTvtLCxd0VTo=; b=n4uR71km/1G2TjjtHpwUIvrBEMYUkPf9mJ0qb2I32fCjKN/DDmnOYp4ivWnlGWLyZc C+Xl7BfOtr13vNTdELdfrUUUJIK04/9qYszyfqJExVxfULtzUV5L+di111VKv32Porbq +U2xBKvX3ma0hX/+z86Gnv7Ur7rrTHltHqBrpcTXbwzi0YZ+UnaJBRLIxHYYbS9bkDOy pIgwTXWaO5CLLJSli0snvTdpE2Jl+OR2H57ZZV3lItcTOwalC3BpaBjXk+Z/vUpl7cBI GXu8cYMpAQa9nRrC5jkdqKri+AA1/XdB+OafWFR9Wn0jZkC4Pa22MRhF+25IAJ8mhFtj icsg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z6si17626876plo.372.2019.04.24.01.22.50; Wed, 24 Apr 2019 01:23:05 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730135AbfDXIV4 (ORCPT + 99 others); Wed, 24 Apr 2019 04:21:56 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:44591 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728164AbfDXIVz (ORCPT ); Wed, 24 Apr 2019 04:21:55 -0400 Received: from [192.168.1.115] ([95.114.95.254]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Mrfgi-1gySmp38dw-00njUV; Wed, 24 Apr 2019 10:20:39 +0200 Subject: Re: [PATCH RFC 1/2] Add polling support to pidfd To: Daniel Colascione , Christian Brauner Cc: Joel Fernandes , Jann Horn , Oleg Nesterov , Florian Weimer , kernel list , Andy Lutomirski , Steven Rostedt , Suren Baghdasaryan , Linus Torvalds , Alexey Dobriyan , Al Viro , Andrei Vagin , Andrew Morton , Arnd Bergmann , "Eric W. Biederman" , Kees Cook , linux-fsdevel , "open list:KERNEL SELFTEST FRAMEWORK" , Michal Hocko , Nadav Amit , Serge Hallyn , Shuah Khan , Stephen Rothwell , Taehee Yoo , Tejun Heo , Thomas Gleixner , kernel-team , Tycho Andersen References: <20190411175043.31207-1-joel@joelfernandes.org> <20190416120430.GA15437@redhat.com> <20190416192051.GA184889@google.com> <20190417130940.GC32622@redhat.com> <20190419190247.GB251571@google.com> <20190419191858.iwcvqm6fihbkaata@brauner.io> <20190419194902.GE251571@google.com> From: "Enrico Weigelt, metux IT consult" Organization: metux IT consult Message-ID: Date: Wed, 24 Apr 2019 10:20:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:ptqTMZDJ2Wo4Z2LJdnpB5Xnw53Q8cG1mPDwdx+InPL0ztimpN0h WPDIO06x7zH1v67D/a+Z3+O1fpNuKYImG9t+45DZ+hQ84BKKnfLW6zPHDaQN4sNsQ4MjraR 1+kJXJ1QAVh7EeuMVcAPzKfR3CMOR8wtFaN5wxmbd8/LIOKmBC8MLLCqfg6oGRno6C0Alk0 MAPh+LRpuuQsp2wlyTHkg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:Xbmelr0mM2c=:9/6O2j5BRgRt5Byrtxxb6B l3uiYZ9Gu0RgRcZB6Spvs8FgAsKZOE3CYZdL5RXwQH/n55rnw8fgVpOUcOxhh3/AsUMVQKFRX fGxUOJ8DAyg6zie7+3poiiOagRWaHlcTRipvq8P7U4QXdfo/LYMlmS5fXyOxJzHfUHUDlUVxN 6o/GeyUN7veucJhZr/yTTMnExxQykWNpqS3devFz3iCZwmITgimeBbp1CdWq0eSWzI6b6QRGo aS3CQ8C9Vs+F7T/72Sq8M232ILKcf6pQZ4dU/6mfnsEuodfcbZNKARK24LhyCiozpn27Y6Rp2 q4ttyU4WDwoul7ohBE/qOQb5YaQ9r5plHychSXPeH0mEbX7lITzfWwGSqx5lwIvjSQ1cByIAb pJXXzJ0Zwq1qE67yZ7ZiZfayfsClOrlmxadNOrB2/F2PdviNu/9a7SJ3Woe9dADEqu5BsrQ9Y 52I+iYD16ZDZq+IdU15Z/YIvyU6Ci29M407IWuQxvx6QDLHwVtVQGP5ZGiy4brBJHtNMq3uFn Usw2pihLlh1OvIhOHCGOVbufqk96QO532WWugyaZ34VogWeRGbZOjm7OpN53RAHqBrzqCGijh cOg+tHw0Wq+kYOYww7gVtZT6sPWGDd7iWo7FiRs1SSC7DBR7ch4rKj1OqtsYl58Mj6lByV08o ZBniEvfFCb2pAqNemYwSRam/wtdsB9KbB0XsMXhbyKvIfOKlu+I7Y3zovQPu4hhTr+Q4q7T6K YeT2gjaiSjssDkPifG4PnNDC9EiO6NQ0OFjx8qAblivltMlXhPwmGIjULaI= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 19.04.19 23:21, Daniel Colascione wrote: >> EPOLLIN on a pidfd could very well mean that data can be read via >> a read() on the pidfd *other* than the exit status. The read could e.g. >> give you a lean struct that indicates the type of state transition: NOTIFY_EXIT, >> NOTIFY_EXEC, etc.. This way we are not bound to a specific poll event indicating >> a specific state. >> Though there's a case to be made that EPOLLHUP could indicate process exit >> and EPOLLIN a state change + read(). > > And do you imagine making read() destructive? Does that read() then > reset the POLLIN state? You're essentially proposing that a pidfd > provide an "event stream" interface, delivering notifications packets > that indicate state changes like "process exited" or "process stopped" > or "process execed". While this sort of interface is powerful and has > some nice properties that tools like debuggers and daemon monitors > might want to use, I think it's too complicated and error prone for > the overwhelmingly common case of wanting to monitor process lifetime. I don't think it's so complicated. read() + comparing a few bits (eg. strncmp(), if the packets are strings) really isn't a big deal. Actually, I proposed quite the same (before I read this mail). > I like Linus' idea of just making waitid(2) (not waitpid(2), as I > mistakenly mentioned earlier) on a pidfd act *exactly* like a > waitid(2) on the corresponding process and making POLLIN just mean > "waitid will succeed". It's a nice simple model that's easy to reason > about and that makes it easy to port existing code to pidfds. Okay, that's probably a good starting point. We could add more sophisticated monitoring later. --mtx -- Enrico Weigelt, metux IT consult Free software and Linux embedded engineering info@metux.net -- +49-151-27565287