From 0b22f8b99c0291f2e45166124358844127fb8edf Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 25 Feb 2009 09:53:16 +0100 Subject: s3:registry: hash the list of subkeys in the regsubkey_ctr This removes many loops over all the arrays (from regsubkey_ctr_key_exists) and thus reduces "net conf drop" from 1m55 to 48seconds and "net conf import" from 1m55 to 58 seconds for 2000 shares on my box. Michael --- source3/registry/reg_api.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source3/registry/reg_api.c') diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c index 66296f0ddd..7185b1a312 100644 --- a/source3/registry/reg_api.c +++ b/source3/registry/reg_api.c @@ -552,7 +552,6 @@ WERROR reg_deletekey(struct registry_key *parent, const char *path) WERROR err; TALLOC_CTX *mem_ctx; char *name, *end; - int num_subkeys; struct registry_key *tmp_key, *key; if (!(mem_ctx = talloc_init("reg_createkey"))) return WERR_NOMEM; @@ -598,10 +597,8 @@ WERROR reg_deletekey(struct registry_key *parent, const char *path) goto error; } - num_subkeys = regsubkey_ctr_numkeys(parent->subkeys); - - if (regsubkey_ctr_delkey(parent->subkeys, name) == num_subkeys) { - err = WERR_BADFILE; + err = regsubkey_ctr_delkey(parent->subkeys, name); + if (!W_ERROR_IS_OK(err)) { goto error; } @@ -1151,6 +1148,9 @@ static WERROR reg_deletekey_recursive_trans(TALLOC_CTX *ctx, werr = reg_deletekey_recursive_internal(ctx, parent, path, del_key); if (!W_ERROR_IS_OK(werr)) { + DEBUG(1, (__location__ " failed to delete key '%s' from key " + "'%s': %s\n", path, parent->key->name, + win_errstr(werr))); werr = regdb_transaction_cancel(); if (!W_ERROR_IS_OK(werr)) { DEBUG(0, ("reg_deletekey_recursive_trans: " -- cgit