From 544f34505a03cd85e0b4d03c9b3d3add73c025ed Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Tue, 19 Dec 2017 17:13:41 +0000 Subject: OS-6521 zoneadmd loses stdio.log messages when init process does 0-byte write to stdout/stderr Reviewed by: Dan McDonald Reviewed by: Jason King Approved by: Dan McDonald --- usr/src/cmd/zoneadmd/zfd.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/usr/src/cmd/zoneadmd/zfd.c b/usr/src/cmd/zoneadmd/zfd.c index 00278cd583..88501942e9 100644 --- a/usr/src/cmd/zoneadmd/zfd.c +++ b/usr/src/cmd/zoneadmd/zfd.c @@ -22,7 +22,7 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright 2016 Joyent, Inc. All rights reserved. + * Copyright 2017 Joyent, Inc. */ /* @@ -934,7 +934,8 @@ do_zfd_io(int gzctlfd, int gzservfd, int gzerrfd, int stdinfd, int stdoutfd, (POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI)) { errno = 0; cc = read(stdoutfd, ibuf, BUFSIZ); - if (cc <= 0 && (errno != EINTR) && + /* zfd is a stream, so ignore 0 length read */ + if (cc < 0 && (errno != EINTR) && (errno != EAGAIN)) break; if (cc > 0) { @@ -962,7 +963,8 @@ do_zfd_io(int gzctlfd, int gzservfd, int gzerrfd, int stdinfd, int stdoutfd, (POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI)) { errno = 0; cc = read(stderrfd, ibuf, BUFSIZ); - if (cc <= 0 && (errno != EINTR) && + /* zfd is a stream, so ignore 0 length read */ + if (cc < 0 && (errno != EINTR) && (errno != EAGAIN)) break; if (cc > 0) { -- cgit v1.2.3