summaryrefslogtreecommitdiff
path: root/lib/tdb2/test/run-82-lockattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tdb2/test/run-82-lockattr.c')
-rw-r--r--lib/tdb2/test/run-82-lockattr.c52
1 files changed, 20 insertions, 32 deletions
diff --git a/lib/tdb2/test/run-82-lockattr.c b/lib/tdb2/test/run-82-lockattr.c
index 20d0aaafa0..acad439941 100644
--- a/lib/tdb2/test/run-82-lockattr.c
+++ b/lib/tdb2/test/run-82-lockattr.c
@@ -29,29 +29,6 @@ static int mylock(int fd, int rw, off_t off, off_t len, bool waitflag,
return ret;
}
-static int myunlock(int fd, int rw, off_t off, off_t len, void *_err)
-{
- int *lock_err = _err;
- struct flock fl;
- int ret;
-
- if (*lock_err) {
- errno = *lock_err;
- return -1;
- }
-
- do {
- fl.l_type = F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_start = off;
- fl.l_len = len;
-
- ret = fcntl(fd, F_SETLKW, &fl);
- } while (ret != 0 && errno == EINTR);
-
- return ret;
-}
-
static int trav_err;
static int trav(struct tdb_context *tdb, TDB_DATA k, TDB_DATA d, int *err)
{
@@ -64,7 +41,10 @@ int main(int argc, char *argv[])
unsigned int i;
struct tdb_context *tdb;
int flags[] = { TDB_DEFAULT, TDB_NOMMAP,
- TDB_CONVERT, TDB_NOMMAP|TDB_CONVERT };
+ TDB_CONVERT, TDB_NOMMAP|TDB_CONVERT,
+ TDB_VERSION1, TDB_NOMMAP|TDB_VERSION1,
+ TDB_CONVERT|TDB_VERSION1,
+ TDB_NOMMAP|TDB_CONVERT|TDB_VERSION1 };
union tdb_attribute lock_attr;
struct tdb_data key = tdb_mkdata("key", 3);
struct tdb_data data = tdb_mkdata("data", 4);
@@ -73,13 +53,21 @@ int main(int argc, char *argv[])
lock_attr.base.attr = TDB_ATTRIBUTE_FLOCK;
lock_attr.base.next = &tap_log_attr;
lock_attr.flock.lock = mylock;
- lock_attr.flock.unlock = myunlock;
+ lock_attr.flock.unlock = tdb_fcntl_unlock;
lock_attr.flock.data = &lock_err;
plan_tests(sizeof(flags) / sizeof(flags[0]) * 80);
for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++) {
struct tdb_data d;
+ unsigned int num_oom_messages;
+
+ /* TDB1 double logs here. */
+ if (flags[i] & TDB_VERSION1) {
+ num_oom_messages = 2;
+ } else {
+ num_oom_messages = 1;
+ }
/* Nonblocking open; expect no error message. */
lock_err = EAGAIN;
@@ -121,7 +109,7 @@ int main(int argc, char *argv[])
ok1(tap_log_messages == 0);
lock_err = ENOMEM;
ok1(tdb_store(tdb, key, data, TDB_REPLACE) == TDB_ERR_LOCK);
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
/* Nonblocking fetch. */
@@ -133,7 +121,7 @@ int main(int argc, char *argv[])
ok1(tap_log_messages == 0);
lock_err = ENOMEM;
ok1(!tdb_exists(tdb, key));
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
lock_err = EAGAIN;
@@ -144,7 +132,7 @@ int main(int argc, char *argv[])
ok1(tap_log_messages == 0);
lock_err = ENOMEM;
ok1(tdb_fetch(tdb, key, &d) == TDB_ERR_LOCK);
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
/* Nonblocking delete. */
@@ -156,7 +144,7 @@ int main(int argc, char *argv[])
ok1(tap_log_messages == 0);
lock_err = ENOMEM;
ok1(tdb_delete(tdb, key) == TDB_ERR_LOCK);
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
/* Nonblocking locks. */
@@ -168,7 +156,7 @@ int main(int argc, char *argv[])
ok1(tap_log_messages == 0);
lock_err = ENOMEM;
ok1(tdb_chainlock(tdb, key) == TDB_ERR_LOCK);
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
lock_err = EAGAIN;
@@ -179,7 +167,7 @@ int main(int argc, char *argv[])
ok1(tap_log_messages == 0);
lock_err = ENOMEM;
ok1(tdb_chainlock_read(tdb, key) == TDB_ERR_LOCK);
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
lock_err = EAGAIN;
@@ -218,7 +206,7 @@ int main(int argc, char *argv[])
trav_err = ENOMEM;
lock_err = 0;
ok1(tdb_traverse(tdb, trav, &lock_err) == TDB_ERR_LOCK);
- ok1(tap_log_messages == 1);
+ ok1(tap_log_messages == num_oom_messages);
tap_log_messages = 0;
/* Nonblocking transactions. */