[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] tools: remove xenstore entries on vchan server closure
- To: Oleksandr Andrushchenko <andr2000@xxxxxxxxx>
- From: Anthony PERARD <anthony.perard@xxxxxxxxxx>
- Date: Thu, 17 Feb 2022 11:58:29 +0000
- Authentication-results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
- Cc: <xen-devel@xxxxxxxxxxxxxxxxxxxx>, <jgross@xxxxxxxx>, <wl@xxxxxxx>, <jandryuk@xxxxxxxxx>, Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>
- Delivery-date: Thu, 17 Feb 2022 11:58:55 +0000
- Ironport-data: A9a23:Uw5ut69MkL8CY86LJJWsDrUDCnmTJUtcMsCJ2f8bNWPcYEJGY0x3n WAZXjiFP67ZYDD9e9Byadzj8RgBucDQmtVhHlRk/CA8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhFWeIdA970Ug5w7Rg3dYx6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhv9 NdhioSLaTwHAYmSp9YyWh8fAQVHaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwqKtXrO4UO/Glt1zjDAd4tQIzZQrWM7thdtNs1rp4QQ6iFN 5dDAdZpRBnmYANNC3kaNNUdmeOhpFXDSBgAgU3A8MLb5ECMlVcsgdABKuH9ZdiiVchT2EGCq Qru/W3/DgsLKd+3xj+M83bqjejK9Qv8XI8RD7S++uRdiVuf3HEICBYWWF24ptG0kke7HdlYL iQ88ywit/JqrBSDQdz0Xhn+q3mB1jYMVtwVH+Ak5QWlzqvP/x3fFmUCViRGatEtqIkxXzNC/ l2GhdTyHhR0raaYD3ma89+pQSiaYHZPazVYPGldEFVDs4KLTJwPYgznUOphPJGttf3ONw7Un Q+4gyE4wKc3tJtev0mkxmzvjzWpr5nPawc64ATLQ26ohj9EiJ6Zi5+AsgaCs6sZRGqNZhzY5 SVfxZDChAwbJczVzESwrPMx8KZFDhpvGBnVmhZREpYo7FxBEFbzLNkLsFmSyKqEW/vomAMFg meP6Gu9B7cJZRNGiJObharrVKzGKoC6SLzYugj8NIYmX3SIXFbvENtSTUCRxXvxt0MnjLsyP 5yWGe71UypHUf84kmbrHLhAuVPO+szY7TmMLXwc5076uYdymVbPEetVWLdwRrtRAFy4TPX9r I8EapriJ+R3W+zieCjHmbP/3nhRRUXX8ave8pQNHsbae1IOMDh4V5f5nONwE6Q4zv89vrqZo RmAtrpwlQOXaYvvcl7RNBiOqdrHAP5CkJ7MFXd9Zwn2hSl4MN3HAWV2X8JfQITLPddLlZZcJ 8Tpse3ZahiWYjiYqTkbc7fnq4luKEaiiQ6UZnL3azkjZZ9wAQfO/4a8LAfo8SAPCAuxtNc// OL8hl+KH8JbSlQwFtvSZdKu00i14SoXltVtUhaaOdJUYkjtrtRncnSjkv8tLsgQAhzf3T/Gh R2OCBIVqLCV8Y84+dXEn46eqIKtH7csF0ZWBTCDv723KTPb7iyoxooZCLSEejXUVWXV/qS+Z LoKk6GgYaNfxFsT6thyCbdmy6469uDDnb4Cw1Q2BmjPYnSqFqhkfiuM0/5Qu/Af3bReowa3B B6Co4EIJbWTNcr5O1cNPw55PP+b3PQZlzSOv/Q4JEL2uH1+8LadCBgAOhCNjGpWLadvMZNjy uAk4ZZE5wu6gxssE9CHkiELqDjcci1eC/0q5sMAHYvmqgs30VUTM5XTBxj/7IyLd9gRYFIhJ SWZhfaairlRrqYYn6HfyZQZMTJhuKkz
- Ironport-hdrordr: A9a23:akqZQ67DJcaQXjX56gPXwMrXdLJyesId70hD6qhwISY1TiW9rb HIoB17726RtN9/Yh0dcLy7V5VoBEmsk6KdgrNhWItKPjOW21dARbsKheCJrgEIWReOlNK1vZ 0QCpSWY+eRMbEVt6jH3DU=
- Ironport-sdr: DSKVq1igvFteTYfgveL2meV3oavkMLNB++61d8H0iJJBuPSK/xIVYxnSZZsb7ieGQv6vZo64Xo u6rRvk+AbIWce6V7+xS1PPdD0q1oMZ7F5z4YLvYF9nHq3d0MuFFqp/znQl9xwZMLLxRf568G4o eOkB3Zp1G2CCuv5LOMIfLPX3324SAVU87QtBiXEZoYMeVfoPIjdbed7PcWAqb1SjVCFrP1ShNR raWyHnUq86w6bDDd1BxgijyljfU05D3ObrNKJmOb/ugQLDtKrbVl7cBGYm/zQdqIjr8IqZRokj GMKTQ3fFjKN6kQMhf5u0yL2Y
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Hi Oleksandr,
On Wed, Feb 16, 2022 at 08:33:25AM +0200, Oleksandr Andrushchenko wrote:
> diff --git a/tools/libs/vchan/init.c b/tools/libs/vchan/init.c
> index c8510e6ce98a..ae9a6b579753 100644
> --- a/tools/libs/vchan/init.c
> +++ b/tools/libs/vchan/init.c
> @@ -251,6 +253,12 @@ 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
> + ctrl->xs_path = strdup(xs_base);
You could do this in libxenvchan_server_init(), this might make it
easier to avoid leaking the path.
You need to initialise ctrl->xs_path in libxenvchan_server_init() in
any case before libxenvchan_close() is called.
I think you need to initialise ctrl->xs_path to NULL in
libxenvchan_client_init() as well even if it's not going to be used, to
avoid issue later in case the field start to be used.
> @@ -298,6 +306,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);
There is missing a xs_close() call.
> + if (!xs)
> + goto fail;
> +
> + xs_rm(xs, XBT_NULL, ctrl->xs_path);
> +
> +fail:
> + free(ctrl->xs_path);
> +}
> +
> static int min_order(size_t siz)
> {
> int rv = PAGE_SHIFT;
> diff --git a/tools/libs/vchan/io.c b/tools/libs/vchan/io.c
> index da303fbc01ca..1f201ad554f2 100644
> --- a/tools/libs/vchan/io.c
> +++ b/tools/libs/vchan/io.c
> @@ -40,6 +40,8 @@
> #include <xenctrl.h>
> #include <libxenvchan.h>
>
> +#include "vchan.h"
> +
> #ifndef PAGE_SHIFT
> #define PAGE_SHIFT 12
> #endif
> @@ -384,5 +386,7 @@ void libxenvchan_close(struct libxenvchan *ctrl)
> if (ctrl->gnttab)
> xengnttab_close(ctrl->gnttab);
> }
> + if (ctrl->is_server)
> + close_xs_srv(ctrl);
Since init_xs_srv() is one of the last step of the initialisation of
*ctrl, I think close_xs_srv() should be one of the first step in
libxenvchan_close().
Thanks,
--
Anthony PERARD
|