ndb - bug#30646 fsync on close only if file is open for write

storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp:
  AsyncFile: fsync on close only if file is open for write (for AIX)
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp:
  AsyncFile: fsync on close only if file is open for write (for AIX)
This commit is contained in:
unknown 2007-08-27 21:58:49 +03:00
parent b0ac87dc44
commit d319e12ab7
2 changed files with 10 additions and 1 deletions

View file

@ -99,6 +99,7 @@ AsyncFile::AsyncFile(SimulatedBlock& fs) :
{
m_page_ptr.setNull();
m_current_request= m_last_request= 0;
m_open_flags = 0;
}
void
@ -328,6 +329,7 @@ void AsyncFile::openReq(Request* request)
{
m_auto_sync_freq = 0;
m_write_wo_sync = 0;
m_open_flags = request->par.open.flags;
// for open.flags, see signal FSOPENREQ
#ifdef NDB_WIN32
@ -954,7 +956,12 @@ AsyncFile::writevReq( Request * request)
void
AsyncFile::closeReq(Request * request)
{
syncReq(request);
if (m_open_flags & (
FsOpenReq::OM_WRITEONLY |
FsOpenReq::OM_READWRITE |
FsOpenReq::OM_APPEND )) {
syncReq(request);
}
#ifdef NDB_WIN32
if(!CloseHandle(hFile)) {
request->error = GetLastError();

View file

@ -224,6 +224,8 @@ private:
#else
int theFd;
#endif
Uint32 m_open_flags; // OM_ flags from request to open file
MemoryChannel<Request> *theReportTo;
MemoryChannel<Request>* theMemoryChannelPtr;