Changeset: d4e3fd5b4552 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d4e3fd5b4552
Modified Files:
clients/Tests/exports.stable.out
common/utils/msabaoth.c
common/utils/mutils.c
common/utils/mutils.h
gdk/gdk_utils.c
tools/merovingian/daemon/argvcmds.c
tools/merovingian/daemon/merovingian.c
tools/merovingian/daemon/multiplex-funnel.c
Branch: default
Log Message:
Simplified function interface.
We always called MT_lockf with parameters 4 and 1.
diffs (202 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -311,7 +311,7 @@ MT_Id MT_getpid(void);
size_t MT_getrss(void);
void MT_init(void);
int MT_join_thread(MT_Id t);
-int MT_lockf(char *filename, int mode, off_t off, off_t len);
+int MT_lockf(char *filename, int mode);
void *MT_mmap(const char *path, int mode, size_t len);
int MT_munmap(void *p, size_t len);
bool MT_path_absolute(const char *path);
diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -641,7 +641,7 @@ msab_getSingleStatus(const char *pathbuf
(void)fclose(f);
}
} else if ((snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname,
".gdk_lock") > 0) & /* no typo */
- ((fd = MT_lockf(buf, F_TEST, 4, 1)) == -2)) {
+ ((fd = MT_lockf(buf, F_TEST)) == -2)) {
/* Locking failed; this can be because the lockfile couldn't
* be created. Probably there is no Mserver running for
* that case also.
diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -278,7 +278,7 @@ dirname(char *path)
/* see contract of unix MT_lockf */
int
-MT_lockf(char *filename, int mode, off_t off, off_t len)
+MT_lockf(char *filename, int mode)
{
int ret = 1, fd = -1;
OVERLAPPED ov;
@@ -292,19 +292,11 @@ MT_lockf(char *filename, int mode, off_t
ov = (OVERLAPPED) {0};
#if defined(DUMMYSTRUCTNAME) && (defined(NONAMELESSUNION) ||
!defined(_MSC_EXTENSIONS)) /* Windows SDK v7.0 */
- ov.u.s.Offset = (unsigned int) off;
-#if 0
- ov.u.s.OffsetHigh = off >> 32;
-#else
- ov.u.s.OffsetHigh = 0; /* sizeof(off) == 4, i.e. off >> 32 is not
possible */
-#endif
+ ov.u.s.Offset = 4;
+ ov.u.s.OffsetHigh = 0;
#else
- ov.Offset = (unsigned int) off;
-#if 0
- ov.OffsetHigh = off >> 32;
-#else
- ov.OffsetHigh = 0; /* sizeof(off) == 4, i.e. off >> 32 is not
possible */
-#endif
+ ov.Offset = 4;
+ ov.OffsetHigh = 0;
#endif
if (mode == F_ULOCK) {
@@ -316,7 +308,7 @@ MT_lockf(char *filename, int mode, off_t
fp = *fpp;
*fpp = fp->next;
free(fp);
- ret = UnlockFileEx(fh, 0, len, 0, &ov);
+ ret = UnlockFileEx(fh, 0, 1, 0, &ov);
return ret ? 0 : -1;
}
}
@@ -327,7 +319,7 @@ MT_lockf(char *filename, int mode, off_t
NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (fh == INVALID_HANDLE_VALUE)
return -2;
- ret = UnlockFileEx(fh, 0, len, 0, &ov);
+ ret = UnlockFileEx(fh, 0, 1, 0, &ov);
CloseHandle(fh);
return 0;
}
@@ -342,13 +334,13 @@ MT_lockf(char *filename, int mode, off_t
}
if (mode == F_TLOCK) {
- ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY |
LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &ov);
+ ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY |
LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
} else if (mode == F_LOCK) {
- ret = LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &ov);
+ ret = LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
} else if (mode == F_TEST) {
- ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY |
LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &ov);
+ ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY |
LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
if (ret != 0) {
- UnlockFileEx(fh, 0, len, 0, &ov);
+ UnlockFileEx(fh, 0, 1, 0, &ov);
close(fd);
return 0;
}
@@ -408,15 +400,15 @@ lockf(int fd, int cmd, off_t len)
* returns the (open) file descriptor to the file when locking
* returns 0 when unlocking */
int
-MT_lockf(char *filename, int mode, off_t off, off_t len)
+MT_lockf(char *filename, int mode)
{
int fd = open(filename, O_CREAT | O_RDWR | O_TEXT | O_CLOEXEC,
MONETDB_MODE);
if (fd < 0)
return -2;
- if (lseek(fd, off, SEEK_SET) >= 0 &&
- lockf(fd, mode, len) == 0) {
+ if (lseek(fd, 4, SEEK_SET) >= 0 &&
+ lockf(fd, mode, 1) == 0) {
if (mode == F_ULOCK || mode == F_TEST) {
close(fd);
return 0;
diff --git a/common/utils/mutils.h b/common/utils/mutils.h
--- a/common/utils/mutils.h
+++ b/common/utils/mutils.h
@@ -67,7 +67,7 @@ mutils_export char *dirname(char *path);
#define F_ULOCK 0 /* unlock a previously locked region */
#define F_LOCK 1 /* lock a region for exclusive use */
-mutils_export int MT_lockf(char *filename, int mode, off_t off, off_t len);
+mutils_export int MT_lockf(char *filename, int mode);
mutils_export void print_trace(void);
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1026,7 +1026,7 @@ GDKlockHome(int farmid)
GDKfree(gdklockpath);
return GDK_FAIL;
}
- if ((fd = MT_lockf(gdklockpath, F_TLOCK, 4, 1)) < 0) {
+ if ((fd = MT_lockf(gdklockpath, F_TLOCK)) < 0) {
GDKerror("GDKlockHome: Database lock '%s' denied\n",
gdklockpath);
GDKfree(gdklockpath);
@@ -1077,7 +1077,7 @@ GDKunlockHome(int farmid)
if (BBPfarms[farmid].lock_file) {
char *gdklockpath = GDKfilepath(farmid, NULL, GDKLOCK, NULL);
if (gdklockpath)
- MT_lockf(gdklockpath, F_ULOCK, 4, 1);
+ MT_lockf(gdklockpath, F_ULOCK);
fclose(BBPfarms[farmid].lock_file);
BBPfarms[farmid].lock_file = NULL;
GDKfree(gdklockpath);
diff --git a/tools/merovingian/daemon/argvcmds.c
b/tools/merovingian/daemon/argvcmds.c
--- a/tools/merovingian/daemon/argvcmds.c
+++ b/tools/merovingian/daemon/argvcmds.c
@@ -187,7 +187,7 @@ command_get(confkeyval *ckv, int argc, c
{
/* check if there is a merovingian serving this dbfarm */
int ret;
- if ((ret = MT_lockf(".merovingian_lock", F_TLOCK, 4, 1)) == -1)
{
+ if ((ret = MT_lockf(".merovingian_lock", F_TLOCK)) == -1) {
/* locking failed, merovingian is running */
FILE *pf;
char *pfile = getConfVal(ckv, "pidfile");
@@ -201,7 +201,7 @@ command_get(confkeyval *ckv, int argc, c
} else {
if (ret >= 0) {
/* release a possible lock */
- MT_lockf(".merovingian_lock", F_ULOCK, 4, 1);
+ MT_lockf(".merovingian_lock", F_ULOCK);
close(ret);
}
meropid = 0;
diff --git a/tools/merovingian/daemon/merovingian.c
b/tools/merovingian/daemon/merovingian.c
--- a/tools/merovingian/daemon/merovingian.c
+++ b/tools/merovingian/daemon/merovingian.c
@@ -686,7 +686,7 @@ main(int argc, char *argv[])
}
/* lock such that we are alone on this world */
- if ((lockfd = MT_lockf(".merovingian_lock", F_TLOCK, 4, 1)) == -1) {
+ if ((lockfd = MT_lockf(".merovingian_lock", F_TLOCK)) == -1) {
/* locking failed */
Mfprintf(stderr, "another monetdbd is already running\n");
MERO_EXIT_CLEAN(1);
@@ -1113,7 +1113,7 @@ shutdown:
}
if (lockfd >= 0) {
- MT_lockf(".merovingian_lock", F_ULOCK, 4, 1);
+ MT_lockf(".merovingian_lock", F_ULOCK);
close(lockfd);
}
diff --git a/tools/merovingian/daemon/multiplex-funnel.c
b/tools/merovingian/daemon/multiplex-funnel.c
--- a/tools/merovingian/daemon/multiplex-funnel.c
+++ b/tools/merovingian/daemon/multiplex-funnel.c
@@ -438,7 +438,7 @@ multiplexInit(char *name, char *pattern,
/* fake lock such that sabaoth believes we are (still) running, we
* rely on merovingian moving to dbfarm here */
snprintf(buf, sizeof(buf), "%s/.gdk_lock", name);
- if ((m->gdklock = MT_lockf(buf, F_TLOCK, 4, 1)) == -1) {
+ if ((m->gdklock = MT_lockf(buf, F_TLOCK)) == -1) {
/* locking failed, FIXME: cleanup here */
Mfprintf(serr, "mfunnel: another instance is already
running?\n");
return(newErr("cannot lock for %s, already locked", name));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list