Bug 308171
| Summary: | rpm does check for available space when a filesystem has 0 blocks free | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Patrick Bergamin <patrick.bergamin> |
| Component: | rpm | Assignee: | Panu Matilainen <pmatilai> |
| Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | low | Docs Contact: | |
| Priority: | low | ||
| Version: | 5 | CC: | pnasrat |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | 4.4.2.2-2.fc7 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2007-10-24 07:14:09 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Heh, that bug must've been there since forever. Fixed upstream and will find it's way to F7 and 8 in not too faraway future, WONTFIX for FC5 which is EOL. Nice catch and thanks for the patch! rpm-4.4.2.2-2.fc7 has been pushed to the Fedora 7 testing repository. If problems still persist, please make note of it in this bug report. If you want to test the update, you can install it with su -c 'yum --enablerepo=updates-testing update rpm' rpm-4.4.2.2-2.fc7 has been pushed to the Fedora 7 stable repository. If problems still persist, please make note of it in this bug report. |
Description of problem: When installing a rpm that requires space on a filesystem with 0 blocks free, rpm will not detect that there is insufficient space on the filesystem. Version-Release number of selected component (if applicable): The problem was discovered with version rpm-4.4.2-15.2. I looked at a newer version of the source (rpm-4.4.2-46). The newer version still appears to have the same problem. How reproducible: 100% Steps to Reproduce: 1. copy an rpm to test machine 2. fill up filesystem that the rpm needs (ex. cat /dev/zero >> /usr/local/foo) ensure there are 0 blocks free (df /usr/local) 3. attempt to install the rpm rpm -i <rpm-file> Actual results: % rpm -i foo.i386.rpm error: unpacking of archive failed on file /usr/local/foo.txt;46fc1caa: cpio: write failed - No space left on device Expected results: [root@secfi tmp]# rpm -i foo.i386.rpm installing package foo needs XXXMB on the /usr/local filesystem Additional info: The problem appears to be with the function rpmtsCheckDSIProblems() in lib/rpmts.c. Here is a suggested diff: --- a/rpm-4.4.2/lib/rpmts.c 2007-09-26 16:11:00.000000000 -0600 +++ b/rpm-4.4.2/lib/rpmts.c 2007-09-26 16:12:14.000000000 -0600 @@ -1354,14 +1354,14 @@ ps = rpmtsProblems(ts); for (i = 0; i < ts->filesystemCount; i++, dsi++) { - if (dsi->bavail > 0 && adj_fs_blocks(dsi->bneeded) > dsi->bavail) { + if (dsi->bavail >= 0 && adj_fs_blocks(dsi->bneeded) > dsi->bavail) { rpmpsAppend(ps, RPMPROB_DISKSPACE, rpmteNEVR(te), rpmteKey(te), ts->filesystems[i], NULL, NULL, (adj_fs_blocks(dsi->bneeded) - dsi->bavail) * dsi->bsize); } - if (dsi->iavail > 0 && adj_fs_blocks(dsi->ineeded) > dsi->iavail) { + if (dsi->iavail >= 0 && adj_fs_blocks(dsi->ineeded) > dsi->iavail) { rpmpsAppend(ps, RPMPROB_DISKNODES, rpmteNEVR(te), rpmteKey(te), ts->filesystems[i], NULL, NULL,