RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ poptALL.c rpmts.c rpm/rpmdb/ header.c...

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 19 Aug 2007 - 23:12:23 CEST
Message-Id: <20070819211223.B490F348458@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   19-Aug-2007 23:12:23
  Branch: HEAD                             Handle: 2007081922122201

  Modified files:
    rpm                     CHANGES
    rpm/lib                 poptALL.c rpmts.c
    rpm/rpmdb               header.c header_internal.h librpmdb.vers rpmdb.h

  Log:
    - enable Header performance metrics, tied to --stats.

  Summary:
    Revision    Changes     Path
    1.1593      +1  -0      rpm/CHANGES
    2.43        +6  -0      rpm/lib/poptALL.c
    2.85        +10 -0      rpm/lib/rpmts.c
    1.62        +53 -5      rpm/rpmdb/header.c
    1.17        +2  -2      rpm/rpmdb/header_internal.h
    1.13        +3  -1      rpm/rpmdb/librpmdb.vers
    1.64        +1  -1      rpm/rpmdb/rpmdb.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1592 -r1.1593 CHANGES
  --- rpm/CHANGES	19 Aug 2007 19:45:46 -0000	1.1592
  +++ rpm/CHANGES	19 Aug 2007 21:12:22 -0000	1.1593
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: enable Header performance metrics, tied to --stats.
       - jbj: add Header performance metrics, disabled for now.
       - jbj: eliminate headerNVR, use headerNEVRA instead.
       - jbj: eliminate the rpmrbFoo, use rpmcliInstallFoo instead.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/poptALL.c
  ============================================================================
  $ cvs diff -u -r2.42 -r2.43 poptALL.c
  --- rpm/lib/poptALL.c	17 Aug 2007 16:04:50 -0000	2.42
  +++ rpm/lib/poptALL.c	19 Aug 2007 21:12:23 -0000	2.43
  @@ -119,6 +119,9 @@
   extern int _rpmts_stats;
   
   /*@unchecked@*/
  +extern int _hdr_stats;
  +
  +/*@unchecked@*/
   extern int _tar_debug;
   
   /*@unchecked@*/
  @@ -628,6 +631,9 @@
   	rpmIncreaseVerbosity();
       }
   
  +    /* Initialize header stat collection. */
  +    _hdr_stats = _rpmts_stats;
  +
       return optCon;
   }
   /*@=globstate@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmts.c
  ============================================================================
  $ cvs diff -u -r2.84 -r2.85 rpmts.c
  --- rpm/lib/rpmts.c	1 Aug 2007 17:58:35 -0000	2.84
  +++ rpm/lib/rpmts.c	19 Aug 2007 21:12:23 -0000	2.85
  @@ -740,8 +740,16 @@
   	/*@globals fileSystem, internalState @*/
   	/*@modifies fileSystem, internalState @*/
   {
  +    extern rpmop _hdr_loadops;
  +    extern rpmop _hdr_getops;
  +
       (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_TOTAL), 0);
   
  +    if (_hdr_loadops)
  +	rpmswAdd(rpmtsOp(ts, RPMTS_OP_HDRLOAD), _hdr_loadops);
  +    if (_hdr_getops)
  +	rpmswAdd(rpmtsOp(ts, RPMTS_OP_HDRGET), _hdr_getops);
  +
       rpmtsPrintStat("total:       ", rpmtsOp(ts, RPMTS_OP_TOTAL));
       rpmtsPrintStat("check:       ", rpmtsOp(ts, RPMTS_OP_CHECK));
       rpmtsPrintStat("order:       ", rpmtsOp(ts, RPMTS_OP_ORDER));
  @@ -760,6 +768,8 @@
       rpmtsPrintStat("dbput:       ", rpmtsOp(ts, RPMTS_OP_DBPUT));
       rpmtsPrintStat("dbdel:       ", rpmtsOp(ts, RPMTS_OP_DBDEL));
       rpmtsPrintStat("readhdr:     ", rpmtsOp(ts, RPMTS_OP_READHDR));
  +    rpmtsPrintStat("hdrload:     ", rpmtsOp(ts, RPMTS_OP_HDRLOAD));
  +    rpmtsPrintStat("hdrget:      ", rpmtsOp(ts, RPMTS_OP_HDRGET));
   }
   
   rpmts rpmtsFree(rpmts ts)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.61 -r1.62 header.c
  --- rpm/rpmdb/header.c	19 Aug 2007 19:45:47 -0000	1.61
  +++ rpm/rpmdb/header.c	19 Aug 2007 21:12:23 -0000	1.62
  @@ -137,7 +137,15 @@
    * Global header stats enabler.
    */
   /*@unchecked@*/
  -int _hdr_stats;
  +int _hdr_stats = 0;
  +/*@unchecked@*/
  +static struct rpmop_s hdr_loadops;
  +/*@unchecked@*/
  +rpmop _hdr_loadops = &hdr_loadops;
  +/*@unchecked@*/
  +static struct rpmop_s hdr_getops;
  +/*@unchecked@*/
  +rpmop _hdr_getops = &hdr_getops;
   
   /** \ingroup header
    * Return header stats accumulator structure.
  @@ -152,8 +160,8 @@
       rpmop op = NULL;
       if (_hdr_stats)
       switch (opx) {
  -    case 18:	op = &h->hops_load;	break;	/* RPMTS_OP_HDRLOAD */
  -    case 19:	op = &h->hops_get;	break;	/* RPMTS_OP_HDRGET */
  +    case 18:	op = &h->h_loadops;	break;	/* RPMTS_OP_HDRLOAD */
  +    case 19:	op = &h->h_getops;	break;	/* RPMTS_OP_HDRGET */
       }
       return op;
   }
  @@ -234,6 +242,13 @@
       }
       h->origin = _free(h->origin);
   
  +    if (_hdr_stats) {
  +	if (_hdr_loadops)	/* RPMTS_OP_HDRLOAD */
  +	    (void) rpmswAdd(_hdr_loadops, headerGetStats(h, 18));
  +	if (_hdr_getops)	/* RPMTS_OP_HDRGET */
  +	    (void) rpmswAdd(_hdr_getops, headerGetStats(h, 19));
  +    }
  +
       /*@-refcounttrans@*/ h = _free(h); /*@=refcounttrans@*/
       return h;
       /*@=usereleased@*/
  @@ -646,6 +661,7 @@
   	/*@requires maxSet(lengthPtr) >= 0 @*/
   	/*@ensures maxRead(result) == (*lengthPtr) @*/
   {
  +    void * sw;
       int_32 * ei = NULL;
       entryInfo pe;
       char * dataStart;
  @@ -661,6 +677,9 @@
       int driplen, ndrips;
       int legacy = 0;
   
  +    if ((sw = headerGetStats(h, 18)) != NULL)	/* RPMTS_OP_HDRLOAD */
  +	(void) rpmswEnter(sw, 0);
  +
       /* Sort entries by (offset,tag). */
       headerUnsort(h);
   
  @@ -909,9 +928,12 @@
       h->flags &= ~HEADERFLAG_SORTED;
       headerSort(h);
   
  +    if (sw != NULL)	(void) rpmswExit(sw, len);
  +
       return (void *) ei;
   
   errxit:
  +    if (sw != NULL)	(void) rpmswExit(sw, len);
       /*@-usereleased@*/
       ei = _free(ei);
       /*@=usereleased@*/
  @@ -1041,6 +1063,7 @@
   Header headerLoad(/*@kept@*/ void * uh)
   	/*@modifies uh @*/
   {
  +    void * sw;
       int_32 * ei = (int_32 *) uh;
       int_32 il = ntohl(ei[0]);		/* index length */
       int_32 dl = ntohl(ei[1]);		/* data length */
  @@ -1069,6 +1092,8 @@
       dataEnd = dataStart + dl;
   
       h = xcalloc(1, sizeof(*h));
  +    if ((sw = headerGetStats(h, 18)) != NULL)	/* RPMTS_OP_HDRLOAD */
  +	(void) rpmswEnter(sw, 0);
       {	unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
   	(void) memcpy(h->magic, hmagic, sizeof(h->magic));
       }
  @@ -1205,6 +1230,9 @@
       h->flags &= ~HEADERFLAG_SORTED;
       headerSort(h);
   
  +    if (sw != NULL)
  +	(void) rpmswExit(sw, pvlen);
  +
       /*@-globstate -observertrans @*/
       return h;
       /*@=globstate =observertrans @*/
  @@ -1930,12 +1958,16 @@
   	/*@modifies *type, *p, *c @*/
   	/*@requires maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 0 @*/
   {
  +    void * sw;
       const char * name = tagName(tag);
       headerSprintfExtension exts = (headerSprintfExtension)headerCompoundFormats;
       headerSprintfExtension ext;
       int extNum;
       int rc;
   
  +    if ((sw = headerGetStats(h, 19)) != NULL)	/* RPMTS_OP_HDRGET */
  +	(void) rpmswEnter(sw, 0);
  +
       /* Search extensions for specific tag override. */
       for (ext = exts, extNum = 0; ext != NULL && ext->type != HEADER_EXT_LAST;
   	ext = (ext->type == HEADER_EXT_MORE ? ext->u.more : ext+1), extNum++)
  @@ -1954,6 +1986,8 @@
   
       /* XXX Returned data is always allocated. */
   
  +    if (sw != NULL)	(void) rpmswExit(sw, 0);
  +
       return rc;
   }
   
  @@ -1978,7 +2012,14 @@
   	/*@modifies *type, *p, *c @*/
   	/*@requires maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 0 @*/
   {
  -    return intGetEntry(h, tag, type, (hPTR_t *)p, c, 0);
  +    void * sw;
  +    int rc;
  +
  +    if ((sw = headerGetStats(h, 19)) != NULL)	/* RPMTS_OP_HDRGET */
  +	(void) rpmswEnter(sw, 0);
  +    rc = intGetEntry(h, tag, type, (hPTR_t *)p, c, 0);
  +    if (sw != NULL)	(void) rpmswExit(sw, 0);
  +    return rc;
   }
   
   /** \ingroup header
  @@ -2001,7 +2042,14 @@
   	/*@modifies *type, *p, *c @*/
   	/*@requires maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 0 @*/
   {
  -    return intGetEntry(h, tag, type, p, c, 1);
  +    void * sw;
  +    int rc;
  +
  +    if ((sw = headerGetStats(h, 19)) != NULL)	/* RPMTS_OP_HDRGET */
  +	(void) rpmswEnter(sw, 0);
  +    rc = intGetEntry(h, tag, type, p, c, 1);
  +    if (sw != NULL)	(void) rpmswExit(sw, 0);
  +    return rc;
   }
   
   int headerGetRawEntry(Header h, int_32 tag, int_32 * type, void * p, int_32 * c)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.16 -r1.17 header_internal.h
  --- rpm/rpmdb/header_internal.h	19 Aug 2007 19:45:47 -0000	1.16
  +++ rpm/rpmdb/header_internal.h	19 Aug 2007 21:12:23 -0000	1.17
  @@ -61,8 +61,8 @@
   /*@only@*/ /*@null@*/
       const char * origin;	/*!< Header origin (e.g. path or URL). */
       int_32 instance;		/*!< Header instance (if from rpmdb). */
  -    struct rpmop_s hops_load;
  -    struct rpmop_s hops_get;
  +    struct rpmop_s h_loadops;
  +    struct rpmop_s h_getops;
   /*@owned@*/
       indexEntry index;		/*!< Array of tags. */
       int indexUsed;		/*!< Current size of tag array. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.12 -r1.13 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers	19 Aug 2007 19:45:47 -0000	1.12
  +++ rpm/rpmdb/librpmdb.vers	19 Aug 2007 21:12:23 -0000	1.13
  @@ -23,6 +23,8 @@
       fpLookup;
       fpLookupList;
       _hdr_debug;
  +    _hdr_getops;
  +    _hdr_loadops;
       _hdr_stats;
       hdrVec;
       headerCompoundFormats;
  @@ -35,7 +37,6 @@
       headerNEVRA;
       hGetColor;
       _init;
  -    rpm_mergesort;
       _newmagic;
       prDbiOpenFlags;
       rdbOptions;
  @@ -71,6 +72,7 @@
       rpmdbSync;
       rpmdbVerify;
       rpmdbVerifyAllDBI;
  +    rpm_mergesort;
       rpmTagTable;
       rpmTagTableSize;
       rpmTags;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.h
  ============================================================================
  $ cvs diff -u -r1.63 -r1.64 rpmdb.h
  --- rpm/rpmdb/rpmdb.h	2 Aug 2007 17:15:42 -0000	1.63
  +++ rpm/rpmdb/rpmdb.h	19 Aug 2007 21:12:23 -0000	1.64
  @@ -60,7 +60,7 @@
   typedef /*@abstract@*/ struct _dbiIndex * dbiIndex;
   
   #if defined(_RPMDB_INTERNAL)
  -#include "rpmsw.h"
  +#include <rpmsw.h>
   #if !defined(SWIG)	/* XXX inline dbiFoo() need */
   /** \ingroup dbi
    * A single item from an index database (i.e. the "data returned").
  @@ .
Received on Sun Aug 19 23:12:23 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.