|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] tools/xenstore: don't store domU's mfn of ring page in xensotred
Hi Juergen,
On Tue, 28 Apr 2020 at 16:53, Juergen Gross <jgross@xxxxxxxx> wrote:
>
> The XS_INTRODUCE command has two parameters: the mfn (or better: gfn)
> of the domain's xenstore ring page and the event channel of the
> domain for communicating with Xenstore.
>
> The gfn is not really needed. It is stored in the per-domain struct
> in xenstored and in case of another XS_INTRODUCE for the domain it
> is tested to match the original value. If it doesn't match the
> command is aborted via EINVAL.
>
> Today there shouldn't be multiple XS_INTRODUCE requests for the same
> domain issued, so the mfn/gfn can just be ignored and multiple
> XS_INTRODUCE commands can be rejected without testing the mfn/gfn.
So there is a comment in the else part:
/* Use XS_INTRODUCE for recreating the xenbus event-channel. */
>From the commit message this is not entirely clear why we want to
prevent recreating the event-channel. Can you expand it?
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
> tools/xenstore/xenstored_domain.c | 47
> ++++++++++++++++-----------------------
> 1 file changed, 19 insertions(+), 28 deletions(-)
>
> diff --git a/tools/xenstore/xenstored_domain.c
> b/tools/xenstore/xenstored_domain.c
> index 5858185211..17328f9fc9 100644
> --- a/tools/xenstore/xenstored_domain.c
> +++ b/tools/xenstore/xenstored_domain.c
> @@ -369,7 +369,6 @@ int do_introduce(struct connection *conn, struct
> buffered_data *in)
> struct domain *domain;
> char *vec[3];
> unsigned int domid;
> - unsigned long mfn;
> evtchn_port_t port;
> int rc;
> struct xenstore_domain_interface *interface;
> @@ -381,7 +380,7 @@ int do_introduce(struct connection *conn, struct
> buffered_data *in)
> return EACCES;
>
> domid = atoi(vec[0]);
> - mfn = atol(vec[1]);
> + /* Ignore the mfn, we don't need it. */
s/mfn/GFN/
> port = atoi(vec[2]);
>
> /* Sanity check args. */
> @@ -390,34 +389,26 @@ int do_introduce(struct connection *conn, struct
> buffered_data *in)
>
> domain = find_domain_by_domid(domid);
>
> - if (domain == NULL) {
> - interface = map_interface(domid);
> - if (!interface)
> - return errno;
> - /* Hang domain off "in" until we're finished. */
> - domain = new_domain(in, domid, port);
> - if (!domain) {
> - rc = errno;
> - unmap_interface(interface);
> - return rc;
> - }
> - domain->interface = interface;
> - domain->mfn = mfn;
AFAICT domain->mfn is not used anymore, so could we remove the field?
Cheers,
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |