mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
- Working on the problem of writing to mapped files on Linux
modified: storage/connect/maputil.cpp*
This commit is contained in:
12
storage/connect/maputil.cpp
Normal file → Executable file
12
storage/connect/maputil.cpp
Normal file → Executable file
@@ -133,7 +133,7 @@ HANDLE CreateFileMap(PGLOBAL g, LPCSTR fileName,
|
|||||||
case MODE_UPDATE:
|
case MODE_UPDATE:
|
||||||
case MODE_DELETE:
|
case MODE_DELETE:
|
||||||
openMode = (del) ? (O_RDWR | O_TRUNC) : O_RDWR;
|
openMode = (del) ? (O_RDWR | O_TRUNC) : O_RDWR;
|
||||||
protmode = PROT_WRITE;
|
protmode = PROT_READ | PROT_WRITE;
|
||||||
break;
|
break;
|
||||||
case MODE_INSERT:
|
case MODE_INSERT:
|
||||||
openMode = (O_WRONLY | O_CREAT | O_APPEND);
|
openMode = (O_WRONLY | O_CREAT | O_APPEND);
|
||||||
@@ -167,6 +167,8 @@ HANDLE CreateFileMap(PGLOBAL g, LPCSTR fileName,
|
|||||||
} else {
|
} else {
|
||||||
strcpy(g->Message, "Memory mapping failed");
|
strcpy(g->Message, "Memory mapping failed");
|
||||||
return INVALID_HANDLE_VALUE;
|
return INVALID_HANDLE_VALUE;
|
||||||
|
} // endif memory
|
||||||
|
|
||||||
} /* endif fd */
|
} /* endif fd */
|
||||||
|
|
||||||
// mmap() call was successful. ??????????
|
// mmap() call was successful. ??????????
|
||||||
@@ -175,7 +177,13 @@ HANDLE CreateFileMap(PGLOBAL g, LPCSTR fileName,
|
|||||||
|
|
||||||
bool CloseMemMap(void *memory, size_t dwSize)
|
bool CloseMemMap(void *memory, size_t dwSize)
|
||||||
{
|
{
|
||||||
return (memory) ? ((munmap(memory, dwSize)) ? true : false) : false;
|
if (memory) {
|
||||||
|
// All this must be redesigned
|
||||||
|
int rc = msync(memory, dwSize, MS_SYNC);
|
||||||
|
return (munmap(memory, dwSize)) ? true : false;
|
||||||
|
} else
|
||||||
|
return false;
|
||||||
|
|
||||||
} // end of CloseMemMap
|
} // end of CloseMemMap
|
||||||
|
|
||||||
#endif // UNIX
|
#endif // UNIX
|
||||||
|
Reference in New Issue
Block a user