Port vscsi=[] and scsi-{attach,detach,list} commands from xend to libxl. libvirt uses its existing SCSI support: http://lists.xenproject.org/archives/html/xen-devel/2015-04/msg02963.html
targetcli/rtslib has to be aware of xen-scsiback (upstream unresponsive): http://article.gmane.org/gmane.linux.scsi.target.devel/8146 TODO: - document pvscsi in xen wiki Changes between v10 and v11: - rebase to 'staging' (d887c19..a35dc6c) - rebase to 'staging' (829e03c..d887c19) - Remove evtch and rref from vscsiinfo - Remove COMPARE_VSCSI, use COMPARE_DEVID - Remove vscsi_wwn_valid helpers, use sscanf instead Changes between v9 and v10: - rebase to 'staging' (3b971de..829e03c) http://lists.xenproject.org/archives/html/xen-devel/2016-03/msg02773.html Changes between v8 and v9: - Mention libxl_ctrl_index in vscsiif.h - Rename idx to libxl_ctrl_index - Fix device assignment in vscsidev_remove - Add vscsictrls to multidev callchain - Reorder some functions - Move and rename vscsidev_rm - Remove libxl prefix from static functions - Reorder functions in libxl_vscsi.c - Add comment to libxl_vscsidev_aodev_cb - Move libxl_device_vscsictrl_remove into libxl_vscsi.c - Enclose libxl__device instead of aodev in libxl__vscsidev_rm - Update typedef of libxl__vscsidev_rm - Assign devid earlier in libxl__device_vscsictrl_add - Rework xlu_vscsi_get_ctrl and main_vscsiattach - Add config idx also to libxl_vscsiinfo - Make libxl__vscsi_collect_ctrls static - Implement libxl_device_vscsidev_add - Move vscsictrl add from libxl.c to libxl_vscsi.c - Export libxl__device_nextid for internal use - Remove some checks for empty controllers - Introduce an idx file to present the config index in empty vscsictrls - Use libxl__ev_devstate_wait in libxl__device_vscsictrl_reconfigure_add - Rework error handling in libxl__vscsi_fill_ctrl - Remove state checking from libxl__vscsi_fill_dev - Wrap long lines in libxl__device_vscsictrl_new_backend - Use LIBXL_DESTROY_TIMEOUT in libxl__device_vscsidev_rm - Remove tab from libxl__vscsi_collect_ctrls - Goto out if libxl__device_vscsidev_backend_set_add fails - Add fallthrough to libxl__device_vscsidev_backend_set_add - Fix typo in xl.cfg.pod: naa. - Wrap long line in xl.cfg.pod.5 - Use memmove in libxl_device_vscsictrl_remove_vscsidev - Adjust code in main_vscsilist to fit in 80 chars - Align switch and case to gain 4 columns - Wrap long line in libxl__device_vscsi_reconfigure_rm - Wrap long line in libxl__device_vscsidev_rm_be - Adjust flexarray size in libxl__device_vscsi_reconfigure_rm - Rework libxl_device_vscsidev_remove - Introduce libxl_device_vscsictrl_remove_vscsidev - Use stack variables in xlu_vscsi_get_ctrl - Rename function names to refer to vscsictrl - Rename local variables to refer to vscsictrl - Use generic vscsictrl->devid http://lists.xenproject.org/archives/html/xen-devel/2016-02/msg03196.html Changes between v7 and v8: - Make be_path const in libxl__device_vscsictrl_add - Adjust years in Copyright - Whitespace in libxl_device_vscsictrl idl - Implement libxl_device_vscsictrl_destroy - Set backend_devid - Reorder assignments in libxl__device_vscsictrl_add - Whitespace changes for libxl__device_vscsi_reconfigure_add - Register watch unconditionally in libxl__device_vscsidev_rm - Wait for StateClosing for unconnected frontends in detach - Adjust logic in libxl__vscsi_fill_dev - Rework scsi-detach - Increase swap partition from 12 to 96 blocks for mkswap - Update MERGE macro for vscsictrls http://lists.xenproject.org/archives/html/xen-devel/2016-02/msg01662.html Changes between v6 and v7: - rebase to 'staging' (3b971de) - Introduce libxl_device_vscsictrl_append_vscsidev - Add libxl__vscsi_collect_ctrls and used it in libxl_device_vscsictrl_list - Convert type of lun from u32 to u64 per SCSI spec - Use vscsi_saved in libxl__device_vscsictrl_add - Assign unique vscsidev_id per vscsictrl - Rename vscsi_dev to vscsidev in function names - Rename variables in libxl_vscsiinfo - Rename locals to refer to ctrl/dev - Rename various strings from host to ctrl - Rename local variables vscsi_ctrl to vscsictrl - Rename libxl_device_vscsictrl->vscsi_devs to vscsidevs - Remove libxl_device_vscsidev->remove, rework detach - Rename libxl_device_vscsidev->vscsi_dev_id to vscsidev_id - Rename local variables vscsi_host to vscsi_ctrl - Rename local variables v_hst to v_ctrl - Remove libxl_device_vscsictrl->v_hst - Rename libxl_vscsi_dev to libxl_device_vscsidev - Rename libxl_device_vscsi to libxl_device_vscsictrl http://lists.xenproject.org/archives/html/xen-devel/2016-02/msg00884.html Changes between v5 and v6: - rebase to 'staging' (a7b39c8 and b7e7ad8) - Fix off-by-one in xlu__vscsi_compare_udev - xl.cfg: use options instead of option - xl.cfg: fix grammar for pdev/options - xl.cfg: fix Usually typo - Remove next_vscsi_dev_id from libxl_device_vscsi - Use XLU_WWN_LEN also in libxl_vscsi.c http://lists.xenproject.org/archives/html/xen-devel/2015-11/msg01446.html Changes between v4 and v5: - vscsiif.h: refer to backend_domid - Set update_json in libxl_device_vscsi_remove - Remove comment from libxl__device_vscsi_add - Remove debug LOG from libxl__device_vscsi_reconfigure - Move local nb variable in libxl__device_vscsi_reconfigure - Make be_path const in libxl__device_vscsi_reconfigure - Adjust libxl__device_vscsi_dev_backend_set to avoid long lines - Adjust libxl__device_vscsi_dev_backend_rm to avoid long lines - Use CTX in libxl__device_vscsi_dev_backend_rm - Make be_path const in libxl__device_vscsi_dev_backend_rm - xl.cfg: Its typo - xl.cfg: Use persistent instead of persistant - Rename feature_host to scsi_raw_cmds - target-create-xen-scsiback.sh: detect pvops and xenlinux - Wrap long lines in main_vscsilist - Call libxl_vscsiinfo_dispose unconditional - Let scsi-list print p-dev instead of p-devname - Handle broken vscsi device entry in xenstore - Split libxl__vscsi_fill_host from libxl_device_vscsi_list - Make xlu_vscsi_append_dev static - Remove reference to pvscsi.txt from xenstore-paths.markdown - xl.cfg: update Linux and xenlinux - xl.cfg: refer to backend domain instead of dom0 - xl.cfg: be more verbose what persistant format is - return if libxl__device_vscsi_dev_backend_set fails in libxl__device_vscsi_new_backend - target-create-xen-scsiback.sh: set also alias for libvirt http://lists.xenproject.org/archives/html/xen-devel/2015-05/msg00523.html Changes between v3 and v4: - Use libxl__device_nextid in libxl__device_vscsi_add - Remove check for duplicate pdev assignment from libxl_device_vscsi_get_host - Caller provides libxl_device_vscsi to libxl_device_vscsi_get_host - Define LIBXL_HAVE_VSCSI - Remove init_val from libxl_vscsi_pdev_type - Move some functions from libxl to libxlu - Introduce libxl_device_vscsi->next_vscsi_dev_id to handle holes - Use Struct in KeyedUnion for ocaml idl - docs: Mention pvscsi in xl and xl.cfg - Turn feature_host into a defbool and add checking - Support pvops and /dev/ nodes in config - Wrap entire libxlu_vscsi.c with ifdef linux - Set remove flag in libxl_device_vscsi_list - Fix vscsiif path in xenstore-paths.markdown - vscsiif.h: add some notes about xenstore layout - Add copyright to libxlu_vscsi.c and libxl_vscsi.c - Scripts to create and delete xen-scsiback nodes in Linux target framework - Remove pvscsi.txt http://lists.xenproject.org/archives/html/xen-devel/2015-04/msg01949.html Changes between v2 and v3: - Adjust change for vscsiif.h - Support "naa.wwn:lun" notation in pvops kernel - Add example for pvops kernel using targetcli patch required for python-rtslib: http://article.gmane.org/gmane.linux.scsi.target.devel/8146 - Use vdev variable in libxl_device_vscsi_parse http://lists.xenproject.org/archives/html/xen-devel/2015-03/msg00734.html Changes between v1 and v2: - ported to current staging http://lists.xenproject.org/archives/html/xen-devel/2015-03/msg00030.html Initial attempt was sent a year ago: http://lists.xenproject.org/archives/html/xen-devel/2014-04/msg03958.html Most comments are addressed. This version has been tested with SLES as backend and frontend. This version has been tested with pvops as backend and SLES as frontend. (thanks for reading that far, this iteration got no runtime testing...) Olaf Hering (2): libxl: add support for vscsi Scripts to create and delete xen-scsiback nodes in Linux target framework docs/man/xl.cfg.pod.5 | 56 ++ docs/man/xl.pod.1 | 18 + tools/libxl/Makefile | 2 + tools/libxl/libxl.c | 9 + tools/libxl/libxl.h | 42 ++ tools/libxl/libxl_create.c | 41 +- tools/libxl/libxl_device.c | 2 + tools/libxl/libxl_internal.h | 8 + tools/libxl/libxl_types.idl | 53 ++ tools/libxl/libxl_types_internal.idl | 1 + tools/libxl/libxl_vscsi.c | 1160 ++++++++++++++++++++++++++++++ tools/libxl/libxlu_vscsi.c | 664 +++++++++++++++++ tools/libxl/libxlutil.h | 18 + tools/libxl/xl.h | 3 + tools/libxl/xl_cmdimpl.c | 225 +++++- tools/libxl/xl_cmdtable.c | 15 + tools/misc/Makefile | 4 + tools/misc/target-create-xen-scsiback.sh | 135 ++++ tools/misc/target-delete-xen-scsiback.sh | 41 ++ 19 files changed, 2493 insertions(+), 4 deletions(-) create mode 100644 tools/libxl/libxl_vscsi.c create mode 100644 tools/libxl/libxlu_vscsi.c create mode 100755 tools/misc/target-create-xen-scsiback.sh create mode 100755 tools/misc/target-delete-xen-scsiback.sh _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel