get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/89411/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 89411,
    "url": "https://patches.dpdk.org/api/patches/89411/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210317202530.4145673-1-i.maximets@ovn.org/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210317202530.4145673-1-i.maximets@ovn.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210317202530.4145673-1-i.maximets@ovn.org",
    "date": "2021-03-17T20:25:26",
    "name": "[RFC,0/4] SocketPair Broker support for vhost and virtio-user.",
    "commit_ref": null,
    "pull_url": null,
    "state": null,
    "archived": false,
    "hash": null,
    "submitter": {
        "id": 1455,
        "url": "https://patches.dpdk.org/api/people/1455/?format=api",
        "name": "Ilya Maximets",
        "email": "i.maximets@ovn.org"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210317202530.4145673-1-i.maximets@ovn.org/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/89411/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/89411/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 91650A0561;\n\tWed, 17 Mar 2021 21:25:42 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 08E37140F4F;\n\tWed, 17 Mar 2021 21:25:42 +0100 (CET)",
            "from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net\n [217.70.183.195])\n by mails.dpdk.org (Postfix) with ESMTP id 9AEC6140F4D\n for <dev@dpdk.org>; Wed, 17 Mar 2021 21:25:40 +0100 (CET)",
            "from im-t490s.redhat.com (ip-78-45-89-65.net.upcbroadband.cz\n [78.45.89.65]) (Authenticated sender: i.maximets@ovn.org)\n by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id B4A9B60005;\n Wed, 17 Mar 2021 20:25:38 +0000 (UTC)"
        ],
        "X-Originating-IP": "78.45.89.65",
        "From": "Ilya Maximets <i.maximets@ovn.org>",
        "To": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "Cc": "Chenbo Xia <chenbo.xia@intel.com>, dev@dpdk.org,\n Adrian Moreno <amorenoz@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>,\n Julia Suvorova <jusual@redhat.com>, Ilya Maximets <i.maximets@ovn.org>",
        "Date": "Wed, 17 Mar 2021 21:25:26 +0100",
        "Message-Id": "<20210317202530.4145673-1-i.maximets@ovn.org>",
        "X-Mailer": "git-send-email 2.26.2",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [RFC 0/4] SocketPair Broker support for vhost and\n virtio-user.",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "TL;DR;\n  Managing socket files is too much fun. :)  And here is how this\n  could be improved:\n    https://github.com/igsilya/one-socket\n    https://github.com/igsilya/one-socket/blob/main/doc/socketpair-broker.rst\n  In particular for vhost-user case.\n\nIn modern virtualization setups there are tens or hundreds of different\nsocket files for different purposes.  Sockets to manage various\ndaemons, vhost-user sockets for various virtual devices, memif sockets\nfor memif network interfaces and so on.\n\nIn order to make things work in containerized environments software\nsystems has to share these sockets with containers.  In most cases\nthis sharing is implemented as a shared directory mounted inside the\ncontainer, because socket files could be re-created in runtime or even\nnot be available at the container startup.  For example, if they are\ncreated by the application inside the container.\n\nEven more configuration tricks required in order to share some sockets\nbetween different containers and not only with the host, e.g. to\ncreate service chains.\nAnd some housekeeping usually required for applications in case the\nsocket server terminated abnormally and socket files left on a file\nsystem:\n \"failed to bind to vhu: Address already in use; remove it and try again\"\n\nAdditionally, all applications (system and user's!) should follow\nnaming conventions and place socket files in particular location on a\nfile system to make things work.\n\nIn particular, this applies to vhost-user sockets.\n\nThis patch-set aims to eliminate most of the inconveniences by\nleveraging an infrastructure service provided by a SocketPair Broker.\n\n*SocketPair Broker* is a daemon that mediates establishment of direct\nsocket-based connections between clients.\n\n*One Socket* is a reference implementation of a SocketPair Broker\nDaemon, SocketPair Broker Protocol and a helper library for client\napplications (libspbroker):\n\n  https://github.com/igsilya/one-socket\n\nIt's fully functional, but not completely ready for production use\nfor now.  See 'todo' section in README.rst in one-socket repository.\n\nBasically, it's a daemon that listens on a single unix socket\n(broker socket) and accepts clients.  Client connects and provides a\n'key'.  If two clients provided the same 'key', One Socket daemon\ncreates a pair of connected sockets with socketpair() and sends\nsides of this pair to these two clients.  At this point two clients\nhave a direct communication channel between them.  They will disconnect\nfrom the broker and continue to operate and communicate normally.\n\nWorkflow overview with pictures available here:\n\n  https://github.com/igsilya/one-socket/blob/main/doc/socketpair-broker.rst\n\nCommunication with a broker based on a SocketPair Broker Protocol:\n\n  https://github.com/igsilya/one-socket/blob/main/doc/socketpair-broker-proto-spec.rst\n\n\nThis patch-set extends vhost library, vhost pmd and virtio-user pmd to\nsupport SocketPair Broker as one of the connection methods.\nUsage example:\n\n  # Starting a One Socket daemon with socket './one.socket':\n  $ ONE_SOCKET_PATH=./one.socket ./one-socket\n\n  # Starting testpmd #1 with virtio-user device in server mode:\n  $ dpdk-testpmd --no-pci --in-memory --single-file-segments \\\n      --vdev=\"net_virtio_user,path=./one.socket,broker-key=MY-KEY,server=1\"\n\n  # Starting testpmd #2 with vhost pmd in client mode:\n  $ dpdk-testpmd --no-pci --in-memory --single-file-segments \\\n      --vdev=\"eth_vhost0,iface=./one.socket,broker-key=MY-KEY,client=1\"\n\nDetails how to build and install One Socket are in README.rst in\none-socket repository.\n\nDPDK side is the first step of implementation.  Once available in DPDK,\nsupport could be easily added to Open vSwith or VPP or any DPDK-based\napplication.  Same support could be added to QEMU (found a volunteer\nfor this part).\n\nSince SocketPair Broker is completely independent from the purposes\nconnection will be used for, it has a potential to unify and replace\nall one-to-one unix socket connections on a host.  This one persistent\nbroker socket could be passed to any containers and can be used by\nany application greatly simplifying system management.\n\nAny feedback or suggestions on any component of this solution including\nthis patch-set, One Socket Daemon, SocketPair Broker Protocol or\nlibspbroker library are very welcome.\n\n*Note* about the patch set:\n\nFirst patch in a series is a *bug* fix, so it should be considered even\noutside of this series.  It basically fixes unregistering of a\nlistening socket that never happens in current code.\n\nThe virtio-user part of the series heavily depends on this bug fix\nsince broker connection unlike listening socket will not persist and\nwill generate lots of interrupts if not unregistered.\n\nIlya Maximets (4):\n  net/virtio: fix interrupt unregistering for listening socket\n  vhost: add support for SocketPair Broker\n  net/vhost: add support for SocketPair Broker\n  net/virtio: add support for SocketPair Broker\n\n doc/guides/nics/vhost.rst                     |   5 +\n doc/guides/nics/virtio.rst                    |   5 +\n doc/guides/prog_guide/vhost_lib.rst           |  10 +\n drivers/net/vhost/rte_eth_vhost.c             |  42 ++-\n drivers/net/virtio/meson.build                |   6 +\n drivers/net/virtio/virtio_user/vhost_user.c   | 122 ++++++++-\n .../net/virtio/virtio_user/virtio_user_dev.c  | 142 +++++++---\n .../net/virtio/virtio_user/virtio_user_dev.h  |   6 +-\n drivers/net/virtio/virtio_user_ethdev.c       |  30 ++-\n lib/librte_vhost/meson.build                  |   7 +\n lib/librte_vhost/rte_vhost.h                  |   1 +\n lib/librte_vhost/socket.c                     | 245 ++++++++++++++++--\n 12 files changed, 550 insertions(+), 71 deletions(-)",
    "diff": null,
    "prefixes": [
        "RFC",
        "0/4"
    ]
}