summaryrefslogtreecommitdiff
path: root/lib/ntdb/private.h
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2012-06-19 12:42:13 +0930
committerRusty Russell <rusty@rustcorp.com.au>2012-06-19 05:38:07 +0200
commitf986554b1e38d8dd40b4bf4748d4aeb470e27d2e (patch)
tree717cd724500741d6fb98c3fced30427ff6f7173a /lib/ntdb/private.h
parent9133a98c4425085dd86695bed1a48ec750a52430 (diff)
downloadsamba-f986554b1e38d8dd40b4bf4748d4aeb470e27d2e.tar.gz
samba-f986554b1e38d8dd40b4bf4748d4aeb470e27d2e.tar.bz2
samba-f986554b1e38d8dd40b4bf4748d4aeb470e27d2e.zip
ntdb: special accessor functions for read/write of an offset.
We also split off the NTDB_CONVERT case (where the ntdb is of a different endian) into its own io function. NTDB speed: Adding 10000 records: 3894-9951(8553) ns (815528 bytes) Finding 10000 records: 1644-4294(3580) ns (815528 bytes) Missing 10000 records: 1497-4018(3303) ns (815528 bytes) Traversing 10000 records: 1585-4225(3505) ns (815528 bytes) Deleting 10000 records: 3088-8154(6927) ns (815528 bytes) Re-adding 10000 records: 3192-8308(7089) ns (815528 bytes) Appending 10000 records: 5187-13307(11365) ns (1274312 bytes) Churning 10000 records: 6772-17567(15078) ns (1274312 bytes) NTDB speed in transaction: Adding 10000 records: 1602-2404(2214) ns (815528 bytes) Finding 10000 records: 456-871(778) ns (815528 bytes) Missing 10000 records: 393-522(503) ns (815528 bytes) Traversing 10000 records: 729-1015(945) ns (815528 bytes) Deleting 10000 records: 1065-1476(1374) ns (815528 bytes) Re-adding 10000 records: 1397-1930(1819) ns (815528 bytes) Appending 10000 records: 2927-3351(3184) ns (1274312 bytes) Churning 10000 records: 3921-4697(4378) ns (1274312 bytes) smbtorture results: ntdb speed 86581-191518(175666) ops/sec Applying patch..increase-top-level.patch
Diffstat (limited to 'lib/ntdb/private.h')
-rw-r--r--lib/ntdb/private.h25
1 files changed, 18 insertions, 7 deletions
diff --git a/lib/ntdb/private.h b/lib/ntdb/private.h
index f46b5ef906..488e99a0f9 100644
--- a/lib/ntdb/private.h
+++ b/lib/ntdb/private.h
@@ -367,6 +367,9 @@ struct ntdb_methods {
enum NTDB_ERROR (*oob)(struct ntdb_context *, ntdb_off_t, ntdb_len_t, bool);
enum NTDB_ERROR (*expand_file)(struct ntdb_context *, ntdb_len_t);
void *(*direct)(struct ntdb_context *, ntdb_off_t, size_t, bool);
+ ntdb_off_t (*read_off)(struct ntdb_context *ntdb, ntdb_off_t off);
+ enum NTDB_ERROR (*write_off)(struct ntdb_context *ntdb, ntdb_off_t off,
+ ntdb_off_t val);
};
/*
@@ -467,13 +470,6 @@ void ntdb_access_release(struct ntdb_context *ntdb, const void *p);
/* Commit result of ntdb_acces_write. */
enum NTDB_ERROR ntdb_access_commit(struct ntdb_context *ntdb, void *p);
-/* Convenience routine to get an offset. */
-ntdb_off_t ntdb_read_off(struct ntdb_context *ntdb, ntdb_off_t off);
-
-/* Write an offset at an offset. */
-enum NTDB_ERROR ntdb_write_off(struct ntdb_context *ntdb, ntdb_off_t off,
- ntdb_off_t val);
-
/* Clear an ondisk area. */
enum NTDB_ERROR zero_out(struct ntdb_context *ntdb, ntdb_off_t off, ntdb_len_t len);
@@ -642,6 +638,21 @@ static inline enum NTDB_ERROR ntdb_oob(struct ntdb_context *ntdb,
return ntdb->io->oob(ntdb, off, len, probe);
}
+/* Convenience routine to get an offset. */
+static inline ntdb_off_t ntdb_read_off(struct ntdb_context *ntdb,
+ ntdb_off_t off)
+{
+ return ntdb->io->read_off(ntdb, off);
+}
+
+/* Write an offset at an offset. */
+static inline enum NTDB_ERROR ntdb_write_off(struct ntdb_context *ntdb,
+ ntdb_off_t off,
+ ntdb_off_t val)
+{
+ return ntdb->io->write_off(ntdb, off, val);
+}
+
#ifdef NTDB_TRACE
void ntdb_trace(struct ntdb_context *ntdb, const char *op);
void ntdb_trace_seqnum(struct ntdb_context *ntdb, uint32_t seqnum, const char *op);