1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00
Commit Graph

90 Commits

Author SHA1 Message Date
Volker Lendecke
1b1aac412c Add sorted subkey cache
On my box this gets net conf list for 1000 records down to .1 seconds

Signed-off-by: Michael Adam <obnox@samba.org>
2009-02-26 11:05:22 +01:00
Jeremy Allison
2ca48d3740 Fix printf type warning.
Jeremy.
2009-02-19 13:11:36 -08:00
Volker Lendecke
a13f065bad Fix a O(n^2) algorithm in regdb_fetch_keys() 2009-02-19 20:06:29 +01:00
Volker Lendecke
d0ee90ace9 Fix a buffer handling bug when adding lots of registry keys
This is *ancient*... From 2002, and nobody noticed until someone added lots of
shares using net conf... :-)
2009-02-19 14:26:50 +01:00
Jelmer Vernooij
ddcab787c4 Rename dos_errstr() to win_errstr() for consistency with Samba 4. 2008-11-01 17:19:26 +01:00
Andrew Tridgell
0f41961e4f first cut at adding full transactions for ctdb to samba3
(This used to be commit f91a3e0f7b)
2008-08-13 11:54:08 +02:00
Michael Adam
6e16022d62 registry: use _bystring wrappers to dbwrap_trans_(store|delete).
Michael
(This used to be commit 103ce6c9e9)
2008-08-05 23:40:26 +02:00
Michael Adam
a8ae5228f5 registry: bump debug level to 1 in regdb_init() if storing version string fails.
Higher level callers should take care of level 0 messages.

Michael
(This used to be commit b5829e04ea)
2008-07-15 14:25:00 +02:00
Michael Adam
0586d981a7 registry: bump debug level to 1 in regdb_init() if opening the registry fails.
Higher level callers take care of level 0 messages or more drastic measures.

Michael
(This used to be commit 111d802b5c)
2008-07-15 14:22:55 +02:00
Michael Adam
f587e0310c registry: fix logic in deleting subkeys record in regdb_fetch_keys().
Don't cancel on NT_STATUS_NOT_FOUND error from dbwrap_delete_bystring().
So deletion of an "incomlete" registry key, i.e. one with an entry in
the list of subkeys of its parent key but not a subkey list of its own,
works again.

Michael
(This used to be commit 75be2116ac)
2008-07-09 10:43:25 +02:00
Michael Adam
ad2e1757e7 registry: improve logic for deleting value records in regdb_store_keys().
Don't ignore all errors from dbwrap_delete_bystring() but
only NT_STATUS_NOT_FOUND.

Michael
(This used to be commit d7ec9b2d52)
2008-07-09 10:43:25 +02:00
Michael Adam
70d8e57c17 registry: fetch regdb_fetch_keys() when a key exists but not its subkey-record.
According to the new policy a key (that is not a base key) exists,
iff it exists in the subkey list of its parent key.

Usually this subkeylist is present, but in a transaction-less
dbwrap backend (ctdb), a failing write can leave an "incomplete"
key without its own subkeylist-record. (Otherwise such an
incomplete key can be generated with e.g. tdbtool.)
For such a key net registry enumerate (e.g.) would fail.
This commit fixes this behaviour of regdb_fetch_keys().

Michael
(This used to be commit f329aaf045)
2008-07-08 17:10:01 +02:00
Michael Adam
f7d39653f5 registry: add removal of secdesc of a key to regdb_store_keys().
Michael
(This used to be commit a01d8fe5e8)
2008-05-08 18:29:10 +02:00
Michael Adam
1f279f866f registry: add comments to removing lists in regdb_store_keys().
Michael
(This used to be commit 3e89217e7e)
2008-05-08 18:29:10 +02:00
Michael Adam
9f7653bfa1 registry: change order of deleting value and subkey lists in store_keys().
Next step in the plan to make store_keys safer without transactions.

Michael
(This used to be commit f7c8718dea)
2008-05-08 18:29:10 +02:00
Michael Adam
453141b395 registry: adapt comment to first step in regdb_store_keys().
Michael
(This used to be commit 97592db08a)
2008-05-08 18:29:10 +02:00
Michael Adam
8c2b976208 registry: adapt comment of last step in regdb_store_keys().
adding number (3) ....

