mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
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
This commit is contained in:
parent
f5729e2c4d
commit
4faf77a9fe
2 changed files with 11 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -219,7 +219,8 @@ AsyncFile::run()
|
|||
rmrfReq(request, (char*)theFileName.c_str(), request->par.rmrf.own_directory);
|
||||
break;
|
||||
case Request:: end:
|
||||
closeReq(request);
|
||||
if (theFd > 0)
|
||||
closeReq(request);
|
||||
endReq();
|
||||
return;
|
||||
default:
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue