summaryrefslogtreecommitdiff
path: root/source3/registry/reg_backend_db.c
AgeCommit message (Collapse)AuthorFilesLines
2008-07-09registry: improve logic for deleting value records in regdb_store_keys().Michael Adam1-2/+9
Don't ignore all errors from dbwrap_delete_bystring() but only NT_STATUS_NOT_FOUND. Michael (This used to be commit d7ec9b2d52d1eddd98eba222f723fb6cdff4541f)
2008-07-08registry: fetch regdb_fetch_keys() when a key exists but not its subkey-record.Michael Adam1-9/+10
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 f329aaf0452cc9bbad9fb6f67dac00bf8d1ef128)
2008-05-08registry: add removal of secdesc of a key to regdb_store_keys().Michael Adam1-0/+17
Michael (This used to be commit a01d8fe5e89ca9620d23198b11e5ae605a97e5a6)
2008-05-08registry: add comments to removing lists in regdb_store_keys().Michael Adam1-0/+4
Michael (This used to be commit 3e89217e7edea5d7ec707de065d38b1921ed09af)
2008-05-08registry: change order of deleting value and subkey lists in store_keys().Michael Adam1-16/+13
Next step in the plan to make store_keys safer without transactions. Michael (This used to be commit f7c8718dead63964481954a86427b8c05d15452c)
2008-05-08registry: adapt comment to first step in regdb_store_keys().Michael Adam1-1/+1
Michael (This used to be commit 97592db08a109ffbea8c85b17686fa565c5cf8c9)
2008-05-08registry: adapt comment of last step in regdb_store_keys().Michael Adam1-1/+1
adding number (3) .... Michael (This used to be commit a03a17365d64f7fe83a9f2e866c4f069a1dd1682)
2008-05-08registry: regdb_store_keys: move storing the subkey list down after removing ↵Michael Adam1-8/+8
values. Michael (This used to be commit 986030cdda828f7f87c5464d1837324b7033e27e)
2008-05-08registry: add comment explaining workflow to make store_keys safe w/o ↵Michael Adam1-0/+21
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 55dd9bdd148fc942e15aacfe9f6b38b1a5c53158)
2008-05-08registry: check for existence of non base key in regdb_store_keys() before ↵Michael Adam1-0/+4
proceeding. Michael (This used to be commit 52413c94fcc56c4055de4d35bea8a00646352122)
2008-05-08registry: add a function regdb_key_is_base_key() to check whether is composite.Michael Adam1-0/+33
This partly duplicates code from regdb_key_exists(). Maybe refactor later. Michael (This used to be commit c27d03bba842ecf99f23b22dc40fa7df33392fa0)
2008-05-08registry: check for existence of key in regdb_set_secdesc() before proceeding.Michael Adam1-0/+5
Michael (This used to be commit 347bab7f4aca7f26a88affea954a514c25735abf)
2008-05-08registry: check for existence of key in regdb_get_secdesc() before proceeding.Michael Adam1-0/+5
Michael (This used to be commit 727e5a87c0ed3e0a2b9c2b508b1f81e6a6d26732)
2008-05-08registry: check for existence of key in regdb_store_values() before proceeding.Michael Adam1-0/+4
Michael (This used to be commit 8a2c9d965d332ccd290089b92e9cfbba2413067c)
2008-05-08registry: check for existence of key in regdb_fetch_keys() before proceeding.Michael Adam1-0/+4
Michael (This used to be commit cf653e101d1b2c38b5e9de35732421a120213170)
2008-05-08registry: check for existence of key in regdb_fetch_values() first.Michael Adam1-0/+4
This uses the new semantics for existence of a key. Michael (This used to be commit 56a58690d3ab2e01ed28388bd59424d3abc7a0d3)
2008-05-08registry: free talloc context on error path in regdb_fetch_values().Michael Adam1-1/+1
Michael (This used to be commit 978aef3a862065be856b36b38d72d581c3ac0ba1)
2008-05-08registry: Implement new semantics for existence of registry key in tdb.Michael Adam1-3/+52
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 477008367f0ac90624b4b751955cd3235b2c9cc6)
2008-05-08registry: free temporary data in regdb_fetch_key_internal().Michael Adam1-1/+5
Michael (This used to be commit 2b25f480ba13ae125d081bab55ee3cbd3c4f425a)
2008-05-08registry: change order of arguments of regdb_fetch_key_internal()Michael Adam1-4/+4
list talloc context first. Michael (This used to be commit 23d7002b22ddcd2c52650463f31b72449aecaaaa)
2008-04-30registry: skip writes of existing keys in init_registry_data().Michael Adam1-0/+3
Michael (This used to be commit 37dabf931727f00569725af0e34677d36bb7df99)
2008-04-30registry: save writes in init_registry_data() if data does already exist.Michael Adam1-12/+43
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 7c5f1583cb43d473544f161aa9c864e1d78944e5)
2008-04-30registry: check for existence of key init_registry_key and possibly save a ↵Michael Adam1-0/+4
write. Michael (This used to be commit 3ab5a2f1b3cf37c380ff3e45a957e62a8017814a)
2008-04-30registry: add function regdb_key_exists() to check for existence of a key.Michael Adam1-0/+17
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 207a0ece45d947608df3f764e6bd9b4525d41011)
2008-04-30registry: use regdb_fetch_key_internal() in regdb_fetch_values().Michael Adam1-5/+1
Michael (This used to be commit 3316541ac9f1441294405fdd98f0ffafdec8bc2f)
2008-04-30registry: use regdb_fetch_key_internal() in regdb_fetch_keys().Michael Adam1-7/+1
Michael (This used to be commit 78f924ca05ecef9f586254c00908c1f12272c30c)
2008-04-30registry: add a function for fetching a tdb record for a given keystringMichael Adam1-0/+12
regdb_fetch_key_internal() Michael (This used to be commit 97bed9a23608248f1a590c99fe40564d2fbfa3cc)
2008-04-30registry: combine talloc_strdup() and normalize_reg_path() in ↵Michael Adam1-7/+1
regdb_fetch_keys(). the talloc_strdup() call is just and extra allocation here. Michael (This used to be commit 217233349b2d98d2506fcca47858373150e89924)
2008-04-30registry: use normalize_reg_path() in regdb_fetch_keys()Michael Adam1-2/+1
instead of handcrafting normalization. Michael (This used to be commit 1e4d2310d077c4d18470fd76f5ff9c010aadd3f0)
2008-04-30registry: use dbwrap_fetch_bystring() in regdb_fetch_values().Michael Adam1-5/+1
Michael (This used to be commit 569f9844e9d35324cf9a3a3094cd9791918a1441)
2008-04-30registry: use dbwrap_fetch_bystring() in regdb_fetch_keys().Michael Adam1-5/+1
instead of using regdb->fetch and constructing tdb data from the registry key string by hand. Michael (This used to be commit 87a58140f0073dfb5b18fb43655b255aebafbd02)
2008-04-13registry: honour the WERROR that regsubkey_ctr_addkey gives in regdb_fetch_keys.Michael Adam1-1/+7
Michael (This used to be commit 7dd7471da7eca2671b4aa62e8790973e3ff14177)
2008-04-13registry: change init_registry_key() and init_registry_data() to return WERRMichael Adam1-17/+35
Michael (This used to be commit e0718f04a7392695eed6cd1bf888d3af1d5d6177)
2008-04-13registry: change regdb_init() to return WERROR instead of bool.Michael Adam1-5/+7
Michael (This used to be commit c312852abce72bc167abee8b29fc699c4a643ca7)
2008-04-01Convert dbwrap_trans_delete to NTSTATUSVolker Lendecke1-5/+4
Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit dead193f46c2b19955ab3e5ac5ba343694f4858a)
2008-04-01Convert dbwrap_trans_store to NTSTATUSVolker Lendecke1-11/+16
Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit 5f4de856af1abe63b13059bbe1615cb5877770d0)
2008-04-01regdb: let regdb_fetch_keys() handle NULL and failure cases in the same way ↵Stefan Metzmacher1-1/+0
and return -1 metze (This used to be commit 983fd58805a429792fc8eaa816e2dd908643414e)
2008-04-01regdb: get the seqnum before the record, to not miss somethingStefan Metzmacher1-4/+4
metze (This used to be commit c214107bd9bbf9b17936757437ec211d7de3048e)
2008-04-01regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access"Stefan Metzmacher1-10/+12
This is the fixed version of commit 5c28c74aa06a82559f498373b3d6e9892d5c2cbe. metze (This used to be commit 924acd7f695d7514b1a4628468137cf632c8f1f0)
2008-03-30Revert "regdb: use dbwrap->fetch() instead of fetch_locked() for readonly ↵Michael Adam1-11/+10
access" This reverts commit 4e2be189e97f653b75bd88135a631ce0f42db267. 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 5c28c74aa06a82559f498373b3d6e9892d5c2cbe)
2008-03-27regdb: use == 0 (instead of != -1) as indicator for success of ↵Michael Adam1-4/+4
dbwrap_trans_[delete|store]() Michael (This used to be commit 7dcd0c1e539df9ff1768a9c878b6687b9e1bfeac)
2008-03-27regdb: use != 0 instead of == -1 check for transaction_[commit|cancel]Michael Adam1-6/+6
Michael (This used to be commit b6ceeaabae94b86fe79d6a60e497fb472ca23021)
2008-03-27regdb: use db_open_trans()Stefan Metzmacher1-5/+6
metze Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit a77b5b91dd439b5965fef17f2b2ff98fefd77dbb)
2008-03-27regdb: use regdb->transaction_start(regdb) != 0 consistentStefan Metzmacher1-3/+3
metze Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit 093c3bced96c934419af69cc065a240368027dcf)
2008-03-27regdb: use dbwrap->fetch() instead of fetch_locked() for readonly accessStefan Metzmacher1-10/+11
metze Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit 4e2be189e97f653b75bd88135a631ce0f42db267)
2008-03-27regdb: use dbwrap_trans_store_int32Stefan Metzmacher1-1/+1
metze Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit 9620696083473e3a98b46dd90b3b4aa287580940)
2008-03-20registry: use available string constant in debug statement.Michael Adam1-1/+1
Michael (This used to be commit 6bac03a2ec6351ab9db457d904b8925c828086e8)
2008-03-20registry: in regdb_init, not only complain about INFO/version, store it...Michael Adam1-0/+8
Michael (This used to be commit 27d67365ad03f0a0cd86011758a122a97513b82e)
2008-03-20registry: reformat regdb_init() slightly, breaking long lines.Michael Adam1-6/+9
Michael (This used to be commit 11da885f1e82e7a08fac2bc0ec1515694caa6340)
2008-03-20registry: untangle assignment and if-statement in regdb_init().Michael Adam1-2/+2
Michael (This used to be commit 504058df9706ee4e4c2e7fb1b1e41710bce2f87d)