Apply the diskdata patch by Jonas.
This commit is contained in:
parent
7452faa503
commit
0831fd611e
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user