List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:November 17 2008 3:42pm
Subject:bzr push into mysql-5.1 branch (jonas:3074 to 3075)
View as plain text  
 3075 Jonas Oreland	2008-11-17
      ndb - enable pread/pwrite for windows
modified:
  storage/ndb/src/kernel/blocks/ndbfs/Win32AsyncFile.cpp

 3074 Jonas Oreland	2008-11-11 [merge]
      merge 63 to 64
modified:
  storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/Win32AsyncFile.cpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/Win32AsyncFile.cpp	2008-10-22 10:17:12 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/Win32AsyncFile.cpp	2008-11-17 14:42:22 +0000
@@ -207,20 +207,23 @@ int
 Win32AsyncFile::readBuffer(Request* req, char * buf, size_t size, off_t offset){
   req->par.readWrite.pages[0].size = 0;
 
-  DWORD dwSFP = SetFilePointer(hFile, offset, 0, FILE_BEGIN);
-  if(dwSFP != offset) {
-    return GetLastError();
-  }
-
   while (size > 0) {
     size_t bytes_read = 0;
 
+    OVERLAPPED ov;
+    bzero(&ov, sizeof(ov));
+
+    LARGE_INTEGER li;
+    li.QuadPart = offset;
+    ov.Offset = li.LowPart;
+    ov.OffsetHigh = li.HighPart;
+    
     DWORD dwBytesRead;
     BOOL bRead = ReadFile(hFile,
                           buf,
                           size,
                           &dwBytesRead,
-                          0);
+                          &ov);
     if(!bRead){
       return GetLastError();
     }
@@ -257,12 +260,15 @@ Win32AsyncFile::writeBuffer(const char *
 
   m_write_wo_sync += size;
 
-  DWORD dwSFP = SetFilePointer(hFile, offset, 0, FILE_BEGIN);
-  if(dwSFP != offset) {
-    return GetLastError();
-  }
-
   while (size > 0) {
+    OVERLAPPED ov;
+    bzero(&ov, sizeof(ov));
+
+    LARGE_INTEGER li;
+    li.QuadPart = offset;
+    ov.Offset = li.LowPart;
+    ov.OffsetHigh = li.HighPart;
+    
     if (size < bytes_to_write){
       // We are at the last chunk
       bytes_to_write = size;
@@ -270,7 +276,7 @@ Win32AsyncFile::writeBuffer(const char *
     size_t bytes_written = 0;
 
     DWORD dwWritten;
-    BOOL bWrite = WriteFile(hFile, buf, bytes_to_write, &dwWritten, 0);
+    BOOL bWrite = WriteFile(hFile, buf, bytes_to_write, &dwWritten, &ov);
     if(!bWrite) {
       return GetLastError();
     }

Thread
bzr push into mysql-5.1 branch (jonas:3074 to 3075) Jonas Oreland17 Nov