[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 12/47] Handle bi-directional communication for fd
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PATCH v4 12/47] Handle bi-directional communication for fd migration |
Date: |
Fri, 3 Oct 2014 18:47:18 +0100 |
From: Cristian Klein <address@hidden>
Signed-off-by: Cristian Klein <address@hidden>
---
migration-fd.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/migration-fd.c b/migration-fd.c
index d2e523a..129da99 100644
--- a/migration-fd.c
+++ b/migration-fd.c
@@ -31,13 +31,29 @@
do { } while (0)
#endif
+static bool fd_is_socket(int fd)
+{
+ struct stat stat;
+ int ret = fstat(fd, &stat);
+ if (ret == -1) {
+ /* When in doubt say no */
+ return false;
+ }
+ return S_ISSOCK(stat.st_mode);
+}
+
void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error
**errp)
{
int fd = monitor_get_fd(cur_mon, fdname, errp);
if (fd == -1) {
return;
}
- s->file = qemu_fdopen(fd, "wb");
+
+ if (fd_is_socket(fd)) {
+ s->file = qemu_fopen_socket(fd, "wb");
+ } else {
+ s->file = qemu_fdopen(fd, "wb");
+ }
migrate_fd_connect(s);
}
@@ -58,7 +74,11 @@ void fd_start_incoming_migration(const char *infd, Error
**errp)
DPRINTF("Attempting to start an incoming migration via fd\n");
fd = strtol(infd, NULL, 0);
- f = qemu_fdopen(fd, "rb");
+ if (fd_is_socket(fd)) {
+ f = qemu_fopen_socket(fd, "rb");
+ } else {
+ f = qemu_fdopen(fd, "rb");
+ }
if(f == NULL) {
error_setg_errno(errp, errno, "failed to open the source descriptor");
return;
--
1.9.3
- [Qemu-devel] [PATCH v4 05/47] improve DPRINTF macros, add to savevm, (continued)
- [Qemu-devel] [PATCH v4 05/47] improve DPRINTF macros, add to savevm, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 04/47] qemu_ram_foreach_block: pass up error value, and down the ramblock name, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 06/47] Add qemu_get_counted_string to read a string prefixed by a count byte, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 07/47] Create MigrationIncomingState, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 08/47] socket shutdown, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 09/47] Provide runtime Target page information, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 10/47] Return path: Open a return path on QEMUFile for sockets, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 12/47] Handle bi-directional communication for fd migration,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [PATCH v4 11/47] Return path: socket_writev_buffer: Block even on non-blocking fd's, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 13/47] Migration commands, Dr. David Alan Gilbert (git), 2014/10/03
- [Qemu-devel] [PATCH v4 14/47] Return path: Control commands, Dr. David Alan Gilbert (git), 2014/10/03
[Qemu-devel] [PATCH v4 16/47] Return path: Source handling of return path, Dr. David Alan Gilbert (git), 2014/10/03