All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nagarathnam Muthusamy <nagarathnam.muthusamy@oracle.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
	khlebnikov@yandex-team.ru, prakash.sangappa@oracle.com,
	luto@kernel.org, akpm@linux-foundation.org, oleg@redhat.com,
	serge.hallyn@ubuntu.com, esyr@redhat.com, jannh@google.com
Subject: Re: [RESEND RFC] translate_pid API
Date: Tue, 20 Mar 2018 13:14:14 -0700	[thread overview]
Message-ID: <3a46a03d-e4dd-59b6-e25f-0020be1b1dc9@oracle.com> (raw)
In-Reply-To: <877eqejowd.fsf@xmission.com>


(Resending the reply as there was a reject due to HTML in email)

On 03/14/2018 03:03 PM, ebiederm@xmission.com wrote:
> Nagarathnam Muthusamy <nagarathnam.muthusamy@oracle.com> writes:
>
>> On 03/13/2018 08:29 PM, ebiederm@xmission.com wrote:
>>> The cost of that ``cheaper'' u64 that is not in any namespace is that
>>> you now have to go and implement a namespace of namespaces.  You haven't
>>> even attempted it.  So just no.    Anything that brings us to needing
>>> a namespace of namespaces is a bad design.
>> I am not trying to implement a namespace of namespaces.
> No you are using a design that will require a namespace of namespaces
> to be implemented to support CRIU (checkpoint/restart in userspace).
>
> So when I see your patch I see a patch that only implements the easy
> half of the work that needs to be done.
>
>>>> Following patch uses a 64-bit ID for namespace exported by procfs
>>>> for pid translation through a new file /proc/<pid>/ns/pidns_id.
>>> And this design detail is what brings the automatic nack.
>>>
>>> Use file descriptros and it sounds like your use case justifies what you
>>> are trying to do.
>> File descriptors are problematic for following reasons.
>> 1) I need to open a couple of file descriptors for every pid
>> translation request.
> You can cache descriptors across requests.  I suspect simply
> by tracking the origin of the shared memory segment you can figure
> out it's pid namespace.
>
>> 2) In case of nested PID namespaces, say a new pid namespace is
>> created at level 20,
>>      with unique ID, I could just record this ID in a shared memory for
>> interested process
>>      to use. In case of file descriptors, every level has to figure out
>> the process ID of the
>>      newly created namespace's init process and open a file descriptor
>> to track it.
> Toss in a bind mount of the file in some filesystem if that helps.
>
> But if I understand what you are talking about you are talking about
> having a shared memory segment shared between processes in different
> pid namespaces.
>
> In that shared memory segment for a processes in different namespaces
> you are talking about having the conversation structured as having
> information structured as pid-namespace pid.
>
> And crucuially you want anyone in any pid namespace to be able to read
> that shared memory segment and to make sense of what is going on,
> by just reading the pid namespace id.

This captures the usecase. Adding to that, every level is made up of
a combination of User, pid and mount namespace.

>
>
> Namespaces are all about making identifiers relative to their namespace.
>
> The only way I can see you gain an advantage with your shared memory
> design is by making identifiers that are not relative to their pid
> namespace.   As such identifiers will completely defeat the ability
> to implement CRIU support.
>
> The closest I have to such identifiers today are bind mounts of the
> namespace files.  So if you also have a common mount namespace you could
> use that.

We don't have common mount namespace. Each nested level will have
a new mount namespace. When a new nested level (User + pid + mnt) is
created, init process of new level cannot bind mount the namespace 
directory,
as the effects wont be visible to the other levels.

On other hand, the new init process could send SCM_CREDENTIALS message
to a centralized listener running outside of the whole setup which does only
bind mounts. Here, we have a single point of failure for the whole 
system and
this listener has to run as root to be able to do bind mounts. Apart 
from these,
I am not able to see the bind mount by listener being propagated to child
namespaces in my setup. Not sure if I am missing anything or this is the
expected behavior.

Is it possible to have application provide the ID to be associated with
the namespace? During dump, we can save the ID and during restore,
we can assign the ID using the same API. There is a possibility of
collision during restore. Is it ok to fail the restore during such scenario?

Thanks,
Nagarathnam.

>
> In theory a name in some other namespace is possible.  However anyone in
> a container will only be able to see the names in their container or in
> nested sub containers.  Which is what you have already with pids.  So I
> don't think that will help.
>
> Eric


  reply	other threads:[~2018-03-20 20:18 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-12 17:18 [RESEND RFC] translate_pid API nagarathnam.muthusamy
2018-03-13 20:47 ` Jann Horn
2018-03-13 21:20   ` Nagarathnam Muthusamy
2018-03-13 21:28     ` Jann Horn
2018-03-13 21:44       ` Nagarathnam Muthusamy
2018-03-13 22:00         ` Jann Horn
2018-03-13 22:45           ` Nagarathnam Muthusamy
2018-03-13 23:10             ` Jann Horn
2018-03-13 23:52               ` Nagarathnam Muthusamy
2018-03-14  3:29 ` Eric W. Biederman
2018-03-14 21:22   ` Nagarathnam Muthusamy
2018-03-14 22:03     ` Eric W. Biederman
2018-03-20 20:14       ` Nagarathnam Muthusamy [this message]
2018-03-21  0:33         ` Eric W. Biederman
     [not found]           ` <87a7v2z2qa.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 19:11             ` [REVIEW][PATCH 00/11] ipc: Fixing the pid namespace support Eric W. Biederman
2018-03-23 19:11               ` Eric W. Biederman
2018-03-23 19:11               ` Eric W. Biederman
2018-03-23 19:16               ` [REVIEW][PATCH 03/11] msg/security: Pass kern_ipc_perm not msg_queue into the msg_queue security hooks Eric W. Biederman
2018-03-23 19:16                 ` Eric W. Biederman
2018-03-23 21:55                 ` Casey Schaufler
2018-03-23 21:55                   ` Casey Schaufler
     [not found]                   ` <bb73b0ea-bcda-a996-8f14-48d9dd1b0940-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2018-03-24  5:37                     ` Eric W. Biederman
2018-03-24  5:37                       ` Eric W. Biederman
2018-03-24  5:37                       ` Eric W. Biederman
     [not found]                 ` <20180323191614.32489-3-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 21:55                   ` Casey Schaufler
2018-03-23 19:16               ` [REVIEW][PATCH 05/11] shm: Move struct shmid_kernel into ipc/shm.c Eric W. Biederman
2018-03-23 19:16                 ` Eric W. Biederman
     [not found]               ` <87vadmobdw.fsf_-_-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 19:16                 ` [REVIEW][PATCH 01/11] sem/security: Pass kern_ipc_perm not sem_array into the sem security hooks Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 21:46                   ` Casey Schaufler
2018-03-23 21:46                     ` Casey Schaufler
2018-03-28 23:20                     ` Davidlohr Bueso
2018-03-28 23:20                       ` Davidlohr Bueso
     [not found]                     ` <bdf6ed62-b75c-1920-d5ce-ea08428d03d0-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2018-03-28 23:20                       ` Davidlohr Bueso
     [not found]                   ` <20180323191614.32489-1-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 21:46                     ` Casey Schaufler
2018-03-23 19:16                 ` [REVIEW][PATCH 02/11] shm/security: Pass kern_ipc_perm not shmid_kernel into the shm " Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 21:54                   ` Casey Schaufler
2018-03-23 21:54                     ` Casey Schaufler
     [not found]                   ` <20180323191614.32489-2-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 21:54                     ` Casey Schaufler
2018-03-23 19:16                 ` [REVIEW][PATCH 03/11] msg/security: Pass kern_ipc_perm not msg_queue into the msg_queue " Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 04/11] sem: Move struct sem and struct sem_array into ipc/sem.c Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 05/11] shm: Move struct shmid_kernel into ipc/shm.c Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 06/11] msg: Move struct msg_queue into ipc/msg.c Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 07/11] ipc: Move IPCMNI from include/ipc.h into ipc/util.h Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 08/11] ipc/util: Helpers for making the sysvipc operations pid namespace aware Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 09/11] ipc/shm: Fix shmctl(..., IPC_STAT, ...) between pid namespaces Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 10/11] ipc/msg: Fix msgctl(..., " Eric W. Biederman
2018-03-23 19:16                 ` [REVIEW][PATCH 11/11] ipc/sem: Fix semctl(..., GETPID, " Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-23 19:16                   ` Eric W. Biederman
2018-03-29  0:52                   ` Davidlohr Bueso
2018-03-29  0:52                     ` Davidlohr Bueso
2018-03-30 19:09                     ` Davidlohr Bueso
2018-03-30 19:09                       ` Davidlohr Bueso
2018-03-30 20:12                       ` Eric W. Biederman
2018-03-30 20:12                         ` Eric W. Biederman
2018-03-30 20:45                         ` Davidlohr Bueso
2018-03-30 20:45                           ` Davidlohr Bueso
     [not found]                         ` <87y3i91fxh.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-30 20:45                           ` Davidlohr Bueso
2018-03-30 20:12                       ` Eric W. Biederman
2018-04-02 11:11                       ` Manfred Spraul
2018-04-02 11:11                         ` Manfred Spraul
2018-04-02 11:11                       ` Manfred Spraul
2018-03-30 19:09                     ` Davidlohr Bueso
     [not found]                   ` <20180323191614.32489-11-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-29  0:52                     ` Davidlohr Bueso
2018-03-24  5:40                 ` [REVIEW][PATCH 12/11] ipc: Directly call the security hook in ipc_ops.associate Eric W. Biederman
2018-03-24  5:40                   ` Eric W. Biederman
2018-03-24  5:40                   ` Eric W. Biederman
2018-03-28 23:40                   ` Davidlohr Bueso
2018-03-28 23:40                     ` Davidlohr Bueso
     [not found]                   ` <877eq2m3or.fsf_-_-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-28 23:40                     ` Davidlohr Bueso
2018-03-31  2:13                     ` James Morris
2018-03-31  2:13                       ` James Morris
2018-03-31  2:13                       ` James Morris
2018-03-24  5:42                 ` [REVIEW][PATCH 13/11] ipc/smack: Tidy up from the change in type of the ipc security hooks Eric W. Biederman
2018-03-29  1:12                 ` [REVIEW][PATCH 00/11] ipc: Fixing the pid namespace support Davidlohr Bueso
2018-03-29  1:12                   ` Davidlohr Bueso
2018-03-29  1:12                   ` Davidlohr Bueso
2018-03-29 18:42                   ` Eric W. Biederman
2018-03-29 18:42                     ` Eric W. Biederman
2018-03-29 18:42                   ` Eric W. Biederman
2018-03-23 19:16               ` [REVIEW][PATCH 07/11] ipc: Move IPCMNI from include/ipc.h into ipc/util.h Eric W. Biederman
2018-03-23 19:16                 ` Eric W. Biederman
2018-03-23 19:16               ` [REVIEW][PATCH 09/11] ipc/shm: Fix shmctl(..., IPC_STAT, ...) between pid namespaces Eric W. Biederman
2018-03-23 19:16                 ` Eric W. Biederman
     [not found]                 ` <20180323191614.32489-9-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 21:17                   ` NAGARATHNAM MUTHUSAMY
2018-03-23 21:17                     ` NAGARATHNAM MUTHUSAMY
2018-03-23 21:17                     ` NAGARATHNAM MUTHUSAMY
     [not found]                     ` <7df62190-2407-bfd4-d144-7304a8ea8ae3-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2018-03-23 21:33                       ` Eric W. Biederman
2018-03-23 21:33                         ` Eric W. Biederman
2018-03-23 21:33                         ` Eric W. Biederman
     [not found]                         ` <87lgeio4tb.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 21:41                           ` NAGARATHNAM MUTHUSAMY
2018-03-23 21:41                             ` NAGARATHNAM MUTHUSAMY
2018-03-23 21:41                             ` NAGARATHNAM MUTHUSAMY
2018-03-28 23:04                             ` Eric W. Biederman
2018-03-28 23:04                               ` Eric W. Biederman
     [not found]                               ` <87woxvajk9.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-28 23:18                                 ` Nagarathnam Muthusamy
2018-03-28 23:18                                   ` Nagarathnam Muthusamy
2018-03-28 23:18                                   ` Nagarathnam Muthusamy
     [not found]                             ` <1091a91e-f8ee-b091-6d95-78b33520fb2d-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2018-03-28 23:04                               ` Eric W. Biederman
2018-03-23 19:16               ` [REVIEW][PATCH 10/11] ipc/msg: Fix msgctl(..., " Eric W. Biederman
2018-03-23 19:16                 ` Eric W. Biederman
     [not found]                 ` <20180323191614.32489-10-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-23 21:21                   ` NAGARATHNAM MUTHUSAMY
2018-03-23 21:21                     ` NAGARATHNAM MUTHUSAMY
2018-03-23 21:21                     ` NAGARATHNAM MUTHUSAMY
2018-03-24  5:42               ` [REVIEW][PATCH 13/11] ipc/smack: Tidy up from the change in type of the ipc security hooks Eric W. Biederman
2018-03-24  5:42                 ` Eric W. Biederman
     [not found]                 ` <87y3iikp1y.fsf_-_-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2018-03-25  0:05                   ` Casey Schaufler
2018-03-25  0:05                     ` Casey Schaufler
2018-03-25  0:05                     ` Casey Schaufler
     [not found]                     ` <80cd2fea-c9a8-4f26-acbb-e0ecb34e4e40-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2018-03-28 23:38                       ` Davidlohr Bueso
2018-03-28 23:38                     ` Davidlohr Bueso
2018-03-28 23:38                       ` Davidlohr Bueso
2018-03-28 23:57                   ` Davidlohr Bueso
2018-03-28 23:57                 ` Davidlohr Bueso
2018-03-28 23:57                   ` Davidlohr Bueso

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=3a46a03d-e4dd-59b6-e25f-0020be1b1dc9@oracle.com \
    --to=nagarathnam.muthusamy@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=ebiederm@xmission.com \
    --cc=esyr@redhat.com \
    --cc=jannh@google.com \
    --cc=khlebnikov@yandex-team.ru \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=oleg@redhat.com \
    --cc=prakash.sangappa@oracle.com \
    --cc=serge.hallyn@ubuntu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.