tmem/xc_tmem_control: Rename 'arg1' to 'len' and 'arg2' to arg.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 30 Sep 2016 19:10:01 +0000 (15:10 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 30 Sep 2016 19:27:01 +0000 (15:27 -0400)
That is what they are used for. Lets make it more clear.

Of all the various sub-commands, the only one that needed
semantic change is XEN_SYSCTL_TMEM_OP_SAVE_BEGIN. That in the
past used 'arg1', and now we are moving it to use 'arg'.
Since that code is only used during migration which is tied
to the toolstack it is OK to change it.

We should increment the XEN_SYSCTL_INTERFACE_VERSION because
of this, and that was fortunatly done in the patch titled:
"tmem/libxc: Squash XEN_SYSCTL_TMEM_OP_[SET|SAVE].."

While at it, also fix xc_tmem_control_oid to properly handle
the 'buf' and bounce it as appropiate.

Acked-by: Andrew cooper <andrew.cooper3@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
tools/libxc/include/xenctrl.h
tools/libxc/xc_tmem.c
tools/libxl/libxl.c
tools/python/xen/lowlevel/xc/xc.c
xen/common/tmem.c
xen/common/tmem_control.c
xen/include/public/sysctl.h

index d35f171eab48d8a302014aca827b28489f7cf6eb..2c83544190e36d930f9653dc9529299f4808eee0 100644 (file)
@@ -2067,11 +2067,11 @@ int xc_disable_turbo(xc_interface *xch, int cpuid);
  */
 
 int xc_tmem_control_oid(xc_interface *xch, int32_t pool_id, uint32_t subop,
-                        uint32_t cli_id, uint32_t arg1, uint32_t arg2,
+                        uint32_t cli_id, uint32_t len, uint32_t arg,
                         struct xen_tmem_oid oid, void *buf);
 int xc_tmem_control(xc_interface *xch,
                     int32_t pool_id, uint32_t subop, uint32_t cli_id,
-                    uint32_t arg1, uint32_t arg2, void *buf);
+                    uint32_t len, uint32_t arg, void *buf);
 int xc_tmem_auth(xc_interface *xch, int cli_id, char *uuid_str, int arg1);
 int xc_tmem_save(xc_interface *xch, int dom, int live, int fd, int field_marker);
 int xc_tmem_save_extra(xc_interface *xch, int dom, int fd, int field_marker);
index f4dbf58ef153fcb8fbbbc5596b1cdddfb3de6e98..4a74be9a10f8bdbeb3b0689bdfa1f68d8712c8b5 100644 (file)
@@ -49,20 +49,20 @@ int xc_tmem_control(xc_interface *xch,
                     int32_t pool_id,
                     uint32_t cmd,
                     uint32_t cli_id,
-                    uint32_t arg1,
-                    uint32_t arg2,
+                    uint32_t len,
+                    uint32_t arg,
                     void *buf)
 {
     DECLARE_SYSCTL;
-    DECLARE_HYPERCALL_BOUNCE(buf, arg1, XC_HYPERCALL_BUFFER_BOUNCE_OUT);
+    DECLARE_HYPERCALL_BOUNCE(buf, len, XC_HYPERCALL_BUFFER_BOUNCE_OUT);
     int rc;
 
     sysctl.cmd = XEN_SYSCTL_tmem_op;
     sysctl.u.tmem_op.pool_id = pool_id;
     sysctl.u.tmem_op.cmd = cmd;
     sysctl.u.tmem_op.cli_id = cli_id;
-    sysctl.u.tmem_op.arg1 = arg1;
-    sysctl.u.tmem_op.arg2 = arg2;
+    sysctl.u.tmem_op.len = len;
+    sysctl.u.tmem_op.arg = arg;
     sysctl.u.tmem_op.pad = 0;
     sysctl.u.tmem_op.oid.oid[0] = 0;
     sysctl.u.tmem_op.oid.oid[1] = 0;
@@ -70,8 +70,7 @@ int xc_tmem_control(xc_interface *xch,
 
     if ( cmd == XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO )
         HYPERCALL_BOUNCE_SET_DIR(buf, XC_HYPERCALL_BUFFER_BOUNCE_IN);
-
-    if ( arg1 )
+    if ( len )
     {
         if ( buf == NULL )
         {
@@ -89,7 +88,7 @@ int xc_tmem_control(xc_interface *xch,
 
     rc = do_sysctl(xch, &sysctl);
 
-    if ( arg1 )
+    if ( len )
         xc_hypercall_bounce_post(xch, buf);
 
     return rc;
@@ -99,25 +98,25 @@ int xc_tmem_control_oid(xc_interface *xch,
                         int32_t pool_id,
                         uint32_t cmd,
                         uint32_t cli_id,
-                        uint32_t arg1,
-                        uint32_t arg2,
+                        uint32_t len,
+                        uint32_t arg,
                         struct xen_tmem_oid oid,
                         void *buf)
 {
     DECLARE_SYSCTL;
-    DECLARE_HYPERCALL_BOUNCE(buf, arg1, XC_HYPERCALL_BUFFER_BOUNCE_OUT);
+    DECLARE_HYPERCALL_BOUNCE(buf, len, XC_HYPERCALL_BUFFER_BOUNCE_OUT);
     int rc;
 
     sysctl.cmd = XEN_SYSCTL_tmem_op;
     sysctl.u.tmem_op.pool_id = pool_id;
     sysctl.u.tmem_op.cmd = cmd;
     sysctl.u.tmem_op.cli_id = cli_id;
-    sysctl.u.tmem_op.arg1 = arg1;
-    sysctl.u.tmem_op.arg2 = arg2;
+    sysctl.u.tmem_op.len = len;
+    sysctl.u.tmem_op.arg = arg;
     sysctl.u.tmem_op.pad = 0;
     sysctl.u.tmem_op.oid = oid;
 
-    if ( cmd == XEN_SYSCTL_TMEM_OP_LIST && arg1 != 0 )
+    if ( len  )
     {
         if ( buf == NULL )
         {
@@ -135,8 +134,8 @@ int xc_tmem_control_oid(xc_interface *xch,
 
     rc = do_sysctl(xch, &sysctl);
 
-    if ( cmd == XEN_SYSCTL_TMEM_OP_LIST && arg1 != 0 )
-            xc_hypercall_bounce_post(xch, buf);
+    if ( len )
+        xc_hypercall_bounce_post(xch, buf);
 
     return rc;
 }
@@ -222,7 +221,7 @@ int xc_tmem_save(xc_interface *xch,
     xen_tmem_client_t info;
 
     rc = xc_tmem_control(xch, 0, XEN_SYSCTL_TMEM_OP_SAVE_BEGIN,
-                         dom, live, 0, NULL);
+                         dom, 0 /* len*/ , live, NULL);
     if ( rc )
     {
         /* Nothing to save - no tmem enabled. */
@@ -237,7 +236,7 @@ int xc_tmem_save(xc_interface *xch,
 
     if ( xc_tmem_control(xch, 0 /* pool_id */,
                          XEN_SYSCTL_TMEM_OP_GET_CLIENT_INFO,
-                         dom /* cli_id */, sizeof(info) /* arg1 */, 0 /* arg2 */,
+                         dom /* cli_id */, sizeof(info), 0 /* arg */,
                          &info) < 0 )
         return -1;
 
@@ -394,7 +393,7 @@ int xc_tmem_restore(xc_interface *xch, int dom, int io_fd)
 
     if ( xc_tmem_control(xch, 0 /* pool_id */,
                          XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO,
-                         dom /* cli_id */, sizeof(info) /* arg1 */, 0 /* arg2 */,
+                         dom /* cli_id */, sizeof(info), 0 /* arg */,
                          &info) < 0 )
         return -1;
 
index 81f8361b316ad78dec79427f4272001707415354..432e5d950a1267d63779a4437887e17684d89319 100644 (file)
@@ -6173,7 +6173,7 @@ int libxl_tmem_set(libxl_ctx *ctx, uint32_t domid, char* name, uint32_t set)
 
     r = xc_tmem_control(ctx->xch, -1 /* pool_id */,
                         XEN_SYSCTL_TMEM_OP_GET_CLIENT_INFO,
-                        domid, sizeof(info), 0 /* arg2 */, &info);
+                        domid, sizeof(info), 0 /* arg */, &info);
     if (r < 0) {
         LOGE(ERROR, "Can not get tmem data!");
         rc = ERROR_FAIL;
@@ -6187,7 +6187,7 @@ int libxl_tmem_set(libxl_ctx *ctx, uint32_t domid, char* name, uint32_t set)
     }
     r = xc_tmem_control(ctx->xch, -1 /* pool_id */,
                         XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO,
-                        domid, sizeof(info), 0 /* arg2 */, &info);
+                        domid, sizeof(info), 0 /* arg */, &info);
     if (r < 0) {
         LOGE(ERROR, "Can not set tmem %s", name);
         rc = ERROR_FAIL;
index a1177376786c3b29ceace1c0eee528995d3bff03..39be1d5c0b2b3cd5587780af0fab757d8fffd30c 100644 (file)
@@ -1612,8 +1612,8 @@ static PyObject *pyxc_tmem_control(XcObject *self,
     int32_t pool_id;
     uint32_t subop;
     uint32_t cli_id;
-    uint32_t arg1;
-    uint32_t arg2;
+    uint32_t len;
+    uint32_t arg;
     char *buf;
     char _buffer[32768], *buffer = _buffer;
     int rc;
@@ -1621,13 +1621,13 @@ static PyObject *pyxc_tmem_control(XcObject *self,
     static char *kwd_list[] = { "pool_id", "subop", "cli_id", "arg1", "arg2", "buf", NULL };
 
     if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiiis", kwd_list,
-                        &pool_id, &subop, &cli_id, &arg1, &arg2, &buf) )
+                        &pool_id, &subop, &cli_id, &len, &arg, &buf) )
         return NULL;
 
-    if ( (subop == XEN_SYSCTL_TMEM_OP_LIST) && (arg1 > 32768) )
-        arg1 = 32768;
+    if ( (subop == XEN_SYSCTL_TMEM_OP_LIST) && (len > 32768) )
+        len = 32768;
 
-    if ( (rc = xc_tmem_control(self->xc_handle, pool_id, subop, cli_id, arg1, arg2, buffer)) < 0 )
+    if ( (rc = xc_tmem_control(self->xc_handle, pool_id, subop, cli_id, len, arg, buffer)) < 0 )
         return Py_BuildValue("i", rc);
 
     switch (subop) {
@@ -2506,8 +2506,8 @@ static PyMethodDef pyxc_methods[] = {
       " pool_id [int]: Identifier of the tmem pool (-1 == all).\n"
       " subop [int]: Supplementary Operation.\n"
       " cli_id [int]: Client identifier (-1 == all).\n"
-      " arg1 [int]: Argument.\n"
-      " arg2 [int]: Argument.\n"
+      " len [int]: Length of 'buf'.\n"
+      " arg [int]: Argument.\n"
       " buf [str]: Buffer.\n\n"
       "Returns: [int] 0 or [str] tmem info on success; exception on error.\n" },
 
index 510d11ccc03f7609fe2f3f5eaa0c49bfa9bb4782..14a12ca3f3ca9dab70116505c58f07ce9e816484 100644 (file)
@@ -1651,7 +1651,7 @@ static int tmemc_shared_pool_auth(domid_t cli_id, uint64_t uuid_lo,
 }
 
 static int tmemc_save_subop(int cli_id, uint32_t pool_id,
-                        uint32_t subop, tmem_cli_va_param_t buf, uint32_t arg1)
+                        uint32_t subop, tmem_cli_va_param_t buf, uint32_t arg)
 {
     struct client *client = tmem_client_from_cli_id(cli_id);
     uint32_t p;
@@ -1672,7 +1672,7 @@ static int tmemc_save_subop(int cli_id, uint32_t pool_id,
 
         client->was_frozen = client->info.flags.u.frozen;
         client->info.flags.u.frozen = 1;
-        if ( arg1 != 0 )
+        if ( arg != 0 )
             client->info.flags.u.migrating = 1;
         rc = 0;
         break;
@@ -1844,22 +1844,22 @@ int do_tmem_control(struct xen_sysctl_tmem_op *op)
     case XEN_SYSCTL_TMEM_OP_RESTORE_BEGIN:
     case XEN_SYSCTL_TMEM_OP_SAVE_END:
         ret = tmemc_save_subop(op->cli_id, pool_id, cmd,
-                               guest_handle_cast(op->u.buf, char), op->arg1);
+                               guest_handle_cast(op->u.buf, char), op->arg);
         break;
     case XEN_SYSCTL_TMEM_OP_SAVE_GET_NEXT_PAGE:
         ret = tmemc_save_get_next_page(op->cli_id, pool_id,
-                                       guest_handle_cast(op->u.buf, char), op->arg1);
+                                       guest_handle_cast(op->u.buf, char), op->len);
         break;
     case XEN_SYSCTL_TMEM_OP_SAVE_GET_NEXT_INV:
         ret = tmemc_save_get_next_inv(op->cli_id,
-                                      guest_handle_cast(op->u.buf, char), op->arg1);
+                                      guest_handle_cast(op->u.buf, char), op->len);
         break;
     case XEN_SYSCTL_TMEM_OP_RESTORE_PUT_PAGE:
-        ret = tmemc_restore_put_page(op->cli_id, pool_id, oidp, op->arg2,
-                                     guest_handle_cast(op->u.buf, char), op->arg1);
+        ret = tmemc_restore_put_page(op->cli_id, pool_id, oidp, op->arg,
+                                     guest_handle_cast(op->u.buf, char), op->len);
         break;
     case XEN_SYSCTL_TMEM_OP_RESTORE_FLUSH_PAGE:
-        ret = tmemc_restore_flush_page(op->cli_id, pool_id, oidp, op->arg2);
+        ret = tmemc_restore_flush_page(op->cli_id, pool_id, oidp, op->arg);
         break;
     default:
         ret = -1;
index b7d65a1f0882f24aeba4cb561306ed24eb548bdf..3ec105f7b0f5e8cfd1d06d15025c753523e7e46f 100644 (file)
@@ -347,7 +347,7 @@ static int tmemc_get_client_info(int cli_id,
 }
 
 static int tmemc_save_subop(int cli_id, uint32_t pool_id, uint32_t subop,
-                            XEN_GUEST_HANDLE_PARAM(char) buf, uint32_t arg1)
+                            XEN_GUEST_HANDLE_PARAM(char) buf, uint32_t arg)
 {
     struct client *client = tmem_client_from_cli_id(cli_id);
     struct tmem_pool *pool = (client == NULL || pool_id >= MAX_POOLS_PER_DOMAIN)
@@ -401,11 +401,11 @@ int tmem_control(struct xen_sysctl_tmem_op *op)
         ret = tmemc_freeze_pools(op->cli_id, cmd);
         break;
     case XEN_SYSCTL_TMEM_OP_FLUSH:
-        ret = tmemc_flush_mem(op->cli_id,op->arg1);
+        ret = tmemc_flush_mem(op->cli_id, op->arg);
         break;
     case XEN_SYSCTL_TMEM_OP_LIST:
         ret = tmemc_list(op->cli_id,
-                         guest_handle_cast(op->u.buf, char), op->arg1, op->arg2);
+                         guest_handle_cast(op->u.buf, char), op->len, op->arg);
         break;
     case XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO:
         ret = tmemc_set_client_info(op->cli_id, op->u.client);
@@ -420,7 +420,7 @@ int tmem_control(struct xen_sysctl_tmem_op *op)
     case XEN_SYSCTL_TMEM_OP_SAVE_GET_POOL_NPAGES:
     case XEN_SYSCTL_TMEM_OP_SAVE_GET_POOL_UUID:
         ret = tmemc_save_subop(op->cli_id, pool_id, cmd,
-                               guest_handle_cast(op->u.buf, char), op->arg1);
+                               guest_handle_cast(op->u.buf, char), op->arg);
         break;
     default:
         ret = do_tmem_control(op);
index 86a1d917e21691319e5010d3187f479190952a8f..0b8afaf86ae8c29b66cd79c8ab90c7214d0defd3 100644 (file)
@@ -819,8 +819,8 @@ struct xen_sysctl_tmem_op {
     uint32_t cli_id;    /* IN: client id, 0 for XEN_SYSCTL_TMEM_QUERY_FREEABLE_MB
                            for all others can be the domain id or
                            XEN_SYSCTL_TMEM_OP_ALL_CLIENTS for all. */
-    uint32_t arg1;      /* IN: If not applicable to command use 0. */
-    uint32_t arg2;      /* IN: If not applicable to command use 0. */
+    uint32_t len;       /* IN: length of 'buf'. If not applicable to use 0. */
+    uint32_t arg      /* IN: If not applicable to command use 0. */
     uint32_t pad;       /* Padding so structure is the same under 32 and 64. */
     xen_tmem_oid_t oid; /* IN: If not applicable to command use 0s. */
     union {