[Pkg-xen-devel] [PATCH 08/13] xen init script: rewrite xenstored start logic
Ian Jackson
ijackson at chiark.greenend.org.uk
Tue Feb 12 18:14:53 GMT 2019
Hans van Kranenburg writes ("Re: [PATCH 08/13] xen init script: rewrite xenstored start logic"):
> So the question we should answer first is: What do we allow the user to
> set as value? /bin/bash? And how should the init script deal with that?
If they specify an absolute path, it should be used. Eg,
/home/alice/Xen/xen/tools/xenstore/xenstore
If the user specifies /bin/bash they get to keep all the resulting
pieces.
> Or do you want to be able to use this to run your own xenstored
> replacement implementation from /usr/local/ian/ixenstored ?
Right. Or a wrapper script or something (although s-s-d will
mishandle that).
> > This exit status handling is confusing. AFAICT from the manpage for
> > start-stop-daemon, exit status 1 means "--oknodo was not specified and
> > nothing was done". So I think that would occur when --start does
> > nothing because the daemon is already running. It might be worth
> > adding a comment.
>
> Using --start --pidfile --exec --test apparently both checks for pidfile
> and also for an actual matching running process. This construct was used
> here already, I just kept it. I see why a small comment that this
> returning 1 explicitely means that "Success! We found a matching process!".
>
> Maybe simplify and just return 1 from this function if it's not good,
> and return 0 on success?
That would be more usual.
Normally an init script which is asked to start a daemon and declines
to do so because it's already running will treat that as a failure.
But we don't ever stop xenstored so I think in this case we should
probably treat it already being there as a success for `start' ?
> The 0|1) which are in several places further on are also confusing me:
>
> xenstored_start
> case "$?" in
> 0|1) ;;
> *) log_end_msg 1; exit ;;
> esac
>
> I mean, why torture the reader of the code with counter intuitive 1
> values that mean success...
I agree. Madness.
> > for try_xenstored_var in $try_xenstoreds; do
> > eval "try_xenstored=\$$try_xenstored_var"
> > ...
>
> Yes, that way the two start-stop-daemon can be one instead, nice!
>
> And do you agree that exploding when an explicit choice has been made by
> the user + that binary can't be started is the right thing?
Yes.
> If I would accidentally set 'xensrtored' as value, because I explicitely
> want to run xenstored and not oxenstored, and the typo is because I'm in
> a hurry because a gigantic security hole in oxenstored was found, I
> don't want the init script to silently still start oxenstored, because
> -x /[...]/xensrtored fails.
Indeed.
Ian.
--
Ian Jackson <ijackson at chiark.greenend.org.uk> These opinions are my own.
If I emailed you from an address @fyvzl.net or @evade.org.uk, that is
a private address which bypasses my fierce spamfilter.
More information about the Pkg-xen-devel
mailing list