Michael
(This used to be commit a03a17365d)
2008-05-08 18:29:10 +02:00
Michael Adam
315c7b7824 registry: regdb_store_keys: move storing the subkey list down after removing values.
Michael
(This used to be commit 986030cdda)
2008-05-08 18:29:10 +02:00
Michael Adam
01e640f6ea registry: add comment explaining workflow to make store_keys safe w/o transactions
/*
 * Make the store operation as safe as possible without transactions:
 *
 * (1) For each subkey removed from ctr compared with old_subkeys:
 *
 *     (a) First delete the value db entry.
 *
 *     (b) Next delete the secdesc db record.
 *
 *     (c) Then delete the subkey list entry.
 *
 * (2) Now write the list of subkeys of the parent key,
 *     deleting removed entries and adding new ones.
 *
 * (3) Finally create the subkey list entries for the added keys.
 *
 * This way if we crash half-way in between deleting the subkeys
 * and storing the parent's list of subkeys, no old data can pop up
 * out of the blue when re-adding keys later on.
 */

The workflow is going to be modified to meet this agendain the next commits.

Michael
(This used to be commit 55dd9bdd14)
2008-05-08 18:29:10 +02:00
Michael Adam
7fa4cd2421 registry: check for existence of non base key in regdb_store_keys() before proceeding.
Michael
(This used to be commit 52413c94fc)
2008-05-08 18:29:09 +02:00
Michael Adam
8e21d223f7 registry: add a function regdb_key_is_base_key() to check whether is composite.
This partly duplicates code from regdb_key_exists(). Maybe refactor later.

Michael
(This used to be commit c27d03bba8)
2008-05-08 18:29:09 +02:00
Michael Adam
4095b008ee registry: check for existence of key in regdb_set_secdesc() before proceeding.
Michael
(This used to be commit 347bab7f4a)
2008-05-08 18:29:09 +02:00
Michael Adam
7d35d4e2a4 registry: check for existence of key in regdb_get_secdesc() before proceeding.
Michael
(This used to be commit 727e5a87c0)
2008-05-08 18:29:09 +02:00
Michael Adam
ba94ab2ed8 registry: check for existence of key in regdb_store_values() before proceeding.
Michael
(This used to be commit 8a2c9d965d)
2008-05-08 18:29:09 +02:00
Michael Adam
4394c2dafb registry: check for existence of key in regdb_fetch_keys() before proceeding.
Michael
(This used to be commit cf653e101d)
2008-05-08 18:29:09 +02:00
Michael Adam
00ce73850d registry: check for existence of key in regdb_fetch_values() first.
This uses the new semantics for existence of a key.

Michael
(This used to be commit 56a58690d3)
2008-05-08 18:29:09 +02:00
Michael Adam
284bab74a7 registry: free talloc context on error path in regdb_fetch_values().
Michael
(This used to be commit 978aef3a86)
2008-05-08 18:29:09 +02:00
Michael Adam
a26880c372 registry: Implement new semantics for existence of registry key in tdb.
Existence of a key is defined as follows:
* If the key is a base key (without separator), the key exists
  iff the corresponding entry exist in the registry tdb.
* If the key is not a base key, the key exists, iff it exists
  in the list of subkeys of it's parent keyname's tdb entry.

Michael
(This used to be commit 477008367f)
2008-05-08 18:29:09 +02:00
Michael Adam
120aacfac5 registry: free temporary data in regdb_fetch_key_internal().
Michael
(This used to be commit 2b25f480ba)
2008-05-08 18:29:08 +02:00
Michael Adam
79a009b876 registry: change order of arguments of regdb_fetch_key_internal()
list talloc context first.

Michael
(This used to be commit 23d7002b22)
2008-05-08 18:29:08 +02:00
Michael Adam
f50002b491 registry: skip writes of existing keys in init_registry_data().
Michael
(This used to be commit 37dabf9317)
2008-04-30 12:42:33 +02:00
Michael Adam
9fe870affa registry: save writes in init_registry_data() if data does already exist.
This is done by first checking if all data (keys and values) exists
(using new regdb_key_exists()) and kompletely skipping all writes if it does.

