Reduce the number of DN normalization
. Replacing SLAPI_TARGET_DN with SLAPI_TARGET_SDN (also its macros, e.g., SLAPI_SEARCH_TARGET_SDN and SLAPI_ADD_TARGET_SDN). . Replacing the type of SLAPI_MODRDN_NEWSUPERIOR from (char *) to (Slapi_DN *), as well. . Replacing slapi_dn_normalization_ext call with generating Slapi_DN APIs (e.g., slapi_sdn_new_dn_...) as much as possible and stash it in pblock using SLAPI_TARGET_SDN. . When a normalized DN string is needed, get it using slapi_sdn_get_[n]dn from the stashed Slapi_DN. . Introduced a new field to Slapi_DN. "udn" for the original DN; "dn" is a normalized DN; "ndn" is a case- ignored normalized DN. Taking advantage of the knowledge of the stage of the DN, call the most efficient DN creating API (e.g., slapi_sdn_new_dn_... vs. slapi_sdn_new_normdn_... vs. slapi_sdn_new_ndn_...)
Others . Replacing inefficient array assignment with memset (acl.c) and memcpy (idl_common.c). . Fixing invalid memory access in LASDnsBuild (lib/libaccess/lasdns.cpp). . Even if Slapi_counter is disabled, the server is allowed to start (back-ldbm/cache.c). . Fixing compiler warnings.
Sorry, it's huge...
On 10/10/2011 10:08 AM, Noriko Hosoi wrote:
Reduce the number of DN normalization
. Replacing SLAPI_TARGET_DN with SLAPI_TARGET_SDN (also its macros, e.g., SLAPI_SEARCH_TARGET_SDN and SLAPI_ADD_TARGET_SDN).
I haven't reviewed the entire patch yet, but I am concerned about changing the APIs defined in slapi-plugin.h (such as the removal of SLAPI_TARGET_DN). This will require other plug-ins outside of the 389 source code to be ported to use this new API. This porting may be necessary in some places, but we should also try to be as backwards compatible as possible.
I know that the SLAPI plug-ins used by FreeIPA use SLAPI_TARGET_DN, so they will need porting work. We will need to coordinate any API changes with them to ensure that we don't break their plug-ins.
. Replacing the type of SLAPI_MODRDN_NEWSUPERIOR from (char *) to (Slapi_DN *), as well. . Replacing slapi_dn_normalization_ext call with generating Slapi_DN APIs (e.g., slapi_sdn_new_dn_...) as much as possible and stash it in pblock using SLAPI_TARGET_SDN. . When a normalized DN string is needed, get it using slapi_sdn_get_[n]dn from the stashed Slapi_DN. . Introduced a new field to Slapi_DN. "udn" for the original DN; "dn" is a normalized DN; "ndn" is a case- ignored normalized DN. Taking advantage of the knowledge of the stage of the DN, call the most efficient DN creating API (e.g., slapi_sdn_new_dn_... vs. slapi_sdn_new_normdn_... vs. slapi_sdn_new_ndn_...)
Others . Replacing inefficient array assignment with memset (acl.c) and memcpy (idl_common.c). . Fixing invalid memory access in LASDnsBuild (lib/libaccess/lasdns.cpp). . Even if Slapi_counter is disabled, the server is allowed to start (back-ldbm/cache.c). . Fixing compiler warnings.
Sorry, it's huge...
-- 389-devel mailing list 389-devel@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/389-devel
Thanks to Nathan for his reviews and suggestions. Here's the revised patch... ------------------------------------------------------------------------ Reduce the number of DN normalization
. Adding SLAPI_TARGET_SDN as well as its macros, SLAPI_SEARCH_TARGET_ SDN SLAPI_ADD_TARGET_SDN, SLAPI_MODIFY_TARGET_SDN, etc. . Adding SLAPI_MODRDN_NEWSUPERIOR_SDN. . SLAPI_TARGET_DN and SLAPI_MODRDN_NEWSUPERIOR are kept for the back- ward compatibility. But they are marked as deprecated. They are pointing dn in SLAPI_TARGET_SDN and SLAPI_MODRDN_NEWSUPERIOR_SDN, respectively. . slapi_pblock_set(.., SLAPI_TARGET_DN/SLAPI_MODRDN_NEWSUPERIOR, dn) takes dn string and reset Slapi_DN to SLAPI_TARGET_SDN/SLAPI_MODRDN_ NEWSUPERIOR_SDN. . slapi_pblock_get(.., SLAPI_TARGET_DN/SLAPI_MODRDN_NEWSUPERIOR, &dn) retrieves dn out of SLAPI_TARGET_SDN/SLAPI_MODRDN_NEWSUPERIOR_SDN. . Replacing slapi_dn_normalization_ext call with generating Slapi_DN APIs (e.g., slapi_sdn_new_dn_...) as much as possible and stash it in pblock using SLAPI_TARGET_SDN. . When a normalized DN string is needed, get it using slapi_sdn_get_[n]dn from the stashed Slapi_DN. . Introduced a new field to Slapi_DN. "udn" for the original DN; "dn" is a normalized DN; "ndn" is a case- ignored normalized DN. Taking advantage of the knowledge of the stage of the DN, call the most efficient DN creating API (e.g., slapi_sdn_new_dn_... vs. slapi_sdn_new_normdn_... vs. slapi_sdn_new_ndn_...)
Others . Replacing inefficient array assignment with memset (acl.c) and memcpy (idl_common.c). . Fixing invalid memory access in LASDnsBuild (lib/libaccess/lasdns.cpp). . Fixing compiler warnings.
389-devel@lists.fedoraproject.org