The Samba-Bugzilla – Attachment 15402 Details for
Bug 14096
backport tdb-1.4.2 to v4-11-test
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patches for v4-11-test
tmp411.diff.txt (text/plain), 19.64 KB, created by
Stefan Metzmacher
on 2019-08-20 15:33:21 UTC
(
hide
)
Description:
Patches for v4-11-test
Filename:
MIME Type:
Creator:
Stefan Metzmacher
Created:
2019-08-20 15:33:21 UTC
Size:
19.64 KB
patch
obsolete
>From 16dd4be348f575574d5f186ad7c8ab1fd0b925aa Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Sun, 4 Aug 2019 12:10:03 +0200 >Subject: [PATCH 1/5] tdb: Rename tdb_oob() to tdb_notrans_oob() > >tdb_oob() will become a public function encapsulating the pointer >dereferences. > >Signed-off-by: Volker Lendecke <vl@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 885ba572efaac6c20388b8e119315c837e8f5236) >--- > lib/tdb/common/io.c | 6 +++--- > lib/tdb/test/run-3G-file.c | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > >diff --git a/lib/tdb/common/io.c b/lib/tdb/common/io.c >index df4601761597..06492b1407d7 100644 >--- a/lib/tdb/common/io.c >+++ b/lib/tdb/common/io.c >@@ -136,8 +136,8 @@ static int tdb_fstat(struct tdb_context *tdb, struct stat *buf) > see if the database has been expanded by someone else and expand > if necessary > */ >-static int tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, >- int probe) >+static int tdb_notrans_oob( >+ struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe) > { > struct stat st; > if (len + off < len) { >@@ -782,7 +782,7 @@ static const struct tdb_methods io_methods = { > tdb_read, > tdb_write, > tdb_next_hash_chain, >- tdb_oob, >+ tdb_notrans_oob, > tdb_expand_file, > }; > >diff --git a/lib/tdb/test/run-3G-file.c b/lib/tdb/test/run-3G-file.c >index 748c972284a7..79e291b294e8 100644 >--- a/lib/tdb/test/run-3G-file.c >+++ b/lib/tdb/test/run-3G-file.c >@@ -48,7 +48,7 @@ static const struct tdb_methods large_io_methods = { > tdb_read, > tdb_write, > tdb_next_hash_chain, >- tdb_oob, >+ tdb_notrans_oob, > tdb_expand_file_sparse > }; > >-- >2.17.1 > > >From 27d85b66edec644ce9f00f0b6dee0ce39a1ae1b5 Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Sun, 4 Aug 2019 12:15:14 +0200 >Subject: [PATCH 2/5] tdb: Introduce tdb_oob() > >Initially just encapsulate the pointer dereferences > >Signed-off-by: Volker Lendecke <vl@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 5a388453e0cb038fa3ed5fb46f972470f7793566) >--- > lib/tdb/common/check.c | 6 +++--- > lib/tdb/common/freelist.c | 2 +- > lib/tdb/common/io.c | 22 ++++++++++++++-------- > lib/tdb/common/open.c | 6 +++--- > lib/tdb/common/rescue.c | 4 ++-- > lib/tdb/common/tdb_private.h | 1 + > lib/tdb/common/transaction.c | 2 +- > lib/tdb/common/traverse.c | 3 +-- > 8 files changed, 26 insertions(+), 20 deletions(-) > >diff --git a/lib/tdb/common/check.c b/lib/tdb/common/check.c >index 3a5c8b8ba949..d7741f6b2f9d 100644 >--- a/lib/tdb/common/check.c >+++ b/lib/tdb/common/check.c >@@ -94,7 +94,7 @@ static bool tdb_check_record(struct tdb_context *tdb, > off, rec->next)); > goto corrupt; > } >- if (tdb->methods->tdb_oob(tdb, rec->next, sizeof(*rec), 0)) >+ if (tdb_oob(tdb, rec->next, sizeof(*rec), 0)) > goto corrupt; > > /* Check rec_len: similar to rec->next, implies next record. */ >@@ -112,7 +112,7 @@ static bool tdb_check_record(struct tdb_context *tdb, > goto corrupt; > } > /* OOB allows "right at the end" access, so this works for last rec. */ >- if (tdb->methods->tdb_oob(tdb, off, sizeof(*rec)+rec->rec_len, 0)) >+ if (tdb_oob(tdb, off, sizeof(*rec)+rec->rec_len, 0)) > goto corrupt; > > /* Check tailer. */ >@@ -362,7 +362,7 @@ _PUBLIC_ int tdb_check(struct tdb_context *tdb, > } > > /* Make sure we know true size of the underlying file. */ >- tdb->methods->tdb_oob(tdb, tdb->map_size, 1, 1); >+ tdb_oob(tdb, tdb->map_size, 1, 1); > > /* Header must be OK: also gets us the recovery ptr, if any. */ > if (!tdb_check_header(tdb, &recovery_start)) >diff --git a/lib/tdb/common/freelist.c b/lib/tdb/common/freelist.c >index 37a4c168533b..046c747cf9b3 100644 >--- a/lib/tdb/common/freelist.c >+++ b/lib/tdb/common/freelist.c >@@ -50,7 +50,7 @@ int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct tdb_record > rec->magic, off)); > return -1; > } >- if (tdb->methods->tdb_oob(tdb, rec->next, sizeof(*rec), 0) != 0) >+ if (tdb_oob(tdb, rec->next, sizeof(*rec), 0) != 0) > return -1; > return 0; > } >diff --git a/lib/tdb/common/io.c b/lib/tdb/common/io.c >index 06492b1407d7..f3ea7bf9856c 100644 >--- a/lib/tdb/common/io.c >+++ b/lib/tdb/common/io.c >@@ -216,7 +216,7 @@ static int tdb_write(struct tdb_context *tdb, tdb_off_t off, > return -1; > } > >- if (tdb->methods->tdb_oob(tdb, off, len, 0) != 0) >+ if (tdb_oob(tdb, off, len, 0) != 0) > return -1; > > if (tdb->map_ptr) { >@@ -271,7 +271,7 @@ void *tdb_convert(void *buf, uint32_t size) > static int tdb_read(struct tdb_context *tdb, tdb_off_t off, void *buf, > tdb_len_t len, int cv) > { >- if (tdb->methods->tdb_oob(tdb, off, len, 0) != 0) { >+ if (tdb_oob(tdb, off, len, 0) != 0) { > return -1; > } > >@@ -596,7 +596,7 @@ int tdb_expand(struct tdb_context *tdb, tdb_off_t size) > } > > /* must know about any previous expansions by another process */ >- tdb->methods->tdb_oob(tdb, tdb->map_size, 1, 1); >+ tdb_oob(tdb, tdb->map_size, 1, 1); > > /* > * Note: that we don't care about tdb->hdr_ofs != 0 here >@@ -662,6 +662,12 @@ int tdb_expand(struct tdb_context *tdb, tdb_off_t size) > return -1; > } > >+int tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe) >+{ >+ int ret = tdb->methods->tdb_oob(tdb, off, len, probe); >+ return ret; >+} >+ > /* read/write a tdb_off_t */ > int tdb_ofs_read(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d) > { >@@ -714,7 +720,7 @@ int tdb_parse_data(struct tdb_context *tdb, TDB_DATA key, > * Optimize by avoiding the malloc/memcpy/free, point the > * parser directly at the mmap area. > */ >- if (tdb->methods->tdb_oob(tdb, offset, len, 0) != 0) { >+ if (tdb_oob(tdb, offset, len, 0) != 0) { > return -1; > } > data.dptr = offset + (unsigned char *)tdb->map_ptr; >@@ -756,20 +762,20 @@ int tdb_rec_read(struct tdb_context *tdb, tdb_off_t offset, struct tdb_record *r > return -1; > } > >- ret = tdb->methods->tdb_oob(tdb, offset, rec->key_len, 1); >+ ret = tdb_oob(tdb, offset, rec->key_len, 1); > if (ret == -1) { > return -1; > } >- ret = tdb->methods->tdb_oob(tdb, offset, rec->data_len, 1); >+ ret = tdb_oob(tdb, offset, rec->data_len, 1); > if (ret == -1) { > return -1; > } >- ret = tdb->methods->tdb_oob(tdb, offset, rec->rec_len, 1); >+ ret = tdb_oob(tdb, offset, rec->rec_len, 1); > if (ret == -1) { > return -1; > } > >- return tdb->methods->tdb_oob(tdb, rec->next, sizeof(*rec), 0); >+ return tdb_oob(tdb, rec->next, sizeof(*rec), 0); > } > > int tdb_rec_write(struct tdb_context *tdb, tdb_off_t offset, struct tdb_record *rec) >diff --git a/lib/tdb/common/open.c b/lib/tdb/common/open.c >index dd5783ef8bc9..f7f65b0e2379 100644 >--- a/lib/tdb/common/open.c >+++ b/lib/tdb/common/open.c >@@ -655,7 +655,7 @@ _PUBLIC_ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int td > * As this skips tdb->hdr_ofs. > */ > tdb->map_size = 0; >- ret = tdb->methods->tdb_oob(tdb, 0, 1, 0); >+ ret = tdb_oob(tdb, 0, 1, 0); > if (ret == -1) { > errno = EIO; > goto fail; >@@ -677,7 +677,7 @@ _PUBLIC_ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int td > goto fail; > } > >- ret = tdb->methods->tdb_oob(tdb, FREELIST_TOP, 4*tdb->hash_size, 1); >+ ret = tdb_oob(tdb, FREELIST_TOP, 4*tdb->hash_size, 1); > if (ret == -1) { > TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_open_ex: " > "hash size %"PRIu32" does not fit\n", tdb->hash_size)); >@@ -895,7 +895,7 @@ static int tdb_reopen_internal(struct tdb_context *tdb, bool active_lock) > * As this skips tdb->hdr_ofs. > */ > tdb->map_size = 0; >- if (tdb->methods->tdb_oob(tdb, 0, 1, 0) != 0) { >+ if (tdb_oob(tdb, 0, 1, 0) != 0) { > goto fail; > } > #endif /* fake pread or pwrite */ >diff --git a/lib/tdb/common/rescue.c b/lib/tdb/common/rescue.c >index e608db41deab..7a85ebc9311c 100644 >--- a/lib/tdb/common/rescue.c >+++ b/lib/tdb/common/rescue.c >@@ -60,7 +60,7 @@ static bool looks_like_valid_record(struct tdb_context *tdb, > if (rec->next > 0 && rec->next < TDB_DATA_START(tdb->hash_size)) > return false; > >- if (tdb->methods->tdb_oob(tdb, rec->next, sizeof(*rec), 1)) >+ if (tdb_oob(tdb, rec->next, sizeof(*rec), 1)) > return false; > > key->dsize = rec->key_len; >@@ -228,7 +228,7 @@ _PUBLIC_ int tdb_rescue(struct tdb_context *tdb, > } > > /* Make sure we know true size of the underlying file. */ >- tdb->methods->tdb_oob(tdb, tdb->map_size, 1, 1); >+ tdb_oob(tdb, tdb->map_size, 1, 1); > > /* Suppress logging, since we anticipate errors. */ > tdb->log.log_fn = logging_suppressed; >diff --git a/lib/tdb/common/tdb_private.h b/lib/tdb/common/tdb_private.h >index 42aaac62f59c..2bed8200f94a 100644 >--- a/lib/tdb/common/tdb_private.h >+++ b/lib/tdb/common/tdb_private.h >@@ -304,6 +304,7 @@ void *tdb_convert(void *buf, uint32_t size); > int tdb_free(struct tdb_context *tdb, tdb_off_t offset, struct tdb_record *rec); > tdb_off_t tdb_allocate(struct tdb_context *tdb, int hash, tdb_len_t length, > struct tdb_record *rec); >+int tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe); > int tdb_ofs_read(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d); > int tdb_ofs_write(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d); > int tdb_lock_record(struct tdb_context *tdb, tdb_off_t off); >diff --git a/lib/tdb/common/transaction.c b/lib/tdb/common/transaction.c >index e9b0b26ea59b..b22624820d7e 100644 >--- a/lib/tdb/common/transaction.c >+++ b/lib/tdb/common/transaction.c >@@ -524,7 +524,7 @@ static int _tdb_transaction_start(struct tdb_context *tdb, > > /* make sure we know about any file expansions already done by > anyone else */ >- tdb->methods->tdb_oob(tdb, tdb->map_size, 1, 1); >+ tdb_oob(tdb, tdb->map_size, 1, 1); > tdb->transaction->old_map_size = tdb->map_size; > > /* finally hook the io methods, replacing them with >diff --git a/lib/tdb/common/traverse.c b/lib/tdb/common/traverse.c >index 54a69dc8d03f..d69e7dff2854 100644 >--- a/lib/tdb/common/traverse.c >+++ b/lib/tdb/common/traverse.c >@@ -453,8 +453,7 @@ _PUBLIC_ int tdb_traverse_chain(struct tdb_context *tdb, > > if ((tdb->transaction == NULL) && > (tdb->map_ptr != NULL)) { >- ret = tdb->methods->tdb_oob( >- tdb, key_ofs, full_len, 0); >+ ret = tdb_oob(tdb, key_ofs, full_len, 0); > if (ret == -1) { > goto fail; > } >-- >2.17.1 > > >From 3bccfe4ff18912f2af68056d706654937338369e Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Sun, 4 Aug 2019 12:18:19 +0200 >Subject: [PATCH 3/5] tdb: Speed up tdb_oob() > >This is common between both implementations of tdb_oob(). It's >faster if we don't have to dereference function pointers. > >Signed-off-by: Volker Lendecke <vl@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 897bffa8166f643eb9063a848bb0c02455663317) >--- > lib/tdb/common/io.c | 13 ++++++++++++- > lib/tdb/common/transaction.c | 5 +++++ > 2 files changed, 17 insertions(+), 1 deletion(-) > >diff --git a/lib/tdb/common/io.c b/lib/tdb/common/io.c >index f3ea7bf9856c..28e808143a2d 100644 >--- a/lib/tdb/common/io.c >+++ b/lib/tdb/common/io.c >@@ -150,6 +150,11 @@ static int tdb_notrans_oob( > return -1; > } > >+ /* >+ * This duplicates functionality from tdb_oob(). Don't remove: >+ * we still have direct callers of tdb->methods->tdb_oob() >+ * inside transaction.c. >+ */ > if (off + len <= tdb->map_size) > return 0; > if (tdb->flags & TDB_INTERNAL) { >@@ -664,7 +669,13 @@ int tdb_expand(struct tdb_context *tdb, tdb_off_t size) > > int tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe) > { >- int ret = tdb->methods->tdb_oob(tdb, off, len, probe); >+ int ret; >+ >+ if (likely((off + len >= off) && (off + len <= tdb->map_size))) { >+ return 0; >+ } >+ >+ ret = tdb->methods->tdb_oob(tdb, off, len, probe); > return ret; > } > >diff --git a/lib/tdb/common/transaction.c b/lib/tdb/common/transaction.c >index b22624820d7e..4f8d1f8cdccc 100644 >--- a/lib/tdb/common/transaction.c >+++ b/lib/tdb/common/transaction.c >@@ -378,6 +378,11 @@ static void transaction_next_hash_chain(struct tdb_context *tdb, uint32_t *chain > static int transaction_oob(struct tdb_context *tdb, tdb_off_t off, > tdb_len_t len, int probe) > { >+ /* >+ * This duplicates functionality from tdb_oob(). Don't remove: >+ * we still have direct callers of tdb->methods->tdb_oob() >+ * inside transaction.c. >+ */ > if (off + len >= off && off + len <= tdb->map_size) { > return 0; > } >-- >2.17.1 > > >From 8bedf3402292a39f034c5b4dc13dddf7f280223f Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Sun, 4 Aug 2019 18:26:05 +0200 >Subject: [PATCH 4/5] tdb: Inline the common part of tdb_oob > >When you set > >in tdbtorture.c to make it more similar to locking.tdb use, > >bin/tdbtorture -m -n 1 -l 100000 -s > >becomes twice as fast. This is a pretty extreme case, but all other >tests that I did improve significantly as well. > >Signed-off-by: Volker Lendecke <vl@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit f5735e2c666a5a494131c1d25f7ba5c7fbeae923) >--- > lib/tdb/common/io.c | 10 ++-------- > lib/tdb/common/tdb_private.h | 14 +++++++++++++- > 2 files changed, 15 insertions(+), 9 deletions(-) > >diff --git a/lib/tdb/common/io.c b/lib/tdb/common/io.c >index 28e808143a2d..0de0dabd8276 100644 >--- a/lib/tdb/common/io.c >+++ b/lib/tdb/common/io.c >@@ -667,15 +667,9 @@ int tdb_expand(struct tdb_context *tdb, tdb_off_t size) > return -1; > } > >-int tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe) >+int _tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe) > { >- int ret; >- >- if (likely((off + len >= off) && (off + len <= tdb->map_size))) { >- return 0; >- } >- >- ret = tdb->methods->tdb_oob(tdb, off, len, probe); >+ int ret = tdb->methods->tdb_oob(tdb, off, len, probe); > return ret; > } > >diff --git a/lib/tdb/common/tdb_private.h b/lib/tdb/common/tdb_private.h >index 2bed8200f94a..297904342117 100644 >--- a/lib/tdb/common/tdb_private.h >+++ b/lib/tdb/common/tdb_private.h >@@ -304,7 +304,19 @@ void *tdb_convert(void *buf, uint32_t size); > int tdb_free(struct tdb_context *tdb, tdb_off_t offset, struct tdb_record *rec); > tdb_off_t tdb_allocate(struct tdb_context *tdb, int hash, tdb_len_t length, > struct tdb_record *rec); >-int tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe); >+ >+int _tdb_oob(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe); >+ >+static inline int tdb_oob( >+ struct tdb_context *tdb, tdb_off_t off, tdb_len_t len, int probe) >+{ >+ if (likely((off + len >= off) && (off + len <= tdb->map_size))) { >+ return 0; >+ } >+ return _tdb_oob(tdb, off, len, probe); >+} >+ >+ > int tdb_ofs_read(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d); > int tdb_ofs_write(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d); > int tdb_lock_record(struct tdb_context *tdb, tdb_off_t off); >-- >2.17.1 > > >From 4fa21724f8d183b6ad40b789b049bb9f2ad445da Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Tue, 20 Aug 2019 14:55:27 +0200 >Subject: [PATCH 5/5] tdb: Release tdb 1.4.2 > >* Build fixes >* Improve the performance by inlining the tdb_oob() checks > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Ralph Boehme <slow@samba.org> > >Autobuild-User(master): Stefan Metzmacher <metze@samba.org> >Autobuild-Date(master): Tue Aug 20 14:45:41 UTC 2019 on sn-devel-184 > >(cherry picked from commit 60cba7b3a17104da1543d59609f50c6638880dd1) >--- > lib/tdb/ABI/tdb-1.4.2.sigs | 73 ++++++++++++++++++++++++++++++++++++++ > lib/tdb/wscript | 2 +- > 2 files changed, 74 insertions(+), 1 deletion(-) > create mode 100644 lib/tdb/ABI/tdb-1.4.2.sigs > >diff --git a/lib/tdb/ABI/tdb-1.4.2.sigs b/lib/tdb/ABI/tdb-1.4.2.sigs >new file mode 100644 >index 000000000000..e2b0427c3475 >--- /dev/null >+++ b/lib/tdb/ABI/tdb-1.4.2.sigs >@@ -0,0 +1,73 @@ >+tdb_add_flags: void (struct tdb_context *, unsigned int) >+tdb_append: int (struct tdb_context *, TDB_DATA, TDB_DATA) >+tdb_chainlock: int (struct tdb_context *, TDB_DATA) >+tdb_chainlock_mark: int (struct tdb_context *, TDB_DATA) >+tdb_chainlock_nonblock: int (struct tdb_context *, TDB_DATA) >+tdb_chainlock_read: int (struct tdb_context *, TDB_DATA) >+tdb_chainlock_read_nonblock: int (struct tdb_context *, TDB_DATA) >+tdb_chainlock_unmark: int (struct tdb_context *, TDB_DATA) >+tdb_chainunlock: int (struct tdb_context *, TDB_DATA) >+tdb_chainunlock_read: int (struct tdb_context *, TDB_DATA) >+tdb_check: int (struct tdb_context *, int (*)(TDB_DATA, TDB_DATA, void *), void *) >+tdb_close: int (struct tdb_context *) >+tdb_delete: int (struct tdb_context *, TDB_DATA) >+tdb_dump_all: void (struct tdb_context *) >+tdb_enable_seqnum: void (struct tdb_context *) >+tdb_error: enum TDB_ERROR (struct tdb_context *) >+tdb_errorstr: const char *(struct tdb_context *) >+tdb_exists: int (struct tdb_context *, TDB_DATA) >+tdb_fd: int (struct tdb_context *) >+tdb_fetch: TDB_DATA (struct tdb_context *, TDB_DATA) >+tdb_firstkey: TDB_DATA (struct tdb_context *) >+tdb_freelist_size: int (struct tdb_context *) >+tdb_get_flags: int (struct tdb_context *) >+tdb_get_logging_private: void *(struct tdb_context *) >+tdb_get_seqnum: int (struct tdb_context *) >+tdb_hash_size: int (struct tdb_context *) >+tdb_increment_seqnum_nonblock: void (struct tdb_context *) >+tdb_jenkins_hash: unsigned int (TDB_DATA *) >+tdb_lock_nonblock: int (struct tdb_context *, int, int) >+tdb_lockall: int (struct tdb_context *) >+tdb_lockall_mark: int (struct tdb_context *) >+tdb_lockall_nonblock: int (struct tdb_context *) >+tdb_lockall_read: int (struct tdb_context *) >+tdb_lockall_read_nonblock: int (struct tdb_context *) >+tdb_lockall_unmark: int (struct tdb_context *) >+tdb_log_fn: tdb_log_func (struct tdb_context *) >+tdb_map_size: size_t (struct tdb_context *) >+tdb_name: const char *(struct tdb_context *) >+tdb_nextkey: TDB_DATA (struct tdb_context *, TDB_DATA) >+tdb_null: dptr = 0xXXXX, dsize = 0 >+tdb_open: struct tdb_context *(const char *, int, int, int, mode_t) >+tdb_open_ex: struct tdb_context *(const char *, int, int, int, mode_t, const struct tdb_logging_context *, tdb_hash_func) >+tdb_parse_record: int (struct tdb_context *, TDB_DATA, int (*)(TDB_DATA, TDB_DATA, void *), void *) >+tdb_printfreelist: int (struct tdb_context *) >+tdb_remove_flags: void (struct tdb_context *, unsigned int) >+tdb_reopen: int (struct tdb_context *) >+tdb_reopen_all: int (int) >+tdb_repack: int (struct tdb_context *) >+tdb_rescue: int (struct tdb_context *, void (*)(TDB_DATA, TDB_DATA, void *), void *) >+tdb_runtime_check_for_robust_mutexes: bool (void) >+tdb_set_logging_function: void (struct tdb_context *, const struct tdb_logging_context *) >+tdb_set_max_dead: void (struct tdb_context *, int) >+tdb_setalarm_sigptr: void (struct tdb_context *, volatile sig_atomic_t *) >+tdb_store: int (struct tdb_context *, TDB_DATA, TDB_DATA, int) >+tdb_storev: int (struct tdb_context *, TDB_DATA, const TDB_DATA *, int, int) >+tdb_summary: char *(struct tdb_context *) >+tdb_transaction_active: bool (struct tdb_context *) >+tdb_transaction_cancel: int (struct tdb_context *) >+tdb_transaction_commit: int (struct tdb_context *) >+tdb_transaction_prepare_commit: int (struct tdb_context *) >+tdb_transaction_start: int (struct tdb_context *) >+tdb_transaction_start_nonblock: int (struct tdb_context *) >+tdb_transaction_write_lock_mark: int (struct tdb_context *) >+tdb_transaction_write_lock_unmark: int (struct tdb_context *) >+tdb_traverse: int (struct tdb_context *, tdb_traverse_func, void *) >+tdb_traverse_chain: int (struct tdb_context *, unsigned int, tdb_traverse_func, void *) >+tdb_traverse_key_chain: int (struct tdb_context *, TDB_DATA, tdb_traverse_func, void *) >+tdb_traverse_read: int (struct tdb_context *, tdb_traverse_func, void *) >+tdb_unlock: int (struct tdb_context *, int, int) >+tdb_unlockall: int (struct tdb_context *) >+tdb_unlockall_read: int (struct tdb_context *) >+tdb_validate_freelist: int (struct tdb_context *, int *) >+tdb_wipe_all: int (struct tdb_context *) >diff --git a/lib/tdb/wscript b/lib/tdb/wscript >index ece44f82e337..1ab0e8d334aa 100644 >--- a/lib/tdb/wscript >+++ b/lib/tdb/wscript >@@ -1,7 +1,7 @@ > #!/usr/bin/env python > > APPNAME = 'tdb' >-VERSION = '1.4.1' >+VERSION = '1.4.2' > > import sys, os > >-- >2.17.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
slow
:
review+
slow
:
review+
Actions:
View
Attachments on
bug 14096
: 15402