linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Denys Vlasenko <vda.linux@googlemail.com>
To: Pavel Emelyanov <xemul@parallels.com>
Cc: Andrew Vagin <avagin@parallels.com>,
	mtk.manpages@gmail.com, David Howells <dhowells@redhat.com>,
	linux-api@vger.kernel.org, Oleg Nesterov <oleg@redhat.com>,
	linux-kernel@vger.kernel.org, criu@openvz.org,
	Cyrill Gorcunov <gorcunov@openvz.org>,
	Andrey Wagin <avagin@gmail.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, Dave Jones <davej@redhat.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [CRIU] [PATCH 3/3] signalfd: add ability to read siginfo-s without dequeuing signals (v2)
Date: Mon, 11 Feb 2013 18:25:54 +0100	[thread overview]
Message-ID: <CAK1hOcNOYRWwrwZEpVza1CTSL_mHEj-Ur577QRnBNkOmdb=Bdw@mail.gmail.com> (raw)
In-Reply-To: <511905D7.3040209@parallels.com>

On Mon, Feb 11, 2013 at 3:53 PM, Pavel Emelyanov <xemul@parallels.com> wrote:
> On 02/11/2013 06:46 PM, Denys Vlasenko wrote:
>> On Mon, Feb 11, 2013 at 11:59 AM, Andrew Vagin <avagin@parallels.com> wrote:
>>>>> I suppose I had wondered along similar lines, but in a slightly
>>>>> different direction: would the use of a /proc interface to get the
>>>>> queued signals make some sense?
>>>>
>>>> I think that /proc interface beats adding magic flags and magic semantic
>>>> to [p]read.
>>>>
>>>> It also has the benefit of being human-readable. You don't need
>>>> to write a special C program to "cat /proc/$$/foo".
>>>>
>>>> Andrey, I know that it is hard to let go of the code you invested time
>>>> and efforts in creating. But this isn't the last patch, is it?
>>>> You will need to retrieve yet more data for process checkpointing.
>>>> When you start working on the next patch for it, consider trying
>>>> /proc approach.
>>>
>>> I don't think that we need to convert siginfo into a human readable format
>>> in kernel.
>>
>> My point is that bolting hacks onto various bits of kernel API
>> in order to support process checkpointing makes those APIs
>> (their in-kernel implementation) ridden with special cases
>> and harder to support in the future.
>>
>> Process checkpointing needs to bite the bullet and
>> create its own API instead.
>
> This is bad approach as well. What we should do is come up with a sane
> API that makes sense without the checkpoint-restore project _when_ _possible_.

Coming up with a sane API in general isn't easy.

Consider numerous blunders enshrined in the Unix API,
such as O_NONBLOCK being a file's flag instead of being
a flag of read(), or waitpid, or sigwait,
(had to be fds which one can feed to select/poll)...

If you have your own playground in /proc/PID/foo,
you can mature your API without touching many other areas
of kernel, and without making mistakes permanent.
Later, when other people are interested, they can factor out
your code.


You are planning to use signalfd to extract pending signals
from the process being checkpointed.

This must be a quite convoluted method already, since you
need to create a signalfd and then read from it *in the context
of the process you are checkpointing*.

I presume you are ptrace-attaching to the process and then
play games with setting registers and injecting syscalls.
This does not look particularly sane to me, I'm afraid.

Compared to this, ptrace-attaching to the process
and then reading from /proc or issuing a new ptrace request
looks much cleaner. My opinion, of course.

-- 
vda

  reply	other threads:[~2013-02-11 17:26 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-22 10:15 [PATCH 0/3] signalfd: a kernel interface for dumping pending signals Andrey Vagin
2013-01-22 10:15 ` [PATCH 1/3] signal: add a helper for dequeuing signals from a specified queue Andrey Vagin
2013-02-05 12:00   ` [PATCH 1/3] signal: add a helper for dequeuing signals from a specified queue (v2) Andrey Vagin
2013-01-22 10:15 ` [PATCH 2/3] signalfd: add ability to choose a private or shared queue Andrey Vagin
2013-02-07 18:17   ` Oleg Nesterov
2013-02-08  0:35     ` Michael Kerrisk (man-pages)
2013-02-08 19:12       ` Oleg Nesterov
2013-01-22 10:15 ` [PATCH 3/3] signalfd: add ability to read siginfo-s without dequeuing signals Andrey Vagin
2013-01-29 19:03   ` [PATCH 3/3] signalfd: add ability to read siginfo-s without dequeuing signals (v2) Andrey Vagin
     [not found]     ` <CAKgNAkgQA=zK=2ZnytPFU=DH6jr0sja0iy6K+j6c7unheLFniQ@mail.gmail.com>
2013-02-02  7:15       ` Andrey Wagin
2013-02-07 17:34     ` Oleg Nesterov
2013-02-07 21:13       ` Andrey Wagin
2013-02-08  0:51         ` Michael Kerrisk (man-pages)
2013-02-08 19:10         ` Oleg Nesterov
2013-02-08 20:15           ` Michael Kerrisk (man-pages)
2013-02-09 18:22             ` Oleg Nesterov
2013-02-09 22:53               ` Michael Kerrisk (man-pages)
2013-02-10 10:04                 ` [CRIU] " Andrew Vagin
2013-02-11 16:47                   ` Oleg Nesterov
2013-02-10 10:07               ` Andrew Vagin
2013-02-11  9:29             ` Denys Vlasenko
2013-02-11 10:59               ` [CRIU] " Andrew Vagin
2013-02-11 14:46                 ` Denys Vlasenko
2013-02-11 14:53                   ` Pavel Emelyanov
2013-02-11 17:25                     ` Denys Vlasenko [this message]
2013-02-12 14:50                       ` Pavel Emelyanov
2013-01-23  4:19 ` [PATCH 0/3] signalfd: a kernel interface for dumping pending signals Michael Kerrisk (man-pages)
2013-01-23 11:03   ` Andrew Vagin
2013-01-23 12:11     ` Michael Kerrisk (man-pages)
2013-01-23 13:03       ` Andrew Vagin
2013-02-07 18:20   ` Oleg Nesterov
2013-02-08  0:36     ` Michael Kerrisk (man-pages)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK1hOcNOYRWwrwZEpVza1CTSL_mHEj-Ur577QRnBNkOmdb=Bdw@mail.gmail.com' \
    --to=vda.linux@googlemail.com \
    --cc=avagin@gmail.com \
    --cc=avagin@parallels.com \
    --cc=criu@openvz.org \
    --cc=davej@redhat.com \
    --cc=dhowells@redhat.com \
    --cc=gorcunov@openvz.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=oleg@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xemul@parallels.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).