migration: xxx_close will only be called once

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>
This commit is contained in:
Paolo Bonzini 2012-09-27 13:30:15 +02:00
parent 09bac73c13
commit 6c3601361f
4 changed files with 25 additions and 36 deletions

View file

@ -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;
}

View file

@ -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)

View file

@ -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;
}

View file

@ -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;
}