Michael
(This used to be commit 7c5f1583cb)
2008-04-30 12:42:32 +02:00
Michael Adam
ed6a9edb1e registry: check for existence of key init_registry_key and possibly save a write.
Michael
(This used to be commit 3ab5a2f1b3)
2008-04-30 12:42:32 +02:00
Michael Adam
6ec4c8631a registry: add function regdb_key_exists() to check for existence of a key.
The existence of the registry key entry (and not the values entry!) is
taken as the criterion for existence.

Michael
(This used to be commit 207a0ece45)
2008-04-30 12:42:32 +02:00
Michael Adam
167d54cc67 registry: use regdb_fetch_key_internal() in regdb_fetch_values().
Michael
(This used to be commit 3316541ac9)
2008-04-30 12:42:32 +02:00
Michael Adam
6b4ed4b8f3 registry: use regdb_fetch_key_internal() in regdb_fetch_keys().
Michael
(This used to be commit 78f924ca05)
2008-04-30 12:42:32 +02:00
Michael Adam
5379dda0cd registry: add a function for fetching a tdb record for a given keystring
regdb_fetch_key_internal()

Michael
(This used to be commit 97bed9a236)
2008-04-30 12:42:32 +02:00
Michael Adam
411ae73283 registry: combine talloc_strdup() and normalize_reg_path() in regdb_fetch_keys().
the talloc_strdup() call is just and extra allocation here.

Michael
(This used to be commit 217233349b)
2008-04-30 12:42:32 +02:00
Michael Adam
dba75c0831 registry: use normalize_reg_path() in regdb_fetch_keys()
instead of handcrafting normalization.

Michael
(This used to be commit 1e4d2310d0)
2008-04-30 12:42:31 +02:00
Michael Adam
caba2d3a64 registry: use dbwrap_fetch_bystring() in regdb_fetch_values().
Michael
(This used to be commit 569f9844e9)
2008-04-30 12:42:31 +02:00
Michael Adam
9d933dedf9 registry: use dbwrap_fetch_bystring() in regdb_fetch_keys().
instead of using regdb->fetch and constructing tdb data
from the registry key string by hand.

Michael
(This used to be commit 87a58140f0)
2008-04-30 12:42:31 +02:00
Michael Adam
86d189dad1 registry: honour the WERROR that regsubkey_ctr_addkey gives in regdb_fetch_keys.
Michael
(This used to be commit 7dd7471da7)
2008-04-13 15:41:07 +02:00
Michael Adam
26a5652f6d registry: change init_registry_key() and init_registry_data() to return WERR
Michael
(This used to be commit e0718f04a7)
2008-04-13 15:33:47 +02:00
Michael Adam
6b85938f27 registry: change regdb_init() to return WERROR instead of bool.
Michael
(This used to be commit c312852abc)
2008-04-13 15:33:47 +02:00
Volker Lendecke
16198dc51e Convert dbwrap_trans_delete to NTSTATUS
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit dead193f46)
2008-04-01 14:04:22 +02:00
Volker Lendecke
fcdfff1cc8 Convert dbwrap_trans_store to NTSTATUS
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 5f4de856af)
2008-04-01 14:04:22 +02:00
Stefan Metzmacher
b8dcade819 regdb: let regdb_fetch_keys() handle NULL and failure cases in the same way and return -1
metze
(This used to be commit 983fd58805)
2008-04-01 14:04:20 +02:00
Stefan Metzmacher
b55942a763 regdb: get the seqnum before the record, to not miss something
metze
(This used to be commit c214107bd9)
2008-04-01 14:04:20 +02:00
Stefan Metzmacher
2b21b02c6a regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access"
This is the fixed version of commit 5c28c74aa0.

metze
(This used to be commit 924acd7f69)
2008-04-01 14:04:20 +02:00
Michael Adam
ce0bbc82fd Revert "regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access"
This reverts commit 4e2be189e9.

Metze, this broke the registry (reg_api layer), but I don't yet know
exactly how and why. By the way, the locks there had the purpose of
fetching the seqnum that really matches the data.

This needs some more thought / debugging. But I wanted to have
the tree in a working state again.

Michael
(This used to be commit 5c28c74aa0)
2008-03-30 03:05:34 +02:00