[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/4] tools: remove xenstore entries on vchan server closure
пн, 11 июл. 2022 г. в 10:09, Juergen Gross <jgross@xxxxxxxx>: > > On 09.07.22 12:10, dmitry.semenets@xxxxxxxxx wrote: > > From: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx> > > > > vchan server creates XenStore entries to advertise its event channel and > > ring, but those are not removed after the server quits. > > Add additional cleanup step, so those are removed, so clients do not try > > to connect to a non-existing server. > > > > Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx> > > --- > > tools/include/libxenvchan.h | 5 +++++ > > tools/libs/vchan/init.c | 23 +++++++++++++++++++++++ > > tools/libs/vchan/io.c | 4 ++++ > > tools/libs/vchan/vchan.h | 31 +++++++++++++++++++++++++++++++ > > 4 files changed, 63 insertions(+) > > create mode 100644 tools/libs/vchan/vchan.h > > > > diff --git a/tools/include/libxenvchan.h b/tools/include/libxenvchan.h > > index d6010b145d..30cc73cf97 100644 > > --- a/tools/include/libxenvchan.h > > +++ b/tools/include/libxenvchan.h > > @@ -86,6 +86,11 @@ struct libxenvchan { > > int blocking:1; > > /* communication rings */ > > struct libxenvchan_ring read, write; > > + /** > > + * Base xenstore path for storing ring/event data used by the server > > + * during cleanup. > > + * */ > > + char *xs_path; > > }; > > > > /** > > diff --git a/tools/libs/vchan/init.c b/tools/libs/vchan/init.c > > index c8510e6ce9..c6b8674ef5 100644 > > --- a/tools/libs/vchan/init.c > > +++ b/tools/libs/vchan/init.c > > @@ -46,6 +46,8 @@ > > #include <xen/sys/gntdev.h> > > #include <libxenvchan.h> > > > > +#include "vchan.h" > > + > > #ifndef PAGE_SHIFT > > #define PAGE_SHIFT 12 > > #endif > > @@ -251,6 +253,10 @@ static int init_xs_srv(struct libxenvchan *ctrl, int > > domain, const char* xs_base > > char ref[16]; > > char* domid_str = NULL; > > xs_transaction_t xs_trans = XBT_NULL; > > + > > + // store the base path so we can clean up on server closure > > Please don't introduce new usages of the C++ comment style. Most comments in this file are C++ style since libvchan introduced > > > + ctrl->xs_path = strdup(xs_base); > > Return an error in case of strdup() failure? > > > + > > xs = xs_open(0); > > if (!xs) > > goto fail; > > @@ -298,6 +304,23 @@ retry_transaction: > > return ret; > > } > > > > +void close_xs_srv(struct libxenvchan *ctrl) > > +{ > > + struct xs_handle *xs; > > + > > + if (!ctrl->xs_path) > > + return; > > + > > + xs = xs_open(0); > > + if (!xs) > > + goto fail; > > + > > + xs_rm(xs, XBT_NULL, ctrl->xs_path); > > In this simple case I'd prefer > > if (xs) > xs_rm(xs, XBT_NULL, ctrl->xs_path); > > > + > > +fail: > > + free(ctrl->xs_path); > > No xs_close()? > > > Juergen
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |