Commit 4faf77a9 authored by unknown's avatar unknown
Browse files

BUG#8208 don't fsync unless something has been written

+ ion shutdown - don't close files that are not open
+ abort in debug - if closing a fd == -1


BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parent f5729e2c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -224,6 +224,7 @@ tonu@x153.internalnet
tonu@x3.internalnet
tsmith@build.mysql.com
tulin@build.mysql.com
tulin@mysql.com
ulli@morbus.(none)
venu@hundin.mysql.fi
venu@myvenu.com
+10 −4
Original line number Diff line number Diff line
@@ -219,6 +219,7 @@ AsyncFile::run()
      rmrfReq(request, (char*)theFileName.c_str(), request->par.rmrf.own_directory);
      break;
    case Request:: end:
      if (theFd > 0)
        closeReq(request);
      endReq();
      return;
@@ -239,6 +240,7 @@ void AsyncFile::openReq(Request* request)
{  
  m_openedWithSync = false;
  m_syncFrequency = 0;
  m_syncCount= 0;

  // for open.flags, see signal FSOPENREQ
#ifdef NDB_WIN32
@@ -329,7 +331,6 @@ void AsyncFile::openReq(Request* request)
    } else {
#endif
      m_openedWithSync = false;
      m_syncCount = 0;
      m_syncFrequency = Global_syncFreq;
#if 0
    }
@@ -656,6 +657,7 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset,
    }
#endif
    
    m_syncCount+= bytes_written;
    buf += bytes_written;
    size -= bytes_written;
    offset += bytes_written;
@@ -682,6 +684,10 @@ AsyncFile::closeReq(Request * request)
  hFile = INVALID_HANDLE_VALUE;
#else
  if (-1 == ::close(theFd)) {
#ifndef DBUG_OFF
    if (theFd == -1)
      abort();
#endif
    request->error = errno;
  }
  theFd = -1;
@@ -700,7 +706,8 @@ bool AsyncFile::isOpen(){
void
AsyncFile::syncReq(Request * request)
{
  if(m_openedWithSync){
  if(m_openedWithSync ||
     m_syncCount == 0){
    return;
  }
#ifdef NDB_WIN32
@@ -756,7 +763,6 @@ AsyncFile::appendReq(Request * request){

  if(m_syncFrequency != 0 && m_syncCount > m_syncFrequency){
    syncReq(request);
    request->error = 0;
  }
}