From: "Luis R. Rodriguez" <mcgrof@suse.com>
To: Dave Scott <Dave.Scott@citrix.com>
Cc: Ian Campbell <Ian.Campbell@citrix.com>,
"Luis R. Rodriguez" <mcgrof@do-not-panic.com>,
Vincent Hanquez <Vincent.Hanquez@eu.citrix.com>,
Stefano Stabellini <Stefano.Stabellini@citrix.com>,
Ian Jackson <Ian.Jackson@citrix.com>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 05/15] oxenstored: add support for systemd active sockets
Date: Wed, 30 Apr 2014 19:30:26 +0200 [thread overview]
Message-ID: <20140430173026.GF11838@wotan.suse.de> (raw)
In-Reply-To: <4CFC3D64-E02D-47D2-B1EF-1F97B435CE26@citrix.com>
[-- Attachment #1.1: Type: text/plain, Size: 5107 bytes --]
On Wed, Apr 30, 2014 at 08:35:50AM +0000, Dave Scott wrote:
> On 30 Apr 2014, at 02:11, Luis R. Rodriguez <mcgrof@do-not-panic.com> wrote:
> > An important different with socket activation is that systemd will set
> > FD_CLOEXEC for us on the socket before giving it to us, Ocaml gets
> > support for [1] Unix.set_cloexec but only as of 4.00.1+dev which isn't
> > yet widely available on distributions.
>
> I’m not familiar with systemd but I’m curious: if systems is setting the flag
> on the socket before giving it to us, why would we still need the
> Unix.set_cloexec function in OCaml?
systemd is setting the flag for us, my point was that Unix.set_cloexec is not being
set yet for non-systemd cases. This can go in as a separate patch, I for some
reason couldn't find this on documentation so I just checked out ocaml code to
find the right call, would this be OK as a separate patch:
diff --git a/tools/ocaml/xenstored/utils.ml b/tools/ocaml/xenstored/utils.ml
index d3d2e31..b206898 100644
--- a/tools/ocaml/xenstored/utils.ml
+++ b/tools/ocaml/xenstored/utils.ml
@@ -78,13 +78,13 @@ let create_regular_unix_socket name =
Unixext.mkdir_rec (Filename.dirname name) 0o700;
let sockaddr = Unix.ADDR_UNIX(name) in
let sock = Unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in
+ Unix.set_close_on_exec sock;
Unix.bind sock sockaddr;
Unix.listen sock 1;
sock
> ...
> > diff --git a/tools/ocaml/xenstored/systemd.ml b/tools/ocaml/xenstored/systemd.ml
> > new file mode 100644
> > index 0000000..cace794
> > --- /dev/null
> > +++ b/tools/ocaml/xenstored/systemd.ml
> > @@ -0,0 +1,16 @@
> > +(*
> > + * Copyright (C) 2014 Luis R. Rodriguez <mcgrof@suse.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU Lesser General Public License as published
> > + * by the Free Software Foundation; version 2.1 only. with the special
> > + * exception on linking described in file LICENSE.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU Lesser General Public License for more details.
> > + *)
> > +
> > +external sd_listen_fds: string -> Unix.file_descr = "ocaml_sd_listen_fds"
> > +external sd_active_socket_required: unit -> int = “ocaml_sd_active_socket_required"
>
> Minor comment: It would be clearer if sd_active_socket_required was unit ->
> bool. In the C code you should use Val_true and Val_false from
> <caml/mlvalues.h>.
Thanks! Like this? If so then I rolled this in, and can send as part of my v5.
diff --git a/tools/ocaml/xenstored/systemd.ml b/tools/ocaml/xenstored/systemd.ml
index cace794..baa1c00 100644
--- a/tools/ocaml/xenstored/systemd.ml
+++ b/tools/ocaml/xenstored/systemd.ml
@@ -13,4 +13,4 @@
*)
external sd_listen_fds: string -> Unix.file_descr = "ocaml_sd_listen_fds"
-external sd_active_socket_required: unit -> int = "ocaml_sd_active_socket_required"
+external sd_active_socket_required: unit -> bool = "ocaml_sd_active_socket_required"
diff --git a/tools/ocaml/xenstored/systemd.mli b/tools/ocaml/xenstored/systemd.mli
index a65ea5e..6f2db9c 100644
--- a/tools/ocaml/xenstored/systemd.mli
+++ b/tools/ocaml/xenstored/systemd.mli
@@ -18,4 +18,4 @@
val sd_listen_fds: string -> Unix.file_descr
(** Tells us whether or not systemd support was compiled in *)
-val sd_active_socket_required: unit -> int
+val sd_active_socket_required: unit -> bool
diff --git a/tools/ocaml/xenstored/systemd_stubs.c b/tools/ocaml/xenstored/systemd_stubs.c
index ded9542..942ae19 100644
--- a/tools/ocaml/xenstored/systemd_stubs.c
+++ b/tools/ocaml/xenstored/systemd_stubs.c
@@ -13,6 +13,7 @@
*/
#include <string.h>
+#include <stdbool.h>
#include <caml/mlvalues.h>
#include <caml/memory.h>
#include <caml/alloc.h>
@@ -139,7 +140,7 @@ CAMLprim value ocaml_sd_active_socket_required(void)
CAMLparam0();
CAMLlocal1(ret);
- ret = Val_int(1);
+ ret = Val_true;
CAMLreturn(ret);
}
@@ -159,7 +160,7 @@ CAMLprim value ocaml_sd_active_socket_required(void)
CAMLparam0();
CAMLlocal1(ret);
- ret = Val_int(0);
+ ret = Val_false;
CAMLreturn(ret);
}
diff --git a/tools/ocaml/xenstored/utils.ml b/tools/ocaml/xenstored/utils.ml
index d3d2e31..50f05c1 100644
--- a/tools/ocaml/xenstored/utils.ml
+++ b/tools/ocaml/xenstored/utils.ml
@@ -83,8 +83,7 @@ let create_regular_unix_socket name =
sock
let create_unix_socket name =
- let active_sockets = Systemd.sd_active_socket_required() in
- if active_sockets = 1 then
+ if Systemd.sd_active_socket_required() then
Systemd.sd_listen_fds name
else
create_regular_unix_socket name
>
> Everything else looks good to me!
Thanks, can I sprinkle an Acked-by: Dave Scott <Dave.Scott@citrix.com> ?
Luis
[-- Attachment #1.2: Type: application/pgp-signature, Size: 835 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2014-04-30 17:30 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-30 1:11 [PATCH v4 00/15] xen: add systemd support Luis R. Rodriguez
2014-04-30 1:11 ` [PATCH v4 01/15] xenstore: add support for a retry open limit on xenstored Luis R. Rodriguez
2014-05-07 15:03 ` Ian Campbell
2014-05-12 13:50 ` Ian Jackson
2014-05-12 14:18 ` Ian Campbell
2014-05-12 14:40 ` Jacek Konieczny
2014-05-12 15:37 ` Ian Jackson
2014-05-12 18:59 ` Luis R. Rodriguez
2014-05-13 21:33 ` Luis R. Rodriguez
2014-04-30 1:11 ` [PATCH v4 02/15] xencommons: use the retry limit instead of implementing our own timeout Luis R. Rodriguez
2014-04-30 9:33 ` Andrew Cooper
2014-04-30 16:36 ` Luis R. Rodriguez
2014-05-07 15:05 ` Ian Campbell
2014-04-30 1:11 ` [PATCH v4 03/15] xenstored: enable usage of config.h on both xenstored and oxenstored Luis R. Rodriguez
2014-05-07 15:06 ` Ian Campbell
2014-04-30 1:11 ` [PATCH v4 04/15] cxenstored: add support for systemd active sockets Luis R. Rodriguez
2014-05-07 15:18 ` Ian Campbell
2014-05-07 15:46 ` Ian Campbell
2014-05-13 22:17 ` Luis R. Rodriguez
2014-05-14 8:44 ` Ian Campbell
2014-05-15 1:50 ` Luis R. Rodriguez
2014-04-30 1:11 ` [PATCH v4 05/15] oxenstored: " Luis R. Rodriguez
2014-04-30 8:35 ` Dave Scott
2014-04-30 17:30 ` Luis R. Rodriguez [this message]
2014-05-01 10:21 ` Dave Scott
2014-04-30 9:27 ` Anil Madhavapeddy
2014-04-30 17:35 ` Luis R. Rodriguez
2014-05-01 9:16 ` Anil Madhavapeddy
2014-05-07 15:20 ` Ian Campbell
2014-05-12 19:09 ` Luis R. Rodriguez
2014-05-12 13:57 ` Ian Jackson
2014-05-12 18:11 ` Luis R. Rodriguez
2014-05-13 8:53 ` Ian Campbell
2014-04-30 1:11 ` [PATCH v4 06/15] tools/xendomains: make xl the default Luis R. Rodriguez
2014-04-30 7:02 ` Olaf Hering
2014-04-30 17:43 ` Luis R. Rodriguez
2014-05-07 15:21 ` Ian Campbell
2014-04-30 1:12 ` [PATCH v4 07/15] tools/xendomains: do space cleanups Luis R. Rodriguez
2014-04-30 1:12 ` [PATCH v4 08/15] tools/xendomains: move to libexec and use a smaller init helper Luis R. Rodriguez
2014-05-07 15:24 ` Ian Campbell
2014-05-13 22:21 ` Luis R. Rodriguez
2014-04-30 1:12 ` [PATCH v4 09/15] autoconf: xen: force a refresh with autoconf Luis R. Rodriguez
2014-05-07 15:25 ` Ian Campbell
2014-05-07 16:12 ` Roger Pau Monné
2014-05-07 16:21 ` Ian Campbell
2014-05-07 16:44 ` Roger Pau Monné
2014-05-07 18:28 ` Luis R. Rodriguez
2014-05-12 14:00 ` Ian Jackson
2014-05-12 18:14 ` Luis R. Rodriguez
2014-04-30 1:12 ` [PATCH v4 10/15] autoconf: update m4/pkg.m4 Luis R. Rodriguez
2014-05-07 15:28 ` Ian Campbell
2014-05-13 22:32 ` Luis R. Rodriguez
2014-05-07 16:17 ` Roger Pau Monné
2014-04-30 1:12 ` [PATCH v4 11/15] autoconf: xen: move standard variables to a generic place Luis R. Rodriguez
2014-04-30 6:52 ` Jan Beulich
[not found] ` <5360B9CB020000780000D9BB@suse.com>
2014-04-30 17:53 ` Luis R. Rodriguez
2014-05-02 8:12 ` Jan Beulich
2014-05-13 23:03 ` Luis R. Rodriguez
2014-04-30 1:12 ` [PATCH v4 12/15] autoconf: xen: peg the xenstored preference onto the top level config Luis R. Rodriguez
2014-05-07 15:32 ` Ian Campbell
2014-05-13 23:05 ` Luis R. Rodriguez
2014-04-30 1:12 ` [PATCH v4 13/15] systemd: add xen systemd service and module files Luis R. Rodriguez
2014-05-07 15:46 ` Ian Campbell
2014-05-12 18:22 ` Luis R. Rodriguez
2014-05-13 23:28 ` Luis R. Rodriguez
2014-05-12 14:11 ` Ian Jackson
2014-05-12 14:32 ` Jacek Konieczny
2014-05-12 15:36 ` Ian Jackson
2014-05-12 18:55 ` Luis R. Rodriguez
2014-05-12 18:46 ` Luis R. Rodriguez
2014-05-13 8:57 ` Ian Campbell
2014-04-30 1:12 ` [PATCH v4 14/15] autoconf: xen: add systemd support into the build system Luis R. Rodriguez
2014-05-07 16:40 ` Roger Pau Monné
2014-05-15 1:58 ` Luis R. Rodriguez
2014-05-15 9:02 ` Ian Campbell
2014-04-30 1:12 ` [PATCH v4 15/15] autoconf: xen: trigger an update with autogen.sh Luis R. Rodriguez
2014-05-07 15:47 ` Ian Campbell
2014-05-07 18:34 ` Luis R. Rodriguez
2014-05-08 8:42 ` Ian Campbell
2014-04-30 1:15 ` [PATCH v4 00/15] xen: add systemd support Luis R. Rodriguez
2014-05-07 15:18 ` Ian Campbell
2014-05-08 11:28 ` Anthony PERARD
2014-05-15 2:12 ` Luis R. Rodriguez
2014-05-15 6:14 ` Luis R. Rodriguez
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=20140430173026.GF11838@wotan.suse.de \
--to=mcgrof@suse.com \
--cc=Dave.Scott@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@citrix.com \
--cc=Stefano.Stabellini@citrix.com \
--cc=Vincent.Hanquez@eu.citrix.com \
--cc=mcgrof@do-not-panic.com \
--cc=xen-devel@lists.xenproject.org \
/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).