Cover Letter Detail
Show a cover letter.
GET /api/covers/810526/?format=api
{ "id": 810526, "url": "http://patchwork.ozlabs.org/api/covers/810526/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20170906115143.27451-1-quintela@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170906115143.27451-1-quintela@redhat.com>", "list_archive_url": null, "date": "2017-09-06T11:51:21", "name": "[v7,00/22] Multifd", "submitter": { "id": 2643, "url": "http://patchwork.ozlabs.org/api/people/2643/?format=api", "name": "Juan Quintela", "email": "quintela@redhat.com" }, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20170906115143.27451-1-quintela@redhat.com/mbox/", "series": [ { "id": 1773, "url": "http://patchwork.ozlabs.org/api/series/1773/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1773", "date": "2017-09-06T11:51:21", "name": "Multifd", "version": 7, "mbox": "http://patchwork.ozlabs.org/series/1773/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/810526/comments/", "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)", "ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com", "ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=quintela@redhat.com" ], "Received": [ "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnMQV4r2Fz9sBZ\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 6 Sep 2017 21:52:34 +1000 (AEST)", "from localhost ([::1]:35576 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpYsi-0007EO-P7\n\tfor incoming@patchwork.ozlabs.org; Wed, 06 Sep 2017 07:52:32 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:60113)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <quintela@redhat.com>) id 1dpYs7-0007Ds-GK\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:51:56 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <quintela@redhat.com>) id 1dpYs4-0007qN-5j\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:51:55 -0400", "from mx1.redhat.com ([209.132.183.28]:60370)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <quintela@redhat.com>) id 1dpYs3-0007pF-SH\n\tfor qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:51:52 -0400", "from smtp.corp.redhat.com\n\t(int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id B632E85376\n\tfor <qemu-devel@nongnu.org>; Wed, 6 Sep 2017 11:51:50 +0000 (UTC)", "from secure.mitica (ovpn-117-188.ams2.redhat.com [10.36.117.188])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 168E45C316;\n\tWed, 6 Sep 2017 11:51:44 +0000 (UTC)" ], "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com B632E85376", "From": "Juan Quintela <quintela@redhat.com>", "To": "qemu-devel@nongnu.org", "Date": "Wed, 6 Sep 2017 13:51:21 +0200", "Message-Id": "<20170906115143.27451-1-quintela@redhat.com>", "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.11", "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.25]);\n\tWed, 06 Sep 2017 11:51:50 +0000 (UTC)", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]", "X-Received-From": "209.132.183.28", "Subject": "[Qemu-devel] [PATCH v7 00/22] Multifd", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.21", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "lvivier@redhat.com, dgilbert@redhat.com, peterx@redhat.com", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "Hi\n\nThings NOT done yet:\n\n be able to return with errors from other threads.\n- still connects synchronusly. I need to redo the other changes to fix this.\n doing it asynchronously is easy. Making sure that everything finishes is not.\n testing this.\n- renaming outgoing variables, thingking about it some more\n- paolo suggestion of not having a control channel\n needs iyet more cleanups to be able to have more than one ramstate, trying it.\n- still not performance done, but it has been very stable\n\nPlease, comment.\n\nOn v7:\n- tests fixed as danp wanted\n- have to revert danp qio_*_all patches, as they break multifd, I have to investigate why.\n- error_abort is gone. After several tries about getting errors, I ended having a single error\n proceted by a lock and first error wins.\n- Addressed basically all reviews (see on ToDo)\n- Pointers to struct are done now\n- fix lots of leaks\n- lots of small fixes\n\n\n[v6]\n- Improve migration_ioc_porcess_incoming\n- teach about G_SOURCE_REMOVE/CONTINUE\n- Add test for migration_has_all_channels\n- use DEFIN_PROP*\n- change recv_state to use pointers to parameters\n make easier to receive channels out of order\n- use g_strdup_printf()\n- improve count of threads to know when we have to finish\n- report channel id's on errors\n- Use last_page parameter for multifd_send_page() sooner\n- Improve commets for address\n- use g_new0() instead of g_malloc()\n- create MULTIFD_CONTINUE instead of using UINT16_MAX\n- clear memory used by group of pages\n once there, pass everything to the global state variables instead of being\n local to the function. This way it works if we cancel migration and start\n a new one\n- Really wait to create the migration_thread until all channels are created\n- split initial_bytes setup to make clearer following patches.\n- createRAM_SAVE_FLAG_MULTIFD_SYNC macro, to make clear what we are doing\n- move setting of need_flush to inside bitmap_sync\n- Lots of other small changes & reorderings\n\nPlease, comment.\n\n\n[v5]\n\n- tests from qio functions (a.k.a. make danp happy)\n- 1st message from one channel to the other contains:\n <uuid> multifd <channel number>\n This would allow us to create more channels as we want them.\n a.k.a. Making dave happy\n- Waiting in reception for new channels using qio listeners\n Getting threads, qio and reference counters working at the same time\n was interesing.\n Another make danp happy.\n\n- Lots and lots of small changes and fixes. Notice that the last 70 patches\n that I merged or so what to make this series easier/smaller.\n\n- NOT DONE: I haven't been woring on measuring performance\n differences, this was about getting the creation of the\n threads/channels right.\n\nSo, what I want:\n\n- Are people happy with how I have (ab)used qio channels? (yes danp,\n that is you).\n- My understanding is th\n\nToDo:\n\n- Make paolo happy: He wanted to test using control information\n through each channel, not only pages. This requires yet more\n cleanups to be able to have more than one QEMUFile/RAMState open at\n the same time.\n\n- How I create multiple channels. Things I know:\n * with current changes, it should work with fd/channels (the multifd bits),\n but we don;t have a way to pass multiple fd;s or exec files.\n Danp, any idea about how to create an UI for it?\n * My idea is that we would split current code to be:\n + channel creation at migration.c\n + rest of bits at ram.c\n + change format to:\n <uuid> main <rest of migration capabilities/paramentes> so we can check\n <uuid> postcopy <no clue what parameters are needed>\n Dave wanted a way to create a new fd for postcopy for some time\n + Adding new channels is easy\n\n- Performance data/numbers: Yes, I wanted to get this out at once, I\n would continue with this.\n\n\nPlease, review.\n\n\n[v4]\nThis is the 4th version of multifd. Changes:\n- XBZRLE don't need to be checked for\n- Documentation and defaults are consistent\n- split socketArgs\n- use iovec instead of creating something similar.\n- We use now the exported size of target page (another HACK removal)\n- created qio_chanel_{wirtev,readv}_all functions. the _full() name\n was already taken.\n What they do is the same that the without _all() function, but if it\n returns due to blocking it redo the call.\n- it is checkpatch.pl clean now.\n\nPlease comment, Juan.\n\n\nJuan Quintela (22):\n Revert \"io: add new qio_channel_{readv, writev, read, write}_all\n functions\"\n migration: Create migration_ioc_process_incoming()\n migration: Teach it about G_SOURCE_REMOVE\n migration: Add comments to channel functions\n migration: Create migration_has_all_channels\n migration: Improve migration thread error handling\n migration: Make migrate_fd_error() the owner of the Error\n qio: Create new qio_channel_{readv,writev}_all\n migration: Add multifd capability\n migration: Create x-multifd-threads parameter\n migration: Create x-multifd-group parameter\n migration: Create multifd migration threads\n migration: Split migration_fd_process_incoming\n migration: Start of multiple fd work\n migration: Create ram_multifd_page\n migration: Really use multiple pages at a time\n migration: Send the fd number which we are going to use for this page\n migration: Create thread infrastructure for multifd recv side\n migration: Test new fd infrastructure\n migration: Rename initial_bytes\n migration: Transfer pages over new channels\n migration: Flush receive queue\n\n hmp.c | 16 ++\n include/glib-compat.h | 2 +\n include/io/channel.h | 70 +-----\n io/channel.c | 57 ++---\n migration/channel.c | 19 +-\n migration/exec.c | 2 +-\n migration/fd.c | 2 +-\n migration/migration.c | 176 +++++++++++--\n migration/migration.h | 17 +-\n migration/qemu-file-channel.c | 29 +--\n migration/ram.c | 564 +++++++++++++++++++++++++++++++++++++++++-\n migration/ram.h | 8 +\n migration/socket.c | 46 +++-\n migration/socket.h | 10 +\n migration/tls.c | 1 -\n qapi/migration.json | 44 +++-\n tests/io-channel-helpers.c | 120 ++++++++-\n 17 files changed, 1016 insertions(+), 167 deletions(-)" }