[CRIU] Re: [PATCH 6/6] protobuf: Convert sk_packet_entry to PB
engine
Cyrill Gorcunov
gorcunov at openvz.org
Tue Jul 17 06:09:10 EDT 2012
On Tue, Jul 17, 2012 at 01:58:44PM +0400, Pavel Emelyanov wrote:
> On 07/13/2012 09:05 PM, Cyrill Gorcunov wrote:
> >
> > Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> > ---
> > include/image.h | 6 ---
> > protobuf/Makefile | 1 +
> > protobuf/sk-packet.proto | 4 ++
> > sk-queue.c | 77 +++++++++++++++++++++++++--------------------
> > 4 files changed, 48 insertions(+), 40 deletions(-)
> > create mode 100644 protobuf/sk-packet.proto
> >
>
> > @@ -120,15 +123,32 @@ static int dump_one_unix_fd(int lfd, u32 id, const struct fd_parms *p)
> >
> > BUG_ON(sk->sd.already_dumped);
> >
> > + fown.uid = p->fown.uid;
> > + fown.euid = p->fown.euid;
> > + fown.signum = p->fown.signum;
> > + fown.pid_type = p->fown.pid_type;
> > + fown.pid = p->fown.pid;
>
> You have helper for that already, don't you?
I've dropped all fown conversion in patch "protobuf: Drop fown_t type".
And yeah, there were pb_ helper for this earlier, should I update?
>
> > + skopts.n_so_rcv_tmo = 2;
> > + skopts.n_so_snd_tmo = 2;
>
> 2nd attempt: these should go to sockopt dumping code.
Wait, this member is referenced below in ue entry
ue.opts = &skopts;
thus is better to be allocated before assignment I think.
Maybe I should add some alloc_skopt() helper instead of
open-coding here? (I don't like the idea of allocating this
entries in sockopt dumping code, this look wrong for me,
because it's vague move I think).
> > @@ -766,16 +776,18 @@ int collect_unix_sockets(void)
> > if (ui->name[0] != '\0' &&
> > !(ui->ue->uflags & USK_EXTERN))
> > unlink(ui->name);
> > - } else
> > - ui->name = NULL;
> > + }
>
> Wrong. ui->name is not NULL after xmalloc.
This is removed lines.
> > pr_info(" `- Got 0x%x peer 0x%x\n", ui->ue->ino, ui->ue->peer);
> > file_desc_add(&ui->d, ui->ue->id, &unix_desc_ops);
> > list_add_tail(&ui->list, &unix_sockets);
> > +
> > + ui = NULL;
>
> What for?
yeah, redundant, thanks.
> > +int pb_restore_socket_opts(int sk, SkOptsEntry *soe)
> > +{
> > + int ret = 0;
> > +
> > + ret |= restore_opt(sk, SO_SNDBUFFORCE, &soe->so_sndbuf);
> > + ret |= restore_opt(sk, SO_RCVBUFFORCE, &soe->so_rcvbuf);
> > +
> > + if (soe->n_so_snd_tmo > 1)
>
> if != 2 report error
ok
>
> > + ret |= do_restore_opt(sk, SO_SNDTIMEO, soe->so_snd_tmo,
> > + pb_repeated_size(soe, so_snd_tmo));
> > + else
> > + ret |= -1;
> > + if (soe->n_so_rcv_tmo > 1)
> > + ret |= do_restore_opt(sk, SO_RCVTIMEO, soe->so_rcv_tmo,
> > + pb_repeated_size(soe, so_rcv_tmo));
> > + else
> > + ret |= -1;
> > +
> > + return ret;
> > +}
>
> options dump/restore -- should be separate patch
How? They are part of sk-unix.proto.
Cyrill
More information about the CRIU
mailing list