|
Panu Matilainen |
eb0cb8 |
commit 4e4aec28c544f2884cb76be37d508f376db5cb7c
|
|
Panu Matilainen |
eb0cb8 |
Author: Panu Matilainen <pmatilai@redhat.com>
|
|
Panu Matilainen |
eb0cb8 |
Date: Thu Feb 4 15:55:16 2010 +0200
|
|
Panu Matilainen |
eb0cb8 |
|
|
Panu Matilainen |
eb0cb8 |
Handle erased packages wrt disk-space problem reporting (RhBug:561160)
|
|
Panu Matilainen |
eb0cb8 |
- erased packages in the transaction cause space needs to shrink, which
|
|
Panu Matilainen |
eb0cb8 |
commit 2222e81e1cf74bbf78acb9969592ab06e2289929 failed to take into
|
|
Panu Matilainen |
eb0cb8 |
account, causing false disk space errors from unaffected packages
|
|
Panu Matilainen |
eb0cb8 |
- adjust obneeded and oineeded when the requirements shrink
|
|
Panu Matilainen |
eb0cb8 |
- new disk space problems can only occur when the requirements grow,
|
|
Panu Matilainen |
eb0cb8 |
change the pmtsCheckDSIProblems() check to reflect that (although not
|
|
Panu Matilainen |
eb0cb8 |
strictly necessary)
|
|
Panu Matilainen |
eb0cb8 |
|
|
Panu Matilainen |
eb0cb8 |
diff --git a/lib/transaction.c b/lib/transaction.c
|
|
Panu Matilainen |
eb0cb8 |
index d913258..7d12eeb 100644
|
|
Panu Matilainen |
eb0cb8 |
--- a/lib/transaction.c
|
|
Panu Matilainen |
eb0cb8 |
+++ b/lib/transaction.c
|
|
Panu Matilainen |
eb0cb8 |
@@ -219,6 +219,10 @@ static void rpmtsUpdateDSI(const rpmts ts, dev_t dev, const char *dirName,
|
|
Panu Matilainen |
eb0cb8 |
|
|
Panu Matilainen |
eb0cb8 |
if (fixupSize)
|
|
Panu Matilainen |
eb0cb8 |
dsi->bneeded -= BLOCK_ROUND(fixupSize, dsi->bsize);
|
|
Panu Matilainen |
eb0cb8 |
+
|
|
Panu Matilainen |
eb0cb8 |
+ /* adjust bookkeeping when requirements shrink */
|
|
Panu Matilainen |
eb0cb8 |
+ if (dsi->bneeded < dsi->obneeded) dsi->obneeded = dsi->bneeded;
|
|
Panu Matilainen |
eb0cb8 |
+ if (dsi->ineeded < dsi->oineeded) dsi->oineeded = dsi->ineeded;
|
|
Panu Matilainen |
eb0cb8 |
}
|
|
Panu Matilainen |
eb0cb8 |
|
|
Panu Matilainen |
eb0cb8 |
static void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
|
|
Panu Matilainen |
eb0cb8 |
@@ -238,7 +242,7 @@ static void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
|
|
Panu Matilainen |
eb0cb8 |
for (; dsi->bsize; dsi++) {
|
|
Panu Matilainen |
eb0cb8 |
|
|
Panu Matilainen |
eb0cb8 |
if (dsi->bavail >= 0 && adj_fs_blocks(dsi->bneeded) > dsi->bavail) {
|
|
Panu Matilainen |
eb0cb8 |
- if (dsi->bneeded != dsi->obneeded) {
|
|
Panu Matilainen |
eb0cb8 |
+ if (dsi->bneeded > dsi->obneeded) {
|
|
Panu Matilainen |
eb0cb8 |
rpmpsAppend(ps, RPMPROB_DISKSPACE,
|
|
Panu Matilainen |
eb0cb8 |
rpmteNEVRA(te), rpmteKey(te),
|
|
Panu Matilainen |
eb0cb8 |
dsi->mntPoint, NULL, NULL,
|
|
Panu Matilainen |
eb0cb8 |
@@ -248,7 +252,7 @@ static void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te)
|
|
Panu Matilainen |
eb0cb8 |
}
|
|
Panu Matilainen |
eb0cb8 |
|
|
Panu Matilainen |
eb0cb8 |
if (dsi->iavail >= 0 && adj_fs_blocks(dsi->ineeded) > dsi->iavail) {
|
|
Panu Matilainen |
eb0cb8 |
- if (dsi->ineeded != dsi->oineeded) {
|
|
Panu Matilainen |
eb0cb8 |
+ if (dsi->ineeded > dsi->oineeded) {
|
|
Panu Matilainen |
eb0cb8 |
rpmpsAppend(ps, RPMPROB_DISKNODES,
|
|
Panu Matilainen |
eb0cb8 |
rpmteNEVRA(te), rpmteKey(te),
|
|
Panu Matilainen |
eb0cb8 |
dsi->mntPoint, NULL, NULL,
|