diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2012-06-22 09:44:40 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2012-06-22 07:35:17 +0200 |
commit | 66d151d6893657b31c419d422bffeefc506e2319 (patch) | |
tree | 34d217715da0890571eda70fcfc67455ef1660d4 /lib/ntdb/test | |
parent | 406bd2d121c3eeef7c3bb6bc74c7a6ccbe296c38 (diff) | |
download | samba-66d151d6893657b31c419d422bffeefc506e2319.tar.gz samba-66d151d6893657b31c419d422bffeefc506e2319.tar.bz2 samba-66d151d6893657b31c419d422bffeefc506e2319.zip |
ntdb: don't munmap the database on every close.
Since we can have multiple openers, we should leave the mmap in place
for the other openers to use. Enhance the test to check the bug (it
still works, because without mmap we fall back to read/write, but
performance would be terrible!).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'lib/ntdb/test')
-rw-r--r-- | lib/ntdb/test/api-open-multiple-times.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/ntdb/test/api-open-multiple-times.c b/lib/ntdb/test/api-open-multiple-times.c index 217732d227..8663b8a24c 100644 --- a/lib/ntdb/test/api-open-multiple-times.c +++ b/lib/ntdb/test/api-open-multiple-times.c @@ -6,6 +6,7 @@ #include <fcntl.h> #include <stdlib.h> #include "logging.h" +#include "../private.h" int main(int argc, char *argv[]) { @@ -17,7 +18,7 @@ int main(int argc, char *argv[]) int flags[] = { NTDB_DEFAULT, NTDB_NOMMAP, NTDB_CONVERT, NTDB_NOMMAP|NTDB_CONVERT }; - plan_tests(sizeof(flags) / sizeof(flags[0]) * 28); + plan_tests(sizeof(flags) / sizeof(flags[0]) * 30); for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++) { ntdb = ntdb_open("run-open-multiple-times.ntdb", flags[i]|MAYBE_NOSYNC, @@ -31,6 +32,7 @@ int main(int argc, char *argv[]) O_RDWR|O_CREAT, 0600, &tap_log_attr); ok1(ntdb_check(ntdb, NULL, NULL) == 0); ok1(ntdb_check(ntdb2, NULL, NULL) == 0); + ok1((flags[i] & NTDB_NOMMAP) || ntdb2->file->map_ptr); /* Store in one, fetch in the other. */ ok1(ntdb_store(ntdb, key, data, NTDB_REPLACE) == 0); @@ -45,6 +47,7 @@ int main(int argc, char *argv[]) /* OK, now close first one, check second still good. */ ok1(ntdb_close(ntdb) == 0); + ok1((flags[i] & NTDB_NOMMAP) || ntdb2->file->map_ptr); ok1(ntdb_store(ntdb2, key, data, NTDB_REPLACE) == 0); ok1(ntdb_fetch(ntdb2, key, &d) == NTDB_SUCCESS); ok1(ntdb_deq(d, data)); |