I've disabled "syscall ACID" and "scriptlet ACID" logging for now.
That should reduce your log file sizes dramatically by not saving
file content within the log.
That leaves "database ACID", and the second largets "Bloat!" is
header blobs in the primary Packages store. The fix there will
be another rpmdb schema change that I'm not yet prepared to undertake.
With luck, I 'll be there mebbe 2-3 weeks from now.
Meanwhile, please look carefully for false failures while doing installations/erasures.
I just saw this:
[jbj@fedora10 wdj]$ sudo rpm -evv time
...
error: Failed dependencies:
systemtap-runtime = 1.0-2.fc11 is needed by (installed) systemtap-1.0-2.fc11.i586
No way are time and systemtap related through dependencies.
The root cause has to do with primary retrieval keys getting mixed up somehow.
But note that I'm actively developing RPM and flipping between
multiple versions of RPM and that there is an endian switch
in the primary retrieval keys.
So "mixed up" is likelier from some brain fart of mine using rpm than coding
errors, too much of the rpmdb is "working" on largely common code paths.
Any "mixed up" keys will be easily detectable as I get the development
under a unit test harness. I've been headed towards rpmdb unit tests
for 2-3 weeks but the trash hauling keeps getting in the way.
hth
73 de Jeff
On Dec 1, 2009, at 12:05 PM, Jeff Johnson wrote:
> 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: 01-Dec-2009 18:05:09
> Branch: HEAD Handle: 2009120117050801
>
> Modified files:
> rpm CHANGES
> rpm/rpmdb rpmlio.c
>
> Log:
> - rpmlio: add "opt-in" enablers for syscall/scriptlet logging.
>
> Summary:
> Revision Changes Path
> 1.3170 +1 -0 rpm/CHANGES
> 1.2 +21 -18 rpm/rpmdb/rpmlio.c
> ____________________________________________________________________________
>
> patch -p0 <<'@@ .'
> Index: rpm/CHANGES
> ============================================================================
> $ cvs diff -u -r1.3169 -r1.3170 CHANGES
> --- rpm/CHANGES 1 Dec 2009 16:48:32 -0000 1.3169
> +++ rpm/CHANGES 1 Dec 2009 17:05:08 -0000 1.3170
> @@ -1,5 +1,6 @@
>
> 5.2b1 -> 5.3a1
> + - jbj: rpmlio: add "opt-in" enablers for syscall/scriptlet logging.
> - jbj: rpmlio: add --rpmliodebug spewage valve.
> - jbj: rpmlio: add syscall/scriplet logging to -lrpmdb API for rework.
> - jbj: revert the change for autoconf-2.65, breaks w autoconf-2.63.
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/rpmdb/rpmlio.c
> ============================================================================
> $ cvs diff -u -r1.1 -r1.2 rpmlio.c
> --- rpm/rpmdb/rpmlio.c 1 Dec 2009 16:48:33 -0000 1.1
> +++ rpm/rpmdb/rpmlio.c 1 Dec 2009 17:05:09 -0000 1.2
> @@ -17,6 +17,9 @@
>
> int _rpmlio_debug = 0;
>
> +static int _enable_syscall_logging = 0;
> +static int _enable_scriptlet_logging = 0;
> +
> int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode,
> const uint8_t * b, size_t blen,
> const uint8_t * d, size_t dlen, uint32_t dalgo)
> @@ -30,7 +33,7 @@
> DBT FNdbt = {0};
> DBT Bdbt = {0};
> DBT Ddbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> Bdbt.data = (void *)b;
> @@ -56,7 +59,7 @@
> DBT FNdbt = {0};
> DBT Bdbt = {0};
> DBT Ddbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> Bdbt.data = (void *)b;
> @@ -84,7 +87,7 @@
> DBT NNdbt = {0};
> DBT Bdbt = {0};
> DBT Ddbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> ONdbt.data = (void *)oldname;
> ONdbt.size = strlen(oldname) + 1; /* trailing NUL too */
> NNdbt.data = (void *)newname;
> @@ -108,7 +111,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT DNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> DNdbt.data = (void *)dn;
> DNdbt.size = strlen(dn) + 1; /* trailing NUL too */
> rc = logio_Mkdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
> @@ -126,7 +129,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT DNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> DNdbt.data = (void *)dn;
> DNdbt.size = strlen(dn) + 1; /* trailing NUL too */
> rc = logio_Rmdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
> @@ -145,7 +148,7 @@
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> DBT CONTEXTdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> if (context == NULL) context = ""; /* XXX prevent segfaults */
> @@ -166,7 +169,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> rc = logio_Chown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
> @@ -184,7 +187,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> rc = logio_Lchown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
> @@ -202,7 +205,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> rc = logio_Chmod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
> @@ -220,7 +223,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> rc = logio_Utime_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, actime, modtime);
> @@ -239,7 +242,7 @@
> DB_LSN _lsn = {0,0};
> DBT LNdbt = {0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> LNdbt.data = (void *)ln;
> LNdbt.size = strlen(ln) + 1; /* trailing NUL too */
> FNdbt.data = (void *)fn;
> @@ -260,7 +263,7 @@
> DB_LSN _lsn = {0,0};
> DBT LNdbt = {0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> LNdbt.data = (void *)ln;
> LNdbt.size = strlen(ln) + 1; /* trailing NUL too */
> FNdbt.data = (void *)fn;
> @@ -280,7 +283,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> rc = logio_Mknod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, dev);
> @@ -298,7 +301,7 @@
> DB_TXN * _txn = rpmdb->db_txn;
> DB_LSN _lsn = {0,0};
> DBT FNdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
> FNdbt.data = (void *)fn;
> FNdbt.size = strlen(fn) + 1; /* trailing NUL too */
> rc = logio_Mkfifo_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
> @@ -318,7 +321,7 @@
> DB_LSN _lsn = {0,0};
> DBT AVdbt = {0};
> DBT BODYdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
> AVdbt.data = (void *)cmd;
> AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
> BODYdbt.data = (void *)body;
> @@ -341,7 +344,7 @@
> DB_LSN _lsn = {0,0};
> DBT AVdbt = {0};
> DBT BODYdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
> AVdbt.data = (void *)cmd;
> AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
> BODYdbt.data = (void *)body;
> @@ -364,7 +367,7 @@
> DB_LSN _lsn = {0,0};
> DBT AVdbt = {0};
> DBT BODYdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
> AVdbt.data = (void *)cmd;
> AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
> BODYdbt.data = (void *)body;
> @@ -387,7 +390,7 @@
> DB_LSN _lsn = {0,0};
> DBT AVdbt = {0};
> DBT BODYdbt = {0};
> - if (!(dbenv && _txn)) return 0;
> + if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
> AVdbt.data = (void *)cmd;
> AVdbt.size = strlen(cmd) + 1; /* trailing NUL too */
> BODYdbt.data = (void *)body;
> @@ .
> ______________________________________________________________________
> RPM Package Manager http://rpm5.org
> CVS Sources Repository rpm-cvs@rpm5.org
Received on Tue Dec 1 18:20:59 2009