Changeset: 79281585abb5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/79281585abb5
Modified Files:
        common/utils/mutils.c
Branch: default
Log Message:

Just lock the whole file and not just the 4th byte.


diffs (79 lines):

diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -458,13 +458,6 @@ MT_lockf(const char *filename, int mode)
        if ((wfilename = utf8towchar(filename)) == NULL)
                return -2;
        ov = (OVERLAPPED) {0};
-#if defined(DUMMYSTRUCTNAME) && (defined(NONAMELESSUNION) || 
!defined(_MSC_EXTENSIONS))        /* Windows SDK v7.0 */
-       ov.u.s.Offset = 4;
-       ov.u.s.OffsetHigh = 0;
-#else
-       ov.Offset = 4;
-       ov.OffsetHigh = 0;
-#endif
 
        if (mode == F_ULOCK) {
                EnterCriticalSection(&cs);
@@ -476,7 +469,7 @@ MT_lockf(const char *filename, int mode)
                                fd = fp->fildes;
                                fh = (HANDLE) _get_osfhandle(fd);
                                free(fp);
-                               ret = UnlockFileEx(fh, 0, 1, 0, &ov);
+                               ret = UnlockFileEx(fh, 0, 10, 0, &ov);
                                free(wfilename);
                                return ret ? 0 : -1;
                        }
@@ -490,7 +483,7 @@ MT_lockf(const char *filename, int mode)
                free(wfilename);
                if (fh == INVALID_HANDLE_VALUE)
                        return -2;
-               ret = UnlockFileEx(fh, 0, 1, 0, &ov);
+               ret = UnlockFileEx(fh, 0, 10, 0, &ov);
                CloseHandle(fh);
                return 0;
        }
@@ -507,13 +500,13 @@ MT_lockf(const char *filename, int mode)
        }
 
        if (mode == F_TLOCK) {
-               ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY | 
LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
+               ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY | 
LOCKFILE_EXCLUSIVE_LOCK, 0, 10, 0, &ov);
        } else if (mode == F_LOCK) {
-               ret = LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
+               ret = LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, 10, 0, &ov);
        } else if (mode == F_TEST) {
-               ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY | 
LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
+               ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY | 
LOCKFILE_EXCLUSIVE_LOCK, 0, 10, 0, &ov);
                if (ret != 0) {
-                       UnlockFileEx(fh, 0, 1, 0, &ov);
+                       UnlockFileEx(fh, 0, 10, 0, &ov);
                        close(fd);
                        free(wfilename);
                        return 0;
@@ -772,11 +765,11 @@ MT_lockf(const char *filename, int mode)
                                free(fp->filename);
                                fd = fp->fd;
                                free(fp);
-                               seek = lseek(fd, 4, SEEK_SET);
+                               seek = lseek(fd, 0, SEEK_SET);
                                if (seek < 0)
                                        seek = 0;       /* should never happen, 
just for coverity */
-                               int ret = lockf(fd, mode, 1);
-                               (void) lseek(fd, seek, SEEK_SET); /* move seek 
pointer back */
+                               int ret = lockf(fd, mode, 0);
+                               (void) lseek(fd, seek, 0); /* move seek pointer 
back */
                                /* do not close fd, it is closed by caller */
                                return ret;             /* 0 if unlock 
successful, -1 if not */
                        }
@@ -788,8 +781,8 @@ MT_lockf(const char *filename, int mode)
        if (fd < 0)
                return -2;
 
-       if ((seek = lseek(fd, 4, SEEK_SET)) >= 0 &&
-           lockf(fd, mode, 1) == 0) {
+       if ((seek = lseek(fd, 0, SEEK_SET)) >= 0 &&
+           lockf(fd, mode, 0) == 0) {
                if (mode == F_ULOCK || mode == F_TEST) {
                        close(fd);
                        return 0;
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to