Yes. That wrong review request is for #1986. It was pushed. Quoting Lennart Lund <lennart.l...@ericsson.com>:
> Ack > > Note: There seems to be another review request tagged with the same > ticket number? > > Thanks > Lennart > >> -----Original Message----- >> From: Vu Minh Nguyen [mailto:vu.m.ngu...@dektech.com.au] >> Sent: den 13 september 2016 12:50 >> To: Lennart Lund <lennart.l...@ericsson.com>; mahesh.va...@oracle.com >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: [PATCH 1 of 1] log: write_log_record_hdl get bad file descriptor >> [#2028] >> >> osaf/services/saf/logsv/lgs/lgs_filehdl.cc | 16 +++++++++++----- >> osaf/services/saf/logsv/lgs/lgs_stream.cc | 6 ++++++ >> 2 files changed, 17 insertions(+), 5 deletions(-) >> >> >> logsv did pass the WRITE request to file handle thread even >> the file descriptor was invalid. Also, when closing file, >> the file handle thread did not set it to invalid. >> >> This patch fixes these things. >> >> diff --git a/osaf/services/saf/logsv/lgs/lgs_filehdl.cc >> b/osaf/services/saf/logsv/lgs/lgs_filehdl.cc >> --- a/osaf/services/saf/logsv/lgs/lgs_filehdl.cc >> +++ b/osaf/services/saf/logsv/lgs/lgs_filehdl.cc >> @@ -467,16 +467,15 @@ open_retry: >> */ >> int fileclose_hdl(void *indata, void *outdata, size_t max_outsize) { >> int rc = 0; >> - int fd; >> + int *fd = static_cast<int *>(indata); >> >> - fd = *static_cast<int *>(indata); >> - TRACE_ENTER2("fd=%d", fd); >> + TRACE_ENTER2("fd=%d", *fd); >> >> osaf_mutex_unlock_ordie(&lgs_ftcom_mutex); /* UNLOCK critical section >> */ >> /* Flush and synchronize the file before closing to guaranty >> that the file >> * is not written to after it's closed >> */ >> - if ((rc = fdatasync(fd)) == -1) { >> + if ((rc = fdatasync(*fd)) == -1) { >> if ((errno == EROFS) || (errno == EINVAL)) { >> TRACE("Synchronization is not supported for this file"); >> } else { >> @@ -485,9 +484,16 @@ int fileclose_hdl(void *indata, void *ou >> } >> >> /* Close the file */ >> - rc = close(fd); >> + rc = close(*fd); >> if (rc == -1) { >> LOG_ER("fileclose() %s",strerror(errno)); >> + } else { >> + // When file system is busy, operations on files will take time. >> + // In that case, file handle thread will get timeout and the >> `requester` >> + // will put the `fd` into one link list to do retry next time. >> + // But if closing file succesfully, let the `requester` knows and >> + // no need to send `close file request` again. >> + *fd = -1; >> } >> >> osaf_mutex_lock_ordie(&lgs_ftcom_mutex); /* LOCK after critical section >> */ >> diff --git a/osaf/services/saf/logsv/lgs/lgs_stream.cc >> b/osaf/services/saf/logsv/lgs/lgs_stream.cc >> --- a/osaf/services/saf/logsv/lgs/lgs_stream.cc >> +++ b/osaf/services/saf/logsv/lgs/lgs_stream.cc >> @@ -1122,6 +1122,12 @@ int log_stream_write_h(log_stream_t *str >> if (*stream->p_fd == -1) { >> TRACE("%s - Initiating stream files \"%s\" Failed", __FUNCTION__, >> stream->name.c_str()); >> + // Seems file system is busy - can not create requrested files. >> + // Let inform the log client TRY_AGAIN. >> + // >> + // Return (-1) to inform that it is caller's responsibility >> + // to free the allocated memmories. >> + return -1; >> } else { >> TRACE("%s - stream files initiated", __FUNCTION__); >> } ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel