mirror of https://gitee.com/openkylin/qemu.git
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:
parent
09bac73c13
commit
6c3601361f
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue