1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

Apply the diskdata patch by Jonas.

storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp:
  Apply the diskdata patch by Jonas: the patch adds a fallback to 
  the standard I/O if O_DIRECT does not work.
This commit is contained in:
unknown
2006-02-08 13:05:16 +03:00
parent 3a40ddd5b7
commit b38ec6f44a

View File

@@ -370,7 +370,6 @@ void AsyncFile::openReq(Request* request)
const int mode = S_IRUSR | S_IWUSR |
S_IRGRP | S_IWGRP |
S_IROTH | S_IWOTH;
retry:
if(flags & FsOpenReq::OM_CREATE_IF_NONE){
if((theFd = ::open(theFileName.c_str(), new_flags, mode)) != -1) {
close(theFd);
@@ -449,9 +448,21 @@ retry:
}
if(size != 0)
{
int err = errno;
#ifdef O_DIRECT
if ((new_flags & O_DIRECT) && off == 0)
{
ndbout_c("error on first write(%d), disable O_DIRECT", err);
new_flags &= ~O_DIRECT;
close(theFd);
theFd = ::open(theFileName.c_str(), new_flags, mode);
if (theFd != -1)
continue;
}
#endif
close(theFd);
unlink(theFileName.c_str());
request->error = errno;
request->error = err;
return;
}
off += request->par.open.page_size;