Skip to content

Commit

Permalink
migration: xxx_close will only be called once
Browse files Browse the repository at this point in the history
No need to test s->fd again, it is tested in the caller.

Reviewed-by: Orit Wasserman <owasserm@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
bonzini committed Nov 2, 2012
1 parent 09bac73 commit 6c36013
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 36 deletions.
14 changes: 6 additions & 8 deletions migration-exec.c
Expand Up @@ -48,14 +48,12 @@ static int exec_close(MigrationState *s)
{
int ret = 0;
DPRINTF("exec_close\n");
if (s->opaque) {
ret = qemu_fclose(s->opaque);
s->opaque = NULL;
s->fd = -1;
if (ret >= 0 && !(WIFEXITED(ret) && WEXITSTATUS(ret) == 0)) {
/* close succeeded, but non-zero exit code: */
ret = -EIO; /* fake errno value */
}
ret = qemu_fclose(s->opaque);
s->opaque = NULL;
s->fd = -1;
if (ret >= 0 && !(WIFEXITED(ret) && WEXITSTATUS(ret) == 0)) {
/* close succeeded, but non-zero exit code: */
ret = -EIO; /* fake errno value */
}
return ret;
}
Expand Down
33 changes: 15 additions & 18 deletions migration-fd.c
Expand Up @@ -48,29 +48,26 @@ static int fd_close(MigrationState *s)
int ret;

DPRINTF("fd_close\n");
if (s->fd != -1) {
ret = fstat(s->fd, &st);
if (ret == 0 && S_ISREG(st.st_mode)) {
/*
* If the file handle is a regular file make sure the
* data is flushed to disk before signaling success.
*/
ret = fsync(s->fd);
if (ret != 0) {
ret = -errno;
perror("migration-fd: fsync");
return ret;
}
}
ret = close(s->fd);
s->fd = -1;
ret = fstat(s->fd, &st);
if (ret == 0 && S_ISREG(st.st_mode)) {
/*
* If the file handle is a regular file make sure the
* data is flushed to disk before signaling success.
*/
ret = fsync(s->fd);
if (ret != 0) {
ret = -errno;
perror("migration-fd: close");
perror("migration-fd: fsync");
return ret;
}
}
return 0;
ret = close(s->fd);
s->fd = -1;
if (ret != 0) {
ret = -errno;
perror("migration-fd: close");
}
return ret;
}

void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error **errp)
Expand Down
7 changes: 2 additions & 5 deletions migration-tcp.c
Expand Up @@ -44,11 +44,8 @@ static int tcp_close(MigrationState *s)
{
int r = 0;
DPRINTF("tcp_close\n");
if (s->fd != -1) {
if (closesocket(s->fd) < 0) {
r = -errno;
}
s->fd = -1;
if (closesocket(s->fd) < 0) {
r = -socket_error();
}
return r;
}
Expand Down
7 changes: 2 additions & 5 deletions migration-unix.c
Expand Up @@ -44,11 +44,8 @@ static int unix_close(MigrationState *s)
{
int r = 0;
DPRINTF("unix_close\n");
if (s->fd != -1) {
if (close(s->fd) < 0) {
r = -errno;
}
s->fd = -1;
if (close(s->fd) < 0) {
r = -errno;
}
return r;
}
Expand Down

0 comments on commit 6c36013

Please sign in to comment.