[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v7 00/18] introduce the Xen PV Calls backend
Hi all, this series introduces the backend for the newly introduced PV Calls procotol. PV Calls is a paravirtualized protocol that allows the implementation of a set of POSIX functions in a different domain. The PV Calls frontend sends POSIX function calls to the backend, which implements them and returns a value to the frontend and acts on the function call. For more information about PV Calls, please read: https://xenbits.xen.org/docs/unstable/misc/pvcalls.html I tried to split the source code into small pieces to make it easier to read and understand. Please review! Changes in v7: - added reviewed-bys - version/versions in warning - don't switch to XenbusStateInitWait in case of abort - only unbind irq on error path if it was previously set - don't add, then remove, work_struct and wq in patch #5 and #6 - remove call to pvcalls_back_work from backend_connect - unbind fedata->irq before unmapping the ring - validate req->u.connect.len - ignore req->u.connect.flags - cleanup of the error pathes of pvcalls_back_bind - return void from pvcalls_conn_back_write Changes in v6: - send ENOTSUPP to frontends for unsupported commands - reset notify_all - use a threaded irq handler instead of a workqueue to handle guest commands Changes in v5: - added review-byes - remove unnecessary gotos - ret 0 in pvcalls_back_connect - do not lose ret values - remove queue->rskq_lock - make sure all accesses to socket_mappings and socketpass_mappings are protected by socket_lock - rename ring_size to array_size Changes in v4: - add reviewed-bys - fix return values of many functions - remove pointless initializers - print a warning if ring_order > MAX_RING_ORDER - remove map->ioworker.cpu - use queue_work instead of queue_work_on - add sock_release() on error paths where appropriate - add a comment in __pvcalls_back_accept about racing with pvcalls_back_accept and atomicity of reqcopy - remove unneded (void*) casts - remove unneded {} - fix backend_disconnect if !mappass - remove pointless continue in backend_disconnect - remove pointless memset of &pvcalls_back_global - pass *opaque to pvcalls_conn_back_read - improve WARN_ON in pvcalls_conn_back_read - fix error checks in pvcalls_conn_back_write - XEN_PVCALLS_BACKEND depends on XEN_BACKEND - rename priv to fedata across all patches Changes in v3: - added reviewed-bys - return err from pvcalls_back_probe - remove old comments - use a xenstore transaction in pvcalls_back_probe - ignore errors from xenbus_switch_state - rename pvcalls_back_priv to pvcalls_fedata - remove addr from backend_connect - remove priv->work, add comment about theoretical race - use IPPROTO_IP - refactor active socket allocation in a single new function Changes in v2: - allocate one ioworker per socket (rather than 1 per vcpu) - rename privs to frontends - add newlines - define "1" in the public header - better error returns in pvcalls_back_probe - do not set XenbusStateClosed twice in set_backend_state - add more comments - replace rw_semaphore with semaphore - rename pvcallss to socket_lock - move xenbus_map_ring_valloc closer to first use in backend_connect - use more traditional return codes from pvcalls_back_handle_cmd and callees - remove useless dev == NULL checks - replace lock_sock with more appropriate and fine grained socket locks Stefano Stabellini (18): xen: introduce the pvcalls interface header xen/pvcalls: introduce the pvcalls xenbus backend xen/pvcalls: initialize the module and register the xenbus backend xen/pvcalls: xenbus state handling xen/pvcalls: connect to a frontend xen/pvcalls: handle commands from the frontend xen/pvcalls: implement socket command xen/pvcalls: implement connect command xen/pvcalls: implement bind command xen/pvcalls: implement listen command xen/pvcalls: implement accept command xen/pvcalls: implement poll command xen/pvcalls: implement release command xen/pvcalls: disconnect and module_exit xen/pvcalls: implement the ioworker functions xen/pvcalls: implement read xen/pvcalls: implement write xen: introduce a Kconfig option to enable the pvcalls backend drivers/xen/Kconfig | 12 + drivers/xen/Makefile | 1 + drivers/xen/pvcalls-back.c | 1236 ++++++++++++++++++++++++++++++++++++ include/xen/interface/io/pvcalls.h | 121 ++++ include/xen/interface/io/ring.h | 2 + 5 files changed, 1372 insertions(+) create mode 100644 drivers/xen/pvcalls-back.c create mode 100644 include/xen/interface/io/pvcalls.h _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |