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

Reply via email to