RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   24-May-2009 22:50:54
  Branch: HEAD                             Handle: 2009052420505301

  Modified files:
    rpm                     CHANGES
    rpm/lib                 poptALL.c
    rpm/rpmdb               dbconfig.c

  Log:
    - yarn: convert dbiIndex to usage mutex with refcounts.

  Summary:
    Revision    Changes     Path
    1.2994      +1  -0      rpm/CHANGES
    2.135       +7  -0      rpm/lib/poptALL.c
    1.57        +38 -6      rpm/rpmdb/dbconfig.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2993 -r1.2994 CHANGES
  --- rpm/CHANGES       24 May 2009 19:45:25 -0000      1.2993
  +++ rpm/CHANGES       24 May 2009 20:50:53 -0000      1.2994
  @@ -1,5 +1,6 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: yarn: convert dbiIndex to usage mutex with refcounts.
       - jbj: yarn: convert Package to usage mutex with refcounts.
       - jbj: yarn: convert Spec to usage mutex with refcounts.
       - jbj: yarn: convert DIGEST_CTX to usage mutex with refcounts.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/poptALL.c
  ============================================================================
  $ cvs diff -u -r2.134 -r2.135 poptALL.c
  --- rpm/lib/poptALL.c 20 May 2009 17:50:56 -0000      2.134
  +++ rpm/lib/poptALL.c 24 May 2009 20:50:54 -0000      2.135
  @@ -56,6 +56,9 @@
   extern int _rpmds_nopromote;
   
   /*...@unchecked@*/
  +extern int _dbi_debug;
  +
  +/*...@unchecked@*/
   extern int _fps_debug;
   
   /*...@unchecked@*/
  @@ -455,6 +458,8 @@
        N_("Use threads for Package State Machine"), NULL},
    { "rpmdbdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmdb_debug, 
-1,
        N_("Debug rpmdb DataBase"), NULL},
  + { "rpmdbidebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_dbi_debug, 
-1,
  +     N_("Debug dbiIndex DataBase Index"), NULL},
    { "rpmdsdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmds_debug, 
-1,
        N_("Debug rpmds Dependency Set"), NULL},
    { "rpmfcdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmfc_debug, 
-1,
  @@ -497,6 +502,7 @@
       extern rpmioPool _rpmrubyPool;
       extern rpmioPool _headerPool;
       extern rpmioPool _rpmmiPool;
  +    extern rpmioPool _dbiPool;
       extern rpmioPool _rpmdbPool;
       extern rpmioPool _rpmwfPool;
       extern const char * evr_tuple_order;
  @@ -536,6 +542,7 @@
   
       _rpmwfPool = rpmioFreePool(_rpmwfPool);
       _rpmdbPool = rpmioFreePool(_rpmdbPool);
  +    _dbiPool = rpmioFreePool(_dbiPool);
       _headerPool = rpmioFreePool(_headerPool);
   /*...@=onlyunqglobaltrans@*/
   /*...@=mods@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/dbconfig.c
  ============================================================================
  $ cvs diff -u -r1.56 -r1.57 dbconfig.c
  --- rpm/rpmdb/dbconfig.c      11 Dec 2008 23:31:56 -0000      1.56
  +++ rpm/rpmdb/dbconfig.c      24 May 2009 20:50:54 -0000      1.57
  @@ -4,6 +4,7 @@
   
   #include "system.h"
   
  +#include <rpmio.h>
   #include <popt.h>
   #include <rpmlog.h>
   #include <rpmmacro.h>
  @@ -17,6 +18,9 @@
   /*...@access dbiin...@*/
   /*...@access dbiindex...@*/
   
  +/*...@unchecked@*/
  +int _dbi_debug;
  +
   #if defined(WITH_DB) || defined(WITH_SQLITE)
   
   /*...@-exportlocal -exportheader...@*/
  @@ -634,6 +638,15 @@
   
   dbiIndex db3Free(dbiIndex dbi)
   {
  +    if (dbi != NULL)
  +     (void)rpmioFreePoolItem((rpmioItem)dbi, __FUNCTION__, __FILE__, 
__LINE__);
  +    return NULL;
  +}
  +
  +static void dbiFini(void * _dbi)
  +     /*...@modifies _dbi @*/
  +{
  +    dbiIndex dbi = _dbi;
       if (dbi) {
        dbi->dbi_root = _free(dbi->dbi_root);
        dbi->dbi_home = _free(dbi->dbi_home);
  @@ -644,9 +657,22 @@
        dbi->dbi_errpfx = _free(dbi->dbi_errpfx);
        dbi->dbi_re_source = _free(dbi->dbi_re_source);
        dbi->dbi_stats = _free(dbi->dbi_stats);
  -     dbi = _free(dbi);
       }
  -    return dbi;
  +}
  +
  +/*...@unchecked@*/ /*...@only@*/ /*...@null@*/
  +rpmioPool _dbiPool;
  +
  +static dbiIndex dbiGetPool(rpmioPool pool)
  +{
  +    dbiIndex dbi;
  +
  +    if (_dbiPool == NULL) {
  +     _dbiPool = rpmioNewPool("dbi", sizeof(*dbi), -1, _dbi_debug,
  +                     NULL, NULL, dbiFini);
  +     pool = _dbiPool;
  +    }
  +    return (dbiIndex) rpmioGetPool(pool, sizeof(*dbi));
   }
   
   /*...@observer@*/ /*...@unchecked@*/
  @@ -655,7 +681,7 @@
   
   dbiIndex db3New(rpmdb rpmdb, rpmTag tag)
   {
  -    dbiIndex dbi = xcalloc(1, sizeof(*dbi));
  +    dbiIndex dbi = dbiGetPool(_dbiPool);
       char * dbOpts = rpmExpand("%{_dbi_config_", tagName(tag), "}", NULL);
   
       if (!(dbOpts && *dbOpts && *dbOpts != '%')) {
  @@ -785,9 +811,15 @@
   
       dbOpts = _free(dbOpts);
   
  -    /*...@-assignexpose@*/
  +/*...@-assignexpose@*/
  +    {        void *use =  dbi->_item.use;
  +        void *pool = dbi->_item.pool;
   /*...@i@*/   *dbi = db3dbi;  /* structure assignment */
  -    /*...@=assignexpose@*/
  +        dbi->_item.use = use;
  +        dbi->_item.pool = pool;
  +    }
  +/*...@=assignexpose@*/
  +
       memset(&db3dbi, 0, sizeof(db3dbi));
   
       if (!(dbi->dbi_perms & 0600))
  @@ -828,7 +860,7 @@
   #endif
   
       /*...@-globstate@*/ /* FIX: *(rdbOptions->arg) reachable */
  -    return dbi;
  +    return (dbiIndex)rpmioLinkPoolItem((rpmioItem)dbi, __FUNCTION__, 
__FILE__, __LINE__);
       /*...@=globstate@*/
   }
   
